code: public static void process(GrayF32 orig, GrayF32 derivX, GrayF32 derivY) {
  		final float[] data = orig.data;
  		final float[] imgX = derivX.data;
  		final float[] imgY = derivY.data;
  
  		final int width = orig.getWidth();
  		final int height = orig.getHeight();
  		final int stride = orig.stride;
  
  		//CONCURRENT_BELOW BoofConcurrency.loopFor(1,height,y->{
  		for (int y = 1; y < height; y++) {
  			int indexX = derivX.startIndex + derivX.stride*y + 1;
  			int indexY = derivY.startIndex + derivY.stride*y + 1;
  			int indexSrc = orig.startIndex + orig.stride*y + 1;
  			final int endX = indexSrc + width - 1;
  
  			for (; indexSrc < endX; indexSrc++) {
  				float val = data[indexSrc];
  				imgX[indexX++] = (val - data[indexSrc - 1]);
  				imgY[indexY++] = (val - data[indexSrc - stride]);
  			}
  		}
  		//CONCURRENT_ABOVE });
  	}
docs: Computes the derivative along the x and y axes