private void checkPixels(
      Cursor<V> cur, RandomAccess<V> marker, RandomAccess<T> mask, long[][] strucElement) {
    V p = cur.get().copy();

    for (long[] e : strucElement) {

      for (int i = 0; i < e.length; i++) {
        marker.setPosition(cur.getIntPosition(i) + e[i], i);
        mask.setPosition(cur.getIntPosition(i) + e[i], i);
      }

      V q = marker.get().copy();
      T i = mask.get().copy();

      if (checkPixelAddToQueue(p, q, i)) {
        addToQueue(cur.getRandomAccess());
        return;
      }
    }
  }
  private V checkAroundCursor(
      Cursor<V> cur, RandomAccess<V> marker, RandomAccess<T> mask, long[][] strucElement) {
    V val = cur.get().copy();

    for (long[] e : strucElement) {

      for (int i = 0; i < e.length; i++) {
        marker.setPosition(cur.getIntPosition(i) + e[i], i);
      }

      val = morphOp(val.copy(), marker.get().copy());
    }

    mask.setPosition(cur.getRandomAccess());
    val = pointwiseOp(val, mask.get());

    return val;
  }