The central class from which images can be analyzed in search of different kinds of interest points and descriptors computed for them.
To extract features from an image, create an instance of CFeatureExtraction, fill out its CFeatureExtraction::options field, including the algorithm to use (see CFeatureExtraction::TOptions::featsType), and call CFeatureExtraction::detectFeatures. This will return a set of features of the class mrpt::vision::CFeature, which include details for each interest point as well as the desired descriptors and/or patches.
By default, a 21x21 patch is extracted for each detected feature. If the patch is not needed, set patchSize to 0 in CFeatureExtraction::options
The implemented detection algorithms are (see CFeatureExtraction::TOptions::featsType):
- KLT (Kanade-Lucas-Tomasi): A detector (no descriptor vector).
- Harris: A detector (no descriptor vector).
- BCD (Binary Corner Detector): A detector (no descriptor vector) (Not implemented yet).
- SIFT: An implementation of the SIFT detector and descriptor. The implemention may be selected with CFeatureExtraction::TOptions::SIFTOptions::implementation.
- SURF: OpenCV's implementation of SURF detector and descriptor.
- The FAST feature detector (OpenCV's implementation)
- The FASTER (9,10,12) detectors (Edward Rosten's libcvd implementation optimized for SSE2).
Additionally, given a list of interest points onto an image, the following descriptors can be computed for each point by calling CFeatureExtraction::computeDescriptors :
- SIFT descriptor (Lowe's descriptors).
- SURF descriptor (OpenCV's implementation - Requires OpenCV 1.1.0 from SVN or later).
- Intensity-domain spin images (SpinImage): Creates a vector descriptor with the 2D histogram as a single row.
- A circular patch in polar coordinates (Polar images): The matrix descriptor is a 2D polar image centered at the interest point.
- A log-polar image patch (Log-polar images): The matrix descriptor is the 2D log-polar image centered at the interest point.
Apart from the normal entry point detectFeatures(), these other low-level static methods are provided for convenience:
- Note
- The descriptor "Intensity-domain spin images" is described in "A sparse texture representation using affine-invariant regions", S Lazebnik, C Schmid, J Ponce, 2003 IEEE Computer Society Conference on Computer Vision.
- See also
- mrpt::vision::CFeature
Definition at line 59 of file CFeatureExtraction.h.
|
|
static void | detectFeatures_SSE2_FASTER9 (const mrpt::utils::CImage &img, TSimpleFeatureList &corners, const int threshold=20, bool append_to_list=false, uint8_t octave=0, std::vector< size_t > *out_feats_index_by_row=NULL) |
| A SSE2-optimized implementation of FASTER-9 (requires img to be grayscale). More...
|
|
static void | detectFeatures_SSE2_FASTER10 (const mrpt::utils::CImage &img, TSimpleFeatureList &corners, const int threshold=20, bool append_to_list=false, uint8_t octave=0, std::vector< size_t > *out_feats_index_by_row=NULL) |
| Just like detectFeatures_SSE2_FASTER9() for another version of the detector. More...
|
|
static void | detectFeatures_SSE2_FASTER12 (const mrpt::utils::CImage &img, TSimpleFeatureList &corners, const int threshold=20, bool append_to_list=false, uint8_t octave=0, std::vector< size_t > *out_feats_index_by_row=NULL) |
| Just like detectFeatures_SSE2_FASTER9() for another version of the detector. More...
|
|
|
void | internal_computeSiftDescriptors (const mrpt::utils::CImage &in_img, CFeatureList &in_features) const |
| Compute the SIFT descriptor of the provided features into the input image. More...
|
|
void | internal_computeSurfDescriptors (const mrpt::utils::CImage &in_img, CFeatureList &in_features) const |
| Compute the SURF descriptor of the provided features into the input image. More...
|
|
void | internal_computeORBDescriptors (const mrpt::utils::CImage &in_img, CFeatureList &in_features) const |
| Compute the ORB descriptor of the provided features into the input image. More...
|
|
void | internal_computeSpinImageDescriptors (const mrpt::utils::CImage &in_img, CFeatureList &in_features) const |
| Compute the intensity-domain spin images descriptor of the provided features into the input image. More...
|
|
void | internal_computePolarImageDescriptors (const mrpt::utils::CImage &in_img, CFeatureList &in_features) const |
| Compute a polar-image descriptor of the provided features into the input image. More...
|
|
void | internal_computeLogPolarImageDescriptors (const mrpt::utils::CImage &in_img, CFeatureList &in_features) const |
| Compute a log-polar image descriptor of the provided features into the input image. More...
|
|
void | extractFeaturesKLT (const mrpt::utils::CImage &img, CFeatureList &feats, unsigned int init_ID=0, unsigned int nDesiredFeatures=0, const TImageROI &ROI=TImageROI()) const |
| Extract features from the image based on the KLT method. More...
|
|
void | extractFeaturesBCD (const mrpt::utils::CImage &img, CFeatureList &feats, unsigned int init_ID=0, unsigned int nDesiredFeatures=0, const TImageROI &ROI=TImageROI()) const |
| Extract features from the image based on the BCD method. More...
|
|
void | extractFeaturesSIFT (const mrpt::utils::CImage &img, CFeatureList &feats, unsigned int init_ID=0, unsigned int nDesiredFeatures=0, const TImageROI &ROI=TImageROI()) const |
| Extract features from the image based on the SIFT method. More...
|
|
void | extractFeaturesORB (const mrpt::utils::CImage &img, CFeatureList &feats, const unsigned int init_ID=0, const unsigned int nDesiredFeatures=0, const TImageROI &ROI=TImageROI()) const |
| Extract features from the image based on the ORB method. More...
|
|
void | extractFeaturesSURF (const mrpt::utils::CImage &img, CFeatureList &feats, unsigned int init_ID=0, unsigned int nDesiredFeatures=0, const TImageROI &ROI=TImageROI()) const |
| Extract features from the image based on the SURF method. More...
|
|
void | extractFeaturesFAST (const mrpt::utils::CImage &img, CFeatureList &feats, unsigned int init_ID=0, unsigned int nDesiredFeatures=0, const TImageROI &ROI=TImageROI(), const mrpt::math::CMatrixBool *mask=NULL) const |
| Extract features from the image based on the FAST method. More...
|
|
void | extractFeaturesFASTER_N (const int N, const mrpt::utils::CImage &img, CFeatureList &feats, unsigned int init_ID=0, unsigned int nDesiredFeatures=0, const TImageROI &ROI=TImageROI()) const |
| Edward's "FASTER & Better" detector, N=9,10,12. More...
|
|
void * | my_scale_space_extrema (CFeatureList &featList, void *dog_pyr, int octvs, int intvls, double contr_thr, int curv_thr, void *storage) const |
| Computes extrema in the scale space. More...
|
|
void | my_adjust_for_img_dbl (void *features) const |
| Adjust scale if the image was initially doubled. More...
|
|
void | getTimesExtrema (void *dog_pyr, int octvs, int intvls, float row, float col, unsigned int &nMin, unsigned int &nMax) const |
| Gets the number of times that a point in the image is higher or lower than the surroundings in the image-scale space. More...
|
|
double | getLaplacianValue (void *dog_pyr, int octvs, int intvls, float row, float col) const |
| Computes the Laplacian value of the feature in the corresponing image in the pyramid. More...
|
|
void | insertCvSeqInCFeatureList (void *features, CFeatureList &list, unsigned int init_ID=0) const |
| Append a sequence of openCV features into an MRPT feature list. More...
|
|
void | convertCvSeqInCFeatureList (void *features, CFeatureList &list, unsigned int init_ID=0, const TImageROI &ROI=TImageROI()) const |
| Converts a sequence of openCV features into an MRPT feature list. More...
|
|