Detects keypoints and computes their descriptors
[keypoints, descriptors] = obj.detectAndCompute(img)
[...] = obj.detectAndCompute(..., 'OptionName',optionValue, ...)
Input
- img Input
uint8
/uint16
/single
grayscale image.
Internally image is converted to 32-bit floating-point in
the [0,1] range.
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.KAZE.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.