private byte filterPLO(int i, int i2, int i3) {
    int res = 0;
    if ( i > 0 && i2 > 0 && i2 < biHeight - 1) {
      int l = getIntVal(i - 1, i2 + 1, i3);
      int d = getIntVal(i, i2 - 1, i3);
      int ld = getIntVal(i - 1, i2, i3);
      if (ld >= l && ld >= d) {
        if (l > d) { res = d; } else { res = l; }
      } else if (ld <= l && ld <= d) {
        if (l > d) { res = l; } else { res = d; }
      } else {
        res = d + l - ld;
      }
    } else {
        res = filterPL(i, i2, i3);
    }
    return (byte)res;
  }