utilities.boofcv_extensions
Class FactoryDetectDescribeNormalization

java.lang.Object
  extended by utilities.boofcv_extensions.FactoryDetectDescribeNormalization

public class FactoryDetectDescribeNormalization
extends java.lang.Object

Creates instances of DetectDescribePoint for different feature detectors/describers.

Author:
Peter Abeles

Constructor Summary
FactoryDetectDescribeNormalization()
           
 
Method Summary
static
<T extends boofcv.struct.image.ImageSingleBand,D extends boofcv.struct.feature.TupleDesc>
boofcv.abst.feature.detdesc.DetectDescribePoint<T,D>
fuseTogether(boofcv.abst.feature.detect.interest.InterestPointDetector<T> detector, boofcv.abst.feature.orientation.OrientationImage<T> orientation, boofcv.abst.feature.describe.DescribeRegionPoint<T,D> describe)
          Given independent algorithms for feature detection, orientation, and describing, create a new DetectDescribePoint.
static boofcv.abst.feature.detdesc.DetectDescribePoint<boofcv.struct.image.ImageFloat32,boofcv.struct.feature.SurfFeature> sift(double scaleSigma, int numOfScales, int numOfOctaves, boolean doubleInputImage, int extractRadius, float detectThreshold, int maxFeaturesPerScale, double edgeThreshold, int oriHistogramSize)
          Creates a new SIFT feature detector and describer.
static boofcv.abst.feature.detdesc.DetectDescribePoint<boofcv.struct.image.ImageFloat32,boofcv.struct.feature.SurfFeature> sift(int numOfOctaves, float detectThreshold, boolean doubleInputImage, int maxFeaturesPerScale)
          Creates a new SIFT feature and describer.
static
<T extends boofcv.struct.image.ImageSingleBand,II extends boofcv.struct.image.ImageSingleBand>
boofcv.abst.feature.detdesc.DetectDescribePoint<T,boofcv.struct.feature.SurfFeature>
surf(float detectThreshold, int extractRadius, int maxFeaturesPerScale, int initialSampleSize, int initialSize, int numberScalesPerOctave, int numberOfOctaves, boolean modified, java.lang.Class<T> imageType)
           Creates a SURF descriptor.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

FactoryDetectDescribeNormalization

public FactoryDetectDescribeNormalization()
Method Detail

sift

public static boofcv.abst.feature.detdesc.DetectDescribePoint<boofcv.struct.image.ImageFloat32,boofcv.struct.feature.SurfFeature> sift(int numOfOctaves,
                                                                                                                                       float detectThreshold,
                                                                                                                                       boolean doubleInputImage,
                                                                                                                                       int maxFeaturesPerScale)
Creates a new SIFT feature and describer. Only provides access to a few critical parameters and uses default settings for the rest.

Parameters:
numOfOctaves - Number of octaves to detect. Try 4
detectThreshold - Minimum corner intensity required. Try 1
doubleInputImage - Should the input image be doubled? Try false.
maxFeaturesPerScale - Max detected features per scale. Disable with < 0. Try 500
Returns:
SIFT

sift

public static boofcv.abst.feature.detdesc.DetectDescribePoint<boofcv.struct.image.ImageFloat32,boofcv.struct.feature.SurfFeature> sift(double scaleSigma,
                                                                                                                                       int numOfScales,
                                                                                                                                       int numOfOctaves,
                                                                                                                                       boolean doubleInputImage,
                                                                                                                                       int extractRadius,
                                                                                                                                       float detectThreshold,
                                                                                                                                       int maxFeaturesPerScale,
                                                                                                                                       double edgeThreshold,
                                                                                                                                       int oriHistogramSize)
Creates a new SIFT feature detector and describer. Provides access to most parameters.

Parameters:
scaleSigma - Amount of blur applied to each scale inside an octaves. Try 1.6
numOfScales - Number of scales per octaves. Try 5. Must be >= 3
numOfOctaves - Number of octaves to detect. Try 4
doubleInputImage - Should the input image be doubled? Try false.
extractRadius - Size of the feature used to detect the corners. Try 2
detectThreshold - Minimum corner intensity required. Try 1
maxFeaturesPerScale - Max detected features per scale. Disable with < 0. Try 500
edgeThreshold - Threshold for edge filtering. Disable with a value <= 0. Try 5
oriHistogramSize - Orientation histogram size. Standard is 36
Returns:
SIFT

surf

public static <T extends boofcv.struct.image.ImageSingleBand,II extends boofcv.struct.image.ImageSingleBand> boofcv.abst.feature.detdesc.DetectDescribePoint<T,boofcv.struct.feature.SurfFeature> surf(float detectThreshold,
                                                                                                                                                                                                       int extractRadius,
                                                                                                                                                                                                       int maxFeaturesPerScale,
                                                                                                                                                                                                       int initialSampleSize,
                                                                                                                                                                                                       int initialSize,
                                                                                                                                                                                                       int numberScalesPerOctave,
                                                                                                                                                                                                       int numberOfOctaves,
                                                                                                                                                                                                       boolean modified,
                                                                                                                                                                                                       java.lang.Class<T> imageType)

Creates a SURF descriptor. SURF descriptors are invariant to illumination, orientation, and scale. BoofCV provides two variants. BoofCV provides two variants, described below.

The modified variant provides comparable stability to binary provided by the original author. The other variant is much faster, but a bit less stable, Both implementations contain several algorithmic changes from what was described in the original SURF paper. See tech report [1] for details.

Both variants use the FastHessian feature detector described in the SURF paper.

[1] Add tech report when its finished. See SURF performance web page for now.

Parameters:
detectThreshold - Minimum feature intensity. Image dependent. Start tuning at 1.
extractRadius - Radius used for non-max-suppression. Typically 1 or 2.
maxFeaturesPerScale - Number of features it will find or if <= 0 it will return all features it finds.
initialSampleSize - How often pixels are sampled in the first octave. Typically 1 or 2.
initialSize - Typically 9.
numberScalesPerOctave - Typically 4.
numberOfOctaves - Typically 4.
modified - True for more stable but slower and false for a faster but less stable.
Returns:
The interest point detector.
See Also:
FastHessianFeatureDetector, DescribePointSurf, DescribePointSurf, FastHessianFeatureDetector

fuseTogether

public static <T extends boofcv.struct.image.ImageSingleBand,D extends boofcv.struct.feature.TupleDesc> boofcv.abst.feature.detdesc.DetectDescribePoint<T,D> fuseTogether(boofcv.abst.feature.detect.interest.InterestPointDetector<T> detector,
                                                                                                                                                                          boofcv.abst.feature.orientation.OrientationImage<T> orientation,
                                                                                                                                                                          boofcv.abst.feature.describe.DescribeRegionPoint<T,D> describe)
Given independent algorithms for feature detection, orientation, and describing, create a new DetectDescribePoint.

Parameters:
detector - Feature detector
orientation - Orientation estimation. Optionally, can be null.
describe - Feature descriptor
Returns:
DetectDescribePoint.