@Override public void beforeUpdate(MBFImage frame) { FImage gimg = frame.flatten(); // bring to sigma = 1.0 gimg.processInplace(new FGaussianConvolve(1f)); for (int i = 0; i < 3; i++) { final int t = (int) Math.pow(2, i); final double sigma = Math.sqrt(t); final float sf = t; harris.setDetectionScale((float) sigma); harris.setImageBlurred(true); harris.findInterestPoints(gimg); final float iscale = harris.getIntegrationScale(); final float samplesize = 4 * iscale + 1; for (final InterestPointData ipd : harris.getInterestPoints((float) (1e-5))) { ipd.x *= sf; ipd.y *= sf; frame.drawShape(new Circle(ipd, sf * samplesize), RGBColour.RED); } gimg.processInplace(new FGaussianConvolve((float) Math.sqrt((Math.pow(2, i + 1) - t)))); gimg = ResizeProcessor.halfSize(gimg); } }