Class OrientationHistogramSift<Deriv extends ImageGray<Deriv>>


public class OrientationHistogramSift<Deriv extends ImageGray<Deriv>> extends Object

Computes the orientation of a region around a point in scale-space as specified in the SIFT [1] paper. A histogram of angles is computed using a weighted sum of image derivatives. The size of the region is specified by the scale function parameter. Every pixel inside the sample region is read and contributes to the angle estimation. If the image border is encountered the sample return is truncated.

To get the orientation for the largest peak invoke getPeakOrientation(). Other

Differences from paper:
  • The angle in each bin is set to the atan2(y,x) of the weighted sum of image derivative
  • Interpolation is done using a 2nd degree polynomial instead of a parabola.

[1] Lowe, D. "Distinctive image features from scale-invariant keypoints". International Journal of Computer Vision, 60, 2 (2004), pp.91--110.

  • Constructor Details

    • OrientationHistogramSift

      public OrientationHistogramSift(int histogramSize, double sigmaEnlarge, Class<Deriv> derivType)
      Configures orientation estimation
      histogramSize - Number of elements in the histogram. Standard is 36
      sigmaEnlarge - How much the scale is enlarged by. Standard is 1.5
  • Method Details

    • setImageGradient

      public void setImageGradient(Deriv derivX, Deriv derivY)
      Specify the input image
    • process

      public void process(double c_x, double c_y, double sigma)
      Estimates the orientation(s) of a region at the specified location and scale
      c_x - Location x-axis
      c_y - Location y-axis
      sigma - blur standard deviations of detected feature. Also referred to as scale.
    • getOrientations

      public DogArray_F64 getOrientations()
      A list of found orientations
    • getPeakOrientation

      public double getPeakOrientation()
      Orientation of the largest peak