@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);
    }
  }