Documentation - Matlab API - SIFT - vl_covdet

VL_COVDET() implements a number of co-variant feature detectors (e.g., DoG, Harris-Affine, Harris-Laplace) and allow to compute corresponding feature descriptors (SIFT, raw patches).

F = VL_COVDET(I) detects upright scale and translation covariant features based on the Difference of Gaussian (Dog) cornerness measure from image I (a grayscale image of class SINGLE). F is in the format of oriented ellipse feature frames (see VL_PLOTFRAME() for the definition) even if features are only scale-invariant (discs or oriented discs).

VL_COVDET(I, 'Method', METHOD) allows using one of the following methods instead:

DoG

The Difference of Gaussians is an approximate version of the multiscale trace of Laplacian operator [1].

Hessian

Determinant Hessian operator [2].

HessianLaplace

Determinant of Hessian for space localisation, trace of Laplacian for scale detection [2].

HarrisLaplace

Harris cornerness measure for space localisation, trace of Laplacian for scale detection [2].

MultiscaleHessian

Same as HessianLaplace, but Laplacian scale detection is not performend (features are simply detected at multiple scales) [2].

MultiscaleHarris

Same as HarrisLaplace, but Laplacian scale detection is not performend (features are simply detected at multiple scales) [2].

The number of detected features is affected by the 'PeakThreshold', which sets the minimum absolute vale of the cornerness measure to accept a feature. A larger threshold select fewer features. To adjust the threshold, the score of the detected features can be obtained in the INFO structure (see later).

Features can also be filtered by setting the 'EdgeThreshold' parameter, which sets an upper bound on the ratio of the maxium over the minium curvature of the cornerness measure at the detected location. The idea is that unbalanced curvatures correspond to features detected along image edges, and should therefore be discarded as spatially unstable.

VL_COVDET(..., 'EstimateAffineShape', true) switches on affine adaptation, which attempts to estimate the affine co-variant shape of each feature based on the algorihtm of [2].

VL_COVDET(..., 'EstimateOrientation', true) switches on the estimation of the orientation of features (which are therefore not upright anymore) []. Note that more than one orientation can be associated to each feature, creating copies of them.

VL_COVDET(..., 'Frames', F) allows to specify user defined frames F. This skips detection, but estimating the affine shape or the orietnations can still be applied. Moreover, descriptors for these frames can be computed.

[F,D] = VL_COVDET(I, ...) computes the SIFT descriptors [1] for the detected features. Each column of D is the descriptor of the corresponding frame in F. A descriptor is a 128-dimensional vector of class SINGLE. The same format of VL_SIFT() is used. SIFT features are computed on normalised image patches that are affected by the parameters explained next (for example, to comptue SIFT on a larger measurement reagion, increase the value of PatchRelativeExtent.

[F,D] = VL_COVDET(I, 'descriptor', DESCRIPTOR) allows using one following descriptors instead

SIFT

The default SIFT descriptor.

LIOP

The Local Intensity Order Pattern descriptor. See VL_LIOP() for parameter definitions. All listed parameters can be used as input to VL_COVDET(), prefixed by the 'Liop' string (e.g. 'LiopIntensityThrehsold').

PATCH

Raw patches. In this case, each column of D is a stacked square image patch. This is very useful to compute alternative descriptors.

The following parameters can be used to control the produced descriptors:

PatchResolution for SIFT descriptor 15, LIOP 20, PATCH 20

The size of the patch R in pixel. Specifically, the patch is a square of side 2*R+1 pixels.

PatchRelativeExtent for SIFT descriptor 7.5, LIIP 10, PATCH 6

The extent E of the patch in the feature frame. A feature F define a mapping from the feature reference frame to the image reference frame as an affine transformation A,T (see VL_PLOTFRAME()). The patch is a square [-E, E]^2 in this frame (transform this square by A,T to find the extent in the image).

PatchRelativeSmoothing for SIFT descriptor 1, LIOP 1, PATCH 1.2

The smoothing SIGMA of the patch in the patch frame. The computed patch can be thought as being obtained by first warping the image (as a continous signal) by A,T, then smoothing the results by SIGMA, and then sampling.

[F,D,INFO] = VL_COVDET(...) returns an additiona structure INFO with the following members:

info.peakScores

The peak scores of the detected features.

info.edgeScores

The edge scores of the detected features.

info.gss

The Gaussian scale space (see VL_PLOTSS()).

info.css

The cornerness measure scale space (see VL_PLOTSS()).

In addition to the ones discussed so far, the function supports the following options:

OctaveResolution 3

The number of scale levels sampled per octave when constructing the scale spaces.

DoubleImage true

Whether to double the image before extracting features. This allows to detect features at a smoothing level of 0.5 and up rathern than 1.0 and up, resulting in many more small features being detected.

Verbose

If specified, it incerases the verbosity level.

REFERENCES

[1] D. G. Lowe, Distinctive image features from scale-invariant keypoints. IJCV, vol. 2, no. 60, pp. 91-110, 2004.

[2] K. Mikolajcyk and C. Schmid, An affine invariant interest point detector. ICCV, vol. 2350, pp. 128-142, 2002.

See also: VL_SIFT(), VL_LIOP(), VL_PLOTFRAME(), VL_PLOTSS(), VL_HELP().