public class FeaturePyramid<T extends boofcv.struct.image.ImageGray,D extends boofcv.struct.image.ImageGray> extends java.lang.Object implements InterestPointScaleSpacePyramid<T>
Detects scale invariant interest/corner points by computing the feature intensities across a pyramid of different scales. Features which are maximums with in a local 2D neighborhood and within the local scale neighbourhood are declared to be features. Maximums are checked for in scale space by comparing the feature intensity against features in the upper and lower layers.
NOTE: Features are not computed for the bottom and top most layers in the pyramid.
NOTE: See discussion of scalePower inside of FeatureLaplacePyramid.
[1] Krystian Mikolajczyk and Cordelia Schmid, "Indexing based on scale invariant interest points" ICCV 2001. Proceedings.
[2] Lindeberg, T., "Feature detection with automatic scale selection." IJCV 30(2) (1998) 79 – 116
FactoryInterestPoint| Modifier and Type | Field and Description |
|---|---|
protected boofcv.abst.filter.derivative.AnyImageDerivative<T,D> |
computeDerivative |
protected java.util.List<ScalePoint> |
foundPoints |
protected boofcv.struct.image.GrayF32[] |
intensities |
protected java.util.List<georegression.struct.point.Point2D_I16>[] |
maximums |
protected double |
scalePower |
protected int |
spaceIndex |
| Constructor and Description |
|---|
FeaturePyramid(GeneralFeatureDetector<T,D> detector,
boofcv.abst.filter.derivative.AnyImageDerivative<T,D> computeDerivative,
double scalePower)
Create a feature detector.
|
| Modifier and Type | Method and Description |
|---|---|
protected static boolean |
checkMax(boofcv.core.image.border.ImageBorder_F32 inten,
float bestScore,
int c_x,
int c_y) |
void |
detect(boofcv.struct.pyramid.PyramidFloat<T> ss)
Searches for features inside the provided scale space
|
protected void |
findLocalScaleSpaceMax(boofcv.struct.pyramid.PyramidFloat<T> ss,
int layerID)
Searches the pyramid layers up and down to see if the found 2D features are also scale space maximums.
|
java.util.List<ScalePoint> |
getInterestPoints()
Returns all the found interest points
|
protected boofcv.struct.image.GrayF32[] intensities
protected int spaceIndex
protected java.util.List<georegression.struct.point.Point2D_I16>[] maximums
protected java.util.List<ScalePoint> foundPoints
protected boofcv.abst.filter.derivative.AnyImageDerivative<T extends boofcv.struct.image.ImageGray,D extends boofcv.struct.image.ImageGray> computeDerivative
protected double scalePower
public FeaturePyramid(GeneralFeatureDetector<T,D> detector, boofcv.abst.filter.derivative.AnyImageDerivative<T,D> computeDerivative, double scalePower)
detector - Point feature detector which is used to find candidates in each scale levelscalePower - Used to normalize feature intensity at different scales. For many features this should be one.public void detect(boofcv.struct.pyramid.PyramidFloat<T> ss)
detect in interface InterestPointScaleSpacePyramid<T extends boofcv.struct.image.ImageGray>ss - Scale space of an imageprotected void findLocalScaleSpaceMax(boofcv.struct.pyramid.PyramidFloat<T> ss, int layerID)
protected static boolean checkMax(boofcv.core.image.border.ImageBorder_F32 inten,
float bestScore,
int c_x,
int c_y)
public java.util.List<ScalePoint> getInterestPoints()
InterestPointScaleSpacePyramidgetInterestPoints in interface InterestPointScaleSpacePyramid<T extends boofcv.struct.image.ImageGray>