/** * Compute SAD (Sum of Absolute Difference) error. * * @param leftX X-axis center left image * @param rightX X-axis center left image * @param centerY Y-axis center for both images * @return Fit score for both regions. */ protected double computeScoreRect( int leftX , int rightX , int centerY ) { double ret=0; for( int y = -radiusY; y <= radiusY; y++ ) { for( int x = -radiusX; x <= radiusX; x++ ) { double l = GeneralizedImageOps.get(imageLeft,leftX+x,centerY+y); double r = GeneralizedImageOps.get(imageRight,rightX+x,centerY+y); ret += Math.abs(l-r); } } return ret; } }
/** * Compute SAD (Sum of Absolute Difference) error. * * @param leftX X-axis center left image * @param rightX X-axis center left image * @param centerY Y-axis center for both images * @return Fit score for both regions. */ protected double computeScore( int leftX , int rightX , int centerY ) { double ret=0; for( int y = -radiusY; y <= radiusY; y++ ) { for( int x = -radiusX; x <= radiusX; x++ ) { double l = GeneralizedImageOps.get(imageLeft,leftX+x,centerY+y); double r = GeneralizedImageOps.get(imageRight,rightX+x,centerY+y); ret += Math.abs(l-r); } } return ret; } }
public static double get(ImageBase img, int x, int y , int band ) { if (img instanceof ImageGray) { return get((ImageGray) img, x, y); } else if (img instanceof ImageInterleaved) { return get((ImageInterleaved) img, x, y, band); } else if (img instanceof Planar) { return get(((Planar) img).getBand(band), x, y); } else { throw new IllegalArgumentException("Unknown or incompatible image type: " + img.getClass().getSimpleName()); } }
private void printIntensity( String message , T deriv ) { System.out.printf("%20s: ",message); int middle = width/2; for( int i = middle-10; i <= middle+10; i++ ) { double val = GeneralizedImageOps.get(deriv,i,height/2); System.out.printf("%5.1f ",val); } System.out.println(); }