public class SiftDetector
extends java.lang.Object
Feature detector described in the Scale Invariant Feature Transform (SIFT) paper [1]. Location and scale of blob like features are detected using a Difference of Gaussian (DOG) across scale-space. Note the algorithmic changes below.
INTERPOLATION: Location and scale interpolation is done using a second order polynomial. This avoids taking the second order derivative numerically, which is very sensitive to noise. Plus I disagree with his statement that peaks outside the local region are valid and require iteration.
LOW CONTRAST REJECTION: Try adjusting detection radius to reduce the number of low contrast returns instead. The technique proposed in the paper was not tested.
[1] Lowe, D. "Distinctive image features from scale-invariant keypoints". International Journal of Computer Vision, 60, 2 (2004), pp.91--110.
| Modifier and Type | Field and Description |
|---|---|
protected SiftImageScaleSpace |
ss |
| Constructor and Description |
|---|
SiftDetector(NonMaxSuppression extractor,
int maxFeaturesPerScale,
double edgeThreshold)
Configures SIFT
|
| Modifier and Type | Method and Description |
|---|---|
org.ddogleg.struct.FastQueue<ScalePoint> |
getFoundPoints()
Returns all the found points
|
void |
process(SiftImageScaleSpace ss) |
protected SiftImageScaleSpace ss
public SiftDetector(NonMaxSuppression extractor, int maxFeaturesPerScale, double edgeThreshold)
extractor - Extracts local maximums from each scale.maxFeaturesPerScale - Max detected features per scale. Disable with < 0. Try 500edgeThreshold - Threshold for edge filtering. Disable with a value <= 0. Try 5public void process(SiftImageScaleSpace ss)
public org.ddogleg.struct.FastQueue<ScalePoint> getFoundPoints()