Class DescribePointSurfMod<II extends ImageGray<II>>

java.lang.Object
boofcv.alg.feature.describe.DescribePointSurf<II>
boofcv.alg.feature.describe.DescribePointSurfMod<II>

public class DescribePointSurfMod<II extends ImageGray<II>> extends DescribePointSurf<II>

Modified SURF descriptor which attempts to smooth out edge conditions. Based upon MU-SURF described in [1] it computes features in over lapping sub-regions and has a separate set of weights for the large grid and for sub-regions. Due to these improvements it will in general produce better results than DescribePointSurf at the cost of additional computations.

[1] M. Agrawal, K. Konolige, and M. Blas, "CenSurE: Center Surround Extremas for Realtime Feature Detection and Matching," Computer Vision – ECCV 2008

  • Constructor Details

    • DescribePointSurfMod

      public DescribePointSurfMod(int widthLargeGrid, int widthSubRegion, double widthSample, int overLap, double sigmaLargeGrid, double sigmaSubRegion, boolean useHaar, Class<II> imageType)
      Creates a SURF descriptor of arbitrary dimension by changing how the local region is sampled.
      Parameters:
      widthLargeGrid - Number of sub-regions wide the large grid is. Typically 4.
      widthSubRegion - Number of sample points wide a sub-region is. Typically 5.
      widthSample - The size of a sample point. Typically 3.
      overLap - Number of sample points sub-regions overlap, Typically 2.
      sigmaLargeGrid - Sigma used to weight points in the large grid. Typically 2.5
      sigmaSubRegion - Sigma used to weight points in the sub-region grid. Typically 2.5
      useHaar - If true the Haar wavelet will be used (what was used in [1]), false means an image gradient approximation will be used. True is recommended.
    • DescribePointSurfMod

      public DescribePointSurfMod(Class<II> imageType)
      Create a SURF-64 descriptor. See [1] for details.
  • Method Details

    • features

      public void features(double c_x, double c_y, double c, double s, double scale, SparseImageGradient gradient, double[] features)

      An improved SURF descriptor as presented in CenSurE paper. The sub-regions now overlap and more points are sampled in the sub-region to allow overlap.

      Overrides:
      features in class DescribePointSurf<II extends ImageGray<II>>
      Parameters:
      c_x - Center of the feature x-coordinate.
      c_y - Center of the feature y-coordinate.
      c - cosine of the orientation
      s - sine of the orientation
      scale - The scale of the wavelets.
      features - Where the features are written to. Must be 4*(widthLargeGrid*widthSubRegion)^2 large.
    • getCanonicalWidth

      public int getCanonicalWidth()
      Description copied from class: DescribePointSurf
      Width of sampled region when sampling is aligned with image pixels
      Overrides:
      getCanonicalWidth in class DescribePointSurf<II extends ImageGray<II>>
      Returns:
      width of descriptor sample
    • copy

      public DescribePointSurf<II> copy()
      Creates a new instance with the same configuration
      Overrides:
      copy in class DescribePointSurf<II extends ImageGray<II>>