Class FastCornerDetector<T extends ImageGray<T>>

All Implemented Interfaces:
Direct Known Subclasses:

public class FastCornerDetector<T extends ImageGray<T>>
extends Object
implements FeatureIntensity<T>

Generic interface for fast corner detection algorithms. The general idea is that at the points in a circle around the center point (see below) should either be above or below the center pixel's intensity value value. With this information candidates corners can be quickly eliminated, see [1].

This implementation works by trying to minimize the number of reads per pixel. Code is auto generated and samples each point in a series of if statements such that the number of possible candidate corners around a pixel are eliminated. A different auto generated implementation is provided for Fast 9 to Fast 12. The number indicates how many continuous pixels are needed for it to be considered a corner.

After a pixel is flagged as a corner then the the intensity the difference between the average exterior pixel value which is part of the corner and the center pixel value. See code for details.

Circle of radius 2 pixels is searched around the center point 'x':

11 15
10 16
08 02
07 03

See Also:
[1] Edward Rosten, Reid Porter and Tom Drummond. "Faster and better: a machine learning approach to corner detection"
  • Field Details

  • Constructor Details

    • FastCornerDetector

      public FastCornerDetector​(FastCornerInterface<T> helper)
      helper - Provide the image type specific helper.
  • Method Details

    • getRadius

      public int getRadius()
      Description copied from interface: FeatureIntensity
      Returns the radius of the feature being computed. Features are square in shape with a width = 2*radius+1.
      Specified by:
      getRadius in interface FeatureIntensity<T extends ImageGray<T>>
      Radius of detected features.
    • getIgnoreBorder

      public int getIgnoreBorder()
      Description copied from interface: FeatureIntensity
      Size of the region surrounding the image's border in which pixels are not processed.
      Specified by:
      getIgnoreBorder in interface FeatureIntensity<T extends ImageGray<T>>
      The ignore border around the image.
    • process

      public void process​(T image, GrayF32 intensity)
      Computes fast corner features and their intensity. The intensity is needed if non-max suppression is used
    • process

      public void process​(T image)
      Computes fast corner features
    • getImageType

      public Class<T> getImageType()