docs: protected int computeGandE_border(KltFeature feature, float cx, float cy) {
  
  		computeSubImageBounds(feature, cx, cy);
  
  		ImageMiscOps.fill(currDesc, Float.NaN);
  		currDesc.subimage(dstX0, dstY0, dstX1, dstY1, subimage);
  		interpInput.setImage(image);
  		interpInput.region(srcX0, srcY0, subimage);
  
  		int total = 0;
  
  		Gxx = 0; Gyy = 0; Gxy = 0;
  		Ex = 0; Ey = 0;
  
  		for( int i = 0; i < lengthFeature; i++ ) {
  			float template = feature.desc.data[i];
  			float current = currDesc.data[i];
  
  			// if the description was outside of the image here skip it
  			if( Float.isNaN(template) || Float.isNaN(current))
  				continue;
  
  			// count total number of points inbounds
  			total++;
  
  			float dX = feature.derivX.data[i];
  			float dY = feature.derivY.data[i];
  
  			// compute the difference between the previous and the current image
  			float d = template - current;
  
  			Ex += d * dX;
  			Ey += d * dY;
  
  			Gxx += dX * dX;
  			Gyy += dY * dY;
  			Gxy += dX * dY;
  		}
  
  		return total;
  	}