Detects keypoints and computes their descriptors
[keypoints, descriptors] = obj.detectAndCompute(img)
[...] = obj.detectAndCompute(..., 'OptionName',optionValue, ...)
Input
- img Image, input 8-bit grayscale image.
Output
- keypoints The detected keypoints. A 1-by-N structure array
with the following fields:
- pt coordinates of the keypoint
[x,y]
- size diameter of the meaningful keypoint neighborhood
- angle computed orientation of the keypoint (-1 if not
applicable); it's in [0,360) degrees and measured
relative to image coordinate system (y-axis is
directed downward), i.e in clockwise.
- response the response by which the most strong
keypoints have been selected. Can be used for further
sorting or subsampling.
- octave octave (pyramid layer) from which the keypoint
has been extracted.
- class_id object class (if the keypoints need to be
clustered by an object they belong to).
- descriptors Computed descriptors. Output concatenated
vectors of descriptors. Each descriptor is a 64- or
128-element vector, as returned by cv.SURF.descriptorSize,
so the total size of descriptors will be
numel(keypoints) * obj.descriptorSize()
. A matrix of
size N-by-(64/128) of class single
, one row per keypoint.
Options
- Mask optional mask specifying where to look for keypoints.
Not set by default.
- Keypoints If passed, then the method will use the provided
vector of keypoints instead of detecting them, and the
algorithm just computes their descriptors.
The function is parallelized with the TBB library.