Covariant feature detectors (Covariant feature detectors) More...
Go to the source code of this file.
Classes | |
struct | _VlCovDetFeature |
A detected feature shape and location. More... | |
struct | _VlCovDetFeatureLaplacianScale |
A detected feature Laplacian scale. More... | |
struct | _VlCovDetFeatureOrientation |
A detected feature orientation. More... | |
struct | _VlFrameDisc |
Disc feature frame. More... | |
struct | _VlFrameEllipse |
Ellipse feature frame. More... | |
struct | _VlFrameOrientedDisc |
Oriented disc feature frame An upright frame has angle equal to zero. More... | |
struct | _VlFrameOrientedEllipse |
Oriented ellipse feature frame The affine transformation transforms the ellipse shape into a circular region. More... | |
Functions | |
Create and destroy | |
VL_EXPORT VlCovDet * | vl_covdet_new (VlCovDetMethod method) |
Create a new object instance. | |
VL_EXPORT void | vl_covdet_delete (VlCovDet *self) |
Delete object instance. | |
VL_EXPORT void | vl_covdet_reset (VlCovDet *self) |
Reset object. | |
Process data | |
VL_EXPORT int | vl_covdet_put_image (VlCovDet *self, float const *image, vl_size width, vl_size height) |
Detect features in an image. | |
VL_EXPORT void | vl_covdet_detect (VlCovDet *self) |
Detect scale-space features. | |
VL_EXPORT int | vl_covdet_append_feature (VlCovDet *self, VlCovDetFeature const *feature) |
Append a feature to the internal buffer. | |
VL_EXPORT void | vl_covdet_extract_orientations (VlCovDet *self) |
Extract the orientation(s) for the stored features. | |
VL_EXPORT void | vl_covdet_extract_laplacian_scales (VlCovDet *self) |
Extract the Laplacian scales for the stored features. | |
VL_EXPORT void | vl_covdet_extract_affine_shape (VlCovDet *self) |
Extract the affine shape for the stored features. | |
VL_EXPORT VlCovDetFeatureOrientation * | vl_covdet_extract_orientations_for_frame (VlCovDet *self, vl_size *numOrientations, VlFrameOrientedEllipse frame) |
Extract the orientation(s) for a feature. | |
VL_EXPORT VlCovDetFeatureLaplacianScale * | vl_covdet_extract_laplacian_scales_for_frame (VlCovDet *self, vl_size *numScales, VlFrameOrientedEllipse frame) |
Extract the Laplacian scale(s) for a feature frame. | |
VL_EXPORT int | vl_covdet_extract_affine_shape_for_frame (VlCovDet *self, VlFrameOrientedEllipse *adapted, VlFrameOrientedEllipse frame) |
Extract the affine shape for a feature frame. | |
VL_EXPORT vl_bool | vl_covdet_extract_patch_for_frame (VlCovDet *self, float *patch, vl_size resolution, double extent, double sigma, VlFrameOrientedEllipse frame) |
Helper for extracting patches. | |
VL_EXPORT void | vl_covdet_drop_features_outside (VlCovDet *self, double margin) |
Drop features (partially) outside the image. | |
Retrieve data and parameters | |
VL_EXPORT vl_size | vl_covdet_get_num_features (VlCovDet const *self) |
Get number of stored frames. | |
VL_EXPORT void * | vl_covdet_get_features (VlCovDet *self) |
Get the stored frames. | |
VL_EXPORT vl_index | vl_covdet_get_first_octave (VlCovDet const *self) |
Get the index of the first octave. | |
VL_EXPORT vl_size | vl_covdet_get_octave_resolution (VlCovDet const *self) |
Get the octave resolution. | |
VL_EXPORT double | vl_covdet_get_peak_threshold (VlCovDet const *self) |
Get the peak threshold. | |
VL_EXPORT double | vl_covdet_get_edge_threshold (VlCovDet const *self) |
Get the edge threshold. | |
VL_EXPORT double | vl_covdeg_get_laplacian_peak_threshold (VlCovDet const *self) |
VL_EXPORT vl_bool | vl_covdet_get_transposed (VlCovDet const *self) |
Get wether images are passed in transposed. | |
VL_EXPORT VlScaleSpace * | vl_covdet_get_gss (VlCovDet const *self) |
Get the Gaussian scale space. | |
VL_EXPORT VlScaleSpace * | vl_covdet_get_css (VlCovDet const *self) |
Get the cornerness measure scale space. | |
VL_EXPORT vl_bool | vl_covdet_get_aa_accurate_smoothing (VlCovDet const *self) |
Get whether affine adaptation uses accurate smoothing. | |
VL_EXPORT vl_size const * | vl_covdet_get_laplacian_scales_statistics (VlCovDet const *self, vl_size *numScales) |
Get the number of features found with a certain number of scales. | |
VL_EXPORT double | vl_covdet_get_non_extrema_suppression_threshold (VlCovDet const *self) |
Get the non-extrema suppression threshold. | |
VL_EXPORT vl_size | vl_covdet_get_num_non_extrema_suppressed (VlCovDet const *self) |
Get the number of non-extrema suppressed. | |
Set parameters | |
VL_EXPORT void | vl_covdet_set_first_octave (VlCovDet *self, vl_index o) |
Set the index of the first octave. | |
VL_EXPORT void | vl_covdet_set_octave_resolution (VlCovDet *self, vl_size r) |
Set the octave resolutuon. | |
VL_EXPORT void | vl_covdet_set_peak_threshold (VlCovDet *self, double peakThreshold) |
Set the peak threshold. | |
VL_EXPORT void | vl_covdet_set_edge_threshold (VlCovDet *self, double edgeThreshold) |
Set the edge threshold. | |
VL_EXPORT void | vl_covdet_set_laplacian_peak_threshold (VlCovDet *self, double peakThreshold) |
Set the Laplacian peak threshold. | |
VL_EXPORT void | vl_covdet_set_transposed (VlCovDet *self, vl_bool t) |
Set the index of the first octave. | |
VL_EXPORT void | vl_covdet_set_aa_accurate_smoothing (VlCovDet *self, vl_bool x) |
Set whether affine adaptation uses accurate smoothing. | |
VL_EXPORT void | vl_covdet_set_non_extrema_suppression_threshold (VlCovDet *self, double x) |
Set the non-extrema suppression threshod. | |
Feature frames | |
enum | _VlFrameType { VL_FRAMETYPE_DISC = 1, VL_FRAMETYPE_ORIENTED_DISC, VL_FRAMETYPE_ELLIPSE, VL_FRAMETYPE_ORIENTED_ELLIPSE, VL_FRAMETYPE_NUM } |
Types of feature frames. More... | |
enum | _VlCovDetMethod { VL_COVDET_METHOD_DOG = 1, VL_COVDET_METHOD_HESSIAN, VL_COVDET_METHOD_HESSIAN_LAPLACE, VL_COVDET_METHOD_HARRIS_LAPLACE, VL_COVDET_METHOD_MULTISCALE_HESSIAN, VL_COVDET_METHOD_MULTISCALE_HARRIS, VL_COVDET_METHOD_NUM } |
Covariant feature detection method. More... | |
typedef enum _VlFrameType | VlFrameType |
Types of feature frames. | |
typedef struct _VlFrameDisc | VlFrameDisc |
Disc feature frame. | |
typedef struct _VlFrameOrientedDisc | VlFrameOrientedDisc |
Oriented disc feature frame An upright frame has angle equal to zero. | |
typedef struct _VlFrameEllipse | VlFrameEllipse |
Ellipse feature frame. | |
typedef struct _VlFrameOrientedEllipse | VlFrameOrientedEllipse |
Oriented ellipse feature frame The affine transformation transforms the ellipse shape into a circular region. | |
typedef struct _VlCovDetFeature | VlCovDetFeature |
A detected feature shape and location. | |
typedef struct _VlCovDetFeatureOrientation | VlCovDetFeatureOrientation |
A detected feature orientation. | |
typedef struct _VlCovDetFeatureLaplacianScale | VlCovDetFeatureLaplacianScale |
A detected feature Laplacian scale. | |
typedef enum _VlCovDetMethod | VlCovDetMethod |
Covariant feature detection method. | |
typedef struct _VlCovDet | VlCovDet |
Covariant feature detector. | |
VL_EXPORT const char * | vlFrameNames [VL_FRAMETYPE_NUM] |
Names of the frame types. | |
VL_EXPORT VlEnumerator | vlFrameTypes [VL_FRAMETYPE_NUM] |
Mapping between string values and VlFrameType values. | |
VL_EXPORT VlEnumerator | vlCovdetMethods [VL_COVDET_METHOD_NUM] |
Mapping between strings and VlCovDetMethod values. | |
VL_INLINE vl_size | vl_get_frame_size (VlFrameType frameType) |
Get the size of a frame structure. | |
VL_INLINE VlFrameType | vl_get_frame_type (vl_bool affineAdaptation, vl_bool orientation) |
Get the size of a frame structure. |
Covariant feature detectors (Covariant feature detectors)
Definition in file covdet.h.
Covariant feature detector.
typedef struct _VlCovDetFeature VlCovDetFeature |
A detected feature shape and location.
typedef struct _VlCovDetFeatureLaplacianScale VlCovDetFeatureLaplacianScale |
A detected feature Laplacian scale.
typedef struct _VlCovDetFeatureOrientation VlCovDetFeatureOrientation |
A detected feature orientation.
typedef enum _VlCovDetMethod VlCovDetMethod |
Covariant feature detection method.
typedef struct _VlFrameDisc VlFrameDisc |
Disc feature frame.
typedef struct _VlFrameEllipse VlFrameEllipse |
Ellipse feature frame.
typedef struct _VlFrameOrientedDisc VlFrameOrientedDisc |
Oriented disc feature frame An upright frame has angle
equal to zero.
typedef struct _VlFrameOrientedEllipse VlFrameOrientedEllipse |
Oriented ellipse feature frame The affine transformation transforms the ellipse shape into a circular region.
typedef enum _VlFrameType VlFrameType |
Types of feature frames.
enum _VlCovDetMethod |
enum _VlFrameType |
VL_EXPORT double vl_covdeg_get_laplacian_peak_threshold | ( | VlCovDet const * | self | ) |
VL_EXPORT int vl_covdet_append_feature | ( | VlCovDet * | self, |
VlCovDetFeature const * | feature | ||
) |
Append a feature to the internal buffer.
self | object. |
feature | a pointer to the feature to append. |
The feature is copied. The function may fail with status
equal to VL_ERR_ALLOC if there is insufficient memory.
VL_EXPORT void vl_covdet_delete | ( | VlCovDet * | self | ) |
VL_EXPORT void vl_covdet_detect | ( | VlCovDet * | self | ) |
Detect scale-space features.
self | object. |
This function runs the configured feature detector on the image that was passed by using vl_covdet_put_image.
VL_EXPORT void vl_covdet_drop_features_outside | ( | VlCovDet * | self, |
double | margin | ||
) |
Drop features (partially) outside the image.
self | object. |
margin | geometric marging. |
The feature extent is defined by maring
. A bounding box in the normalised feature frame containin a circle of radius maring is created and mapped to the image by the feature frame transformation. Then the feature is dropped if the bounding box is not contained in the image.
For example, setting margin
to zero drops a feature only if its center is not contained.
Typically a valua of margin
equal to 1 or 2 is used.
VL_EXPORT void vl_covdet_extract_affine_shape | ( | VlCovDet * | self | ) |
VL_EXPORT int vl_covdet_extract_affine_shape_for_frame | ( | VlCovDet * | self, |
VlFrameOrientedEllipse * | adapted, | ||
VlFrameOrientedEllipse | frame | ||
) |
Extract the affine shape for a feature frame.
self | object. |
adapted | the shape-adapted frame. |
frame | the input frame. |
This function may fail if adaptation is unsuccessful or if memory is insufficient.
VL_EXPORT void vl_covdet_extract_laplacian_scales | ( | VlCovDet * | self | ) |
VL_EXPORT VlCovDetFeatureLaplacianScale* vl_covdet_extract_laplacian_scales_for_frame | ( | VlCovDet * | self, |
vl_size * | numScales, | ||
VlFrameOrientedEllipse | frame | ||
) |
VL_EXPORT void vl_covdet_extract_orientations | ( | VlCovDet * | self | ) |
VL_EXPORT VlCovDetFeatureOrientation* vl_covdet_extract_orientations_for_frame | ( | VlCovDet * | self, |
vl_size * | numOrientations, | ||
VlFrameOrientedEllipse | frame | ||
) |
Extract the orientation(s) for a feature.
self | object. |
numOrientations | the number of detected orientations. |
frame | pose of the feature. |
The returned array is a matrix of size where n is the number of detected orientations.
The function returns NULL
if memory is insufficient.
VL_EXPORT vl_bool vl_covdet_extract_patch_for_frame | ( | VlCovDet * | self, |
float * | patch, | ||
vl_size | resolution, | ||
double | extent, | ||
double | sigma, | ||
VlFrameOrientedEllipse | frame | ||
) |
Helper for extracting patches.
self | object. |
patch | buffer. |
resolution | patch resolution. |
extent | patch extent. |
sigma | desired smoothing in the patch frame. |
frame | feature frame. |
The function considers a patch of extent [-extent,extent]
on each side, with a side counting 2*resolution+1
pixels. In attempts to extract from the scale space a patch based on the affine warping specified by frame in such a way that the resulting smoothing of the image is sigma (in the patch frame).
The transformation is specified by the matrices A
and T
embedded in the feature frame. Note that this transformation maps pixels from the patch frame to the image frame.
VL_EXPORT vl_bool vl_covdet_get_aa_accurate_smoothing | ( | VlCovDet const * | self | ) |
VL_EXPORT VlScaleSpace* vl_covdet_get_css | ( | VlCovDet const * | self | ) |
Get the cornerness measure scale space.
A cornerness measure scale space exists only after calling vl_covdet_detect. Otherwise the function returns NULL
.
VL_EXPORT double vl_covdet_get_edge_threshold | ( | VlCovDet const * | self | ) |
VL_EXPORT void* vl_covdet_get_features | ( | VlCovDet * | self | ) |
VL_EXPORT vl_index vl_covdet_get_first_octave | ( | VlCovDet const * | self | ) |
VL_EXPORT VlScaleSpace* vl_covdet_get_gss | ( | VlCovDet const * | self | ) |
Get the Gaussian scale space.
A Gaussian scale space exists only after calling vl_covdet_put_image. Otherwise the function returns NULL
.
VL_EXPORT vl_size const* vl_covdet_get_laplacian_scales_statistics | ( | VlCovDet const * | self, |
vl_size * | numScales | ||
) |
Get the number of features found with a certain number of scales.
self | object. |
numScales | length of the histogram (out). |
Calling this function makes sense only after running a detector that uses the Laplacian as a secondary measure for scale detection
VL_EXPORT double vl_covdet_get_non_extrema_suppression_threshold | ( | VlCovDet const * | self | ) |
VL_EXPORT vl_size vl_covdet_get_num_features | ( | VlCovDet const * | self | ) |
VL_EXPORT vl_size vl_covdet_get_num_non_extrema_suppressed | ( | VlCovDet const * | self | ) |
VL_EXPORT vl_size vl_covdet_get_octave_resolution | ( | VlCovDet const * | self | ) |
VL_EXPORT double vl_covdet_get_peak_threshold | ( | VlCovDet const * | self | ) |
VL_EXPORT vl_bool vl_covdet_get_transposed | ( | VlCovDet const * | self | ) |
VL_EXPORT VlCovDet* vl_covdet_new | ( | VlCovDetMethod | method | ) |
VL_EXPORT int vl_covdet_put_image | ( | VlCovDet * | self, |
float const * | image, | ||
vl_size | width, | ||
vl_size | height | ||
) |
Detect features in an image.
self | object. |
image | image to process. |
width | image width. |
height | image height. |
width and height must be at least one pixel. The function fails by returing VL_ERR_ALLOC if the memory is insufficient.
VL_EXPORT void vl_covdet_reset | ( | VlCovDet * | self | ) |
VL_EXPORT void vl_covdet_set_aa_accurate_smoothing | ( | VlCovDet * | self, |
vl_bool | x | ||
) |
VL_EXPORT void vl_covdet_set_edge_threshold | ( | VlCovDet * | self, |
double | edgeThreshold | ||
) |
VL_EXPORT void vl_covdet_set_first_octave | ( | VlCovDet * | self, |
vl_index | o | ||
) |
VL_EXPORT void vl_covdet_set_laplacian_peak_threshold | ( | VlCovDet * | self, |
double | peakThreshold | ||
) |
VL_EXPORT void vl_covdet_set_non_extrema_suppression_threshold | ( | VlCovDet * | self, |
double | x | ||
) |
VL_EXPORT void vl_covdet_set_octave_resolution | ( | VlCovDet * | self, |
vl_size | r | ||
) |
VL_EXPORT void vl_covdet_set_peak_threshold | ( | VlCovDet * | self, |
double | peakThreshold | ||
) |
VL_EXPORT void vl_covdet_set_transposed | ( | VlCovDet * | self, |
vl_bool | t | ||
) |
VL_INLINE vl_size vl_get_frame_size | ( | VlFrameType | frameType | ) |
VL_INLINE VlFrameType vl_get_frame_type | ( | vl_bool | affineAdaptation, |
vl_bool | orientation | ||
) |
Get the size of a frame structure.
affineAdaptation | whether the detector use affine adaptation. |
orientation | whether the detector estimates the feature orientation. |
Depedning on whether the detector estimate the affine shape and orientation of a feature, different frame types are extracted.
VL_EXPORT VlEnumerator vlCovdetMethods[VL_COVDET_METHOD_NUM] |
Mapping between strings and VlCovDetMethod values.
VL_EXPORT const char* vlFrameNames[VL_FRAMETYPE_NUM] |
VL_EXPORT VlEnumerator vlFrameTypes[VL_FRAMETYPE_NUM] |