MRPT  2.0.0
CFeatureExtraction.h
Go to the documentation of this file.
1 /* +---------------------------------------------------------------------------+
2  | Mobile Robot Programming Toolkit (MRPT) |
3  | https://www.mrpt.org/ |
4  | |
5  | Copyright (c) 2005-2020, Individual contributors, see AUTHORS file |
6  | See: https://www.mrpt.org/Authors - All rights reserved. |
7  | Released under BSD License. See details in https://www.mrpt.org/License |
8  +---------------------------------------------------------------------------+
9  */
10 #pragma once
11 
12 #include <mrpt/img/CImage.h>
14 #include <mrpt/vision/CFeature.h>
15 #include <mrpt/vision/TKeyPoint.h>
16 #include <mrpt/vision/utils.h>
17 
18 namespace mrpt::vision
19 {
20 /** The central class from which images can be analyzed in search of different
21  *kinds of interest points and descriptors computed for them.
22  * To extract features from an image, create an instance of
23  *CFeatureExtraction,
24  * fill out its CFeatureExtraction::options field, including the algorithm to
25  *use (see
26  * CFeatureExtraction::TOptions::featsType), and call
27  *CFeatureExtraction::detectFeatures.
28  * This will return a set of features of the class mrpt::vision::CFeature,
29  *which include
30  * details for each interest point as well as the desired descriptors and/or
31  *patches.
32  *
33  * By default, a 21x21 patch is extracted for each detected feature. If the
34  *patch is not needed,
35  * set patchSize to 0 in CFeatureExtraction::options
36  *
37  * The implemented <b>detection</b> algorithms are (see
38  *CFeatureExtraction::TOptions::featsType):
39  * - KLT (Kanade-Lucas-Tomasi): A detector (no descriptor vector).
40  * - Harris: A detector (no descriptor vector).
41  * - BCD (Binary Corner Detector): A detector (no descriptor vector) (Not
42  *implemented yet).
43  * - SIFT: An implementation of the SIFT detector and descriptor. The
44  *implemention may be selected with
45  *CFeatureExtraction::TOptions::SIFTOptions::implementation.
46  * - SURF: OpenCV's implementation of SURF detector and descriptor.
47  * - The FAST feature detector (OpenCV's implementation)
48  *
49  * Additionally, given a list of interest points onto an image, the following
50  * <b>descriptors</b> can be computed for each point by calling
51  *CFeatureExtraction::computeDescriptors :
52  * - SIFT descriptor (Lowe's descriptors).
53  * - SURF descriptor (OpenCV's implementation - Requires OpenCV 1.1.0 from
54  *SVN
55  *or later).
56  * - Intensity-domain spin images (SpinImage): Creates a vector descriptor
57  *with the 2D histogram as a single row.
58  * - A circular patch in polar coordinates (Polar images): The matrix
59  *descriptor is a 2D polar image centered at the interest point.
60  * - A log-polar image patch (Log-polar images): The matrix descriptor is
61  *the
62  *2D log-polar image centered at the interest point.
63  *
64  *
65  * \note The descriptor "Intensity-domain spin images" is described in "A
66  *sparse texture representation using affine-invariant regions", S Lazebnik, C
67  *Schmid, J Ponce, 2003 IEEE Computer Society Conference on Computer Vision.
68  * \sa mrpt::vision::CFeature
69  * \ingroup mrptvision_features
70  */
72 {
73  public:
74  /** Timelogger: disabled by default */
76 
78  {
79  LoweBinary = 0 /* obsolete */,
80  CSBinary /* obsolete */,
81  VedaldiBinary /* obsolete */,
82  Hess /* obsolete */,
83  OpenCV /* DEFAULT */
84  };
85 
86  /** The set of parameters for all the detectors & descriptor algorithms */
88  {
89  TOptions() = default;
90  TOptions(const TKeyPointMethod ft) : TOptions() { featsType = ft; }
91 
92  // See base docs
93  void loadFromConfigFile(
95  const std::string& s) override;
96  void dumpToTextStream(std::ostream& out) const override;
97 
98  /** Type of the extracted features */
100 
101  /** Size of the patch to extract, or 0 if no patch is desired
102  * (default=21).
103  */
104  unsigned int patchSize{21};
105 
106  /** Whether to use a mask for determining the regions where not to look
107  * for keypoints (default=false).
108  */
109  bool useMask{false};
110 
111  /** Whether to add the found features to the input feature list or clear
112  * it before adding them (default=false).
113  */
114  bool addNewFeatures{false};
115 
116  /** Indicates if subpixel accuracy is desired for the extracted points
117  * (only applicable to KLT and Harris features)
118  */
119  bool FIND_SUBPIXEL{true};
120 
121  /** KLT Options */
122  struct TKLTOptions
123  {
124  /** size of the block of pixels used */
125  int radius{5};
126  /** (default=0.05f) for rejecting weak local maxima
127  * (with min_eig < threshold*max(eig_image) */
128  float threshold{0.05f};
129  /** minimum distance between features */
130  float min_distance{5.0f};
131  } KLTOptions;
132 
133  /** Harris Options */
135  {
136  /** (default=0.005) for rejecting weak local maxima
137  * (with min_eig < threshold*max(eig_image)) */
138  float threshold{0.005f};
139  /** standard deviation for the gaussian smoothing function */
140  float sigma{3.0f};
141  /** size of the block of pixels used */
142  int radius{3};
143  /** minimum distance between features */
144  float min_distance{5.0f};
145  double k{0.04};
146  } harrisOptions;
147 
148  /** BCD Options */
149  struct TBCDOptions
150  {
151  } BCDOptions;
152 
153  /** FAST Options */
155  {
156  /** default= 20 */
157  int threshold = 20;
158  /** (default=5) minimum distance between features (in pixels) */
159  unsigned int min_distance = 5;
160  /** Default = true */
161  bool nonmax_suppression{true};
162  /** (default=false) If true, use CImage::KLT_response to compute the
163  * response at each point.
164  */
165  bool use_KLT_response{false};
166  /** Used if use_KLT_response==true */
168  } FASTOptions;
169 
170  /** ORB Options */
171  struct TORBOptions
172  {
173  TORBOptions() = default;
174  size_t n_levels{1};
175  size_t min_distance{0};
176  float scale_factor{1.2f};
177  bool extract_patch{false};
178  } ORBOptions;
179 
180  /** SIFT Options */
182  {
183  TSIFTOptions() = default;
185  int octaveLayers{3};
186  double threshold{0.04}; //!< default= 0.04
187  double edgeThreshold{10}; //!< default= 10
188  } SIFTOptions;
189 
190  /** SURF Options */
192  {
193  TSURFOptions() = default;
194 
195  /** Compute the rotation invariant SURF */
196  bool rotation_invariant{true};
198  int nOctaves{2};
200  } SURFOptions;
201 
202  /** SpinImages Options */
204  {
205  /** Number of bins in the "intensity" axis of the 2D histogram
206  * (default=10). */
207  unsigned int hist_size_intensity{10};
208  /** Number of bins in the "distance" axis of the 2D histogram
209  * (default=10).*/
210  unsigned int hist_size_distance{10};
211  /** Standard deviation in "distance", used for the "soft histogram"
212  * (default=0.4 pixels) */
213  float std_dist{.4f};
214  /** Standard deviation in "intensity", used for the "soft histogram"
215  * (default=20 units [0,255]) */
216  float std_intensity{20};
217  /** Maximum radius of the area of which the histogram is built, in
218  * pixel units (default=20 pixels) */
219  unsigned int radius{20};
221 
222  /** PolarImagesOptions options */
224  {
225  /** Number of bins in the "angular" axis of the polar image
226  * (default=8). */
227  unsigned int bins_angle{8};
228  /** Number of bins in the "distance" axis of the polar image
229  * (default=6). */
230  unsigned int bins_distance{6};
231  /** Maximum radius of the area of which the polar image is built, in
232  * pixel units (default=20 pixels) */
233  unsigned int radius{20};
235 
236  /** LogPolarImagesOptions Options
237  */
239  {
240  /** Maximum radius of the area of which the log polar image is
241  * built, in pixel units (default=30 pixels) */
242  unsigned int radius{30};
243  /** (default=16) Log-Polar image patch will have dimensions WxH,
244  * with: W=num_angles, H= rho_scale*log(radius) */
245  unsigned int num_angles{16};
246  /** (default=5) Log-Polar image patch will have dimensions WxH,
247  * with: W=num_angles, H=rho_scale * log(radius) */
248  double rho_scale{5};
250 
251  // # added by Raghavender Sahdev
252  /** AKAZEOptions Options */
254  {
255  /** AKAZE::DESCRIPTOR_MLDB maps to 5 in open cv;
256  * http://docs.opencv.org/trunk/d8/d30/classcv_1_1AKAZE.html */
260  float threshold{0.001f};
261  int nOctaves{4};
263  /** KAZE::DIFF_PM_G2 maps to 1;
264  * http://docs.opencv.org/trunk/d3/d61/classcv_1_1KAZE.html */
265  int diffusivity{1};
266  } AKAZEOptions;
267 
268  /** LSDOptions Options */
269  struct TLSDOptions
270  {
271  int scale{2};
272  int nOctaves{1};
273  } LSDOptions;
274 
275  /** BLDOptions Descriptor Options */
276  struct TBLDOptions
277  {
278  int ksize_{11};
280  int widthOfBand{7};
281  int numOfOctave{1};
282  } BLDOptions;
283 
284  /** LATCHOptions Descriptor */
286  {
287  int bytes{32};
288  bool rotationInvariance{true};
290  } LATCHOptions;
291  };
292 
293  /** Set all the parameters of the desired method here before calling
294  * detectFeatures() */
296 
297  /** Extract features from the image based on the method defined in
298  * TOptions. \param img (input) The image from where to extract the
299  * images. \param feats (output) A complete list of features (containing
300  * a patch for each one of them if options.patchsize > 0). \param
301  * nDesiredFeatures (op. input) Number of features to be extracted.
302  * Default: all possible.
303  *
304  * \sa computeDescriptors
305  */
306  void detectFeatures(
307  const mrpt::img::CImage& img, CFeatureList& feats,
308  const unsigned int init_ID = 0, const unsigned int nDesiredFeatures = 0,
309  const TImageROI& ROI = TImageROI());
310 
311  /** Compute one (or more) descriptors for the given set of interest
312  * points onto the image, which may have been filled out manually or
313  * from \a detectFeatures \param in_img (input) The image from where to
314  * compute the descriptors. \param inout_features (input/output) The
315  * list of features whose descriptors are going to be computed. \param
316  * in_descriptor_list (input) The bitwise OR of one or several
317  * descriptors defined in TDescriptorType.
318  *
319  * Each value in "in_descriptor_list" represents one descriptor to be
320  * computed, for example:
321  * \code
322  * // This call will compute both, SIFT and Spin-Image descriptors
323  * for a list of feature points lstFeats. fext.computeDescriptors(img,
324  * lstFeats, descSIFT | descSpinImages ); \endcode
325  *
326  * \note The SIFT descriptors for already located features can only be
327  * computed through the Hess and
328  * CSBinary implementations which may be specified in
329  * CFeatureExtraction::TOptions::SIFTOptions.
330  *
331  * \note This call will also use additional parameters from \a options
332  */
333  void computeDescriptors(
334  const mrpt::img::CImage& in_img, CFeatureList& inout_features,
335  TDescriptorType in_descriptor_list);
336 
337  private:
338  /** Compute the SIFT descriptor of the provided features into the input
339  image
340  * \param in_img (input) The image from where to compute the descriptors.
341  * \param in_features (input/output) The list of features whose
342  descriptors are going to be computed.
343  *
344  * \note The SIFT descriptors for already located features can only be
345  computed through the Hess and
346  CSBinary implementations which may be specified in
347  CFeatureExtraction::TOptions::SIFTOptions.
348  */
350  const mrpt::img::CImage& in_img, CFeatureList& in_features);
351 
352  /** Compute the SURF descriptor of the provided features into the input
353  * image
354  * \param in_img (input) The image from where to compute the
355  * descriptors. \param in_features (input/output) The list of features
356  * whose descriptors are going to be computed.
357  */
359  const mrpt::img::CImage& in_img, CFeatureList& in_features);
360 
361  /** Compute the ORB descriptor of the provided features into the input
362  * image \param in_img (input) The image from where to compute the
363  * descriptors. \param in_features (input/output) The list of features
364  * whose descriptors are going to be computed.
365  */
367  const mrpt::img::CImage& in_img, CFeatureList& in_features);
368 
369  /** Compute the intensity-domain spin images descriptor of the provided
370  * features into the input image
371  * \param in_img (input) The image from where to compute the
372  * descriptors. \param in_features (input/output) The list of features
373  * whose descriptors are going to be computed.
374  *
375  * \note Additional parameters from
376  * CFeatureExtraction::TOptions::SpinImagesOptions are used in this
377  * method.
378  */
380  const mrpt::img::CImage& in_img, CFeatureList& in_features);
381 
382  /** Compute a polar-image descriptor of the provided features into the
383  * input image \param in_img (input) The image from where to compute the
384  * descriptors. \param in_features (input/output) The list of features
385  * whose descriptors are going to be computed.
386  *
387  * \note Additional parameters from
388  * CFeatureExtraction::TOptions::PolarImagesOptions are used in this
389  * method.
390  */
392  const mrpt::img::CImage& in_img, CFeatureList& in_features);
393 
394  /** Compute a log-polar image descriptor of the provided features into
395  * the input image \param in_img (input) The image from where to compute
396  * the descriptors. \param in_features (input/output) The list of
397  * features whose descriptors are going to be computed.
398  *
399  * \note Additional parameters from
400  * CFeatureExtraction::TOptions::LogPolarImagesOptions are used in this
401  * method.
402  */
404  const mrpt::img::CImage& in_img, CFeatureList& in_features);
405  /** Compute a BLD descriptor of the provided features into the input
406  * image \param in_img (input) The image from where to compute the
407  * descriptors. \param in_features (input/output) The list of features
408  * whose descriptors are going to be computed.
409  *
410  * \note Additional parameters from
411  * CFeatureExtraction::TOptions::LogPolarImagesOptions are used in this
412  * method.
413  */
415  const mrpt::img::CImage& in_img, CFeatureList& in_features);
416  /** Compute a LATCH descriptor of the provided features into the input
417  * image \param in_img (input) The image from where to compute the
418  * descriptors. \param in_features (input/output) The list of features
419  * whose descriptors are going to be computed.
420  *
421  * \note Additional parameters from
422  * CFeatureExtraction::TOptions::LogPolarImagesOptions are used in this
423  * method.
424  */
426  const mrpt::img::CImage& in_img, CFeatureList& in_features);
427 
428  /** Extract features from the image based on the KLT method.
429  * \param img The image from where to extract the images.
430  * \param feats The list of extracted features.
431  * \param nDesiredFeatures Number of features to be extracted. Default:
432  * authomatic.
433  */
434  void extractFeaturesKLT(
435  const mrpt::img::CImage& img, CFeatureList& feats,
436  unsigned int init_ID = 0, unsigned int nDesiredFeatures = 0,
437  const TImageROI& ROI = TImageROI());
438 
439  // ------------------------------------------------------------------------------------
440  // SIFT
441  // ------------------------------------------------------------------------------------
442  /** Extract features from the image based on the SIFT method.
443  * \param img The image from where to extract the images.
444  * \param feats The list of extracted features.
445  * \param nDesiredFeatures Number of features to be extracted. Default:
446  * authomatic.
447  * \param ROI (op. input) Region of Interest. Default: All the image.
448  */
449  void extractFeaturesSIFT(
450  const mrpt::img::CImage& img, CFeatureList& feats,
451  unsigned int init_ID = 0, unsigned int nDesiredFeatures = 0,
452  const TImageROI& ROI = TImageROI());
453 
454  // ------------------------------------------------------------------------------------
455  // ORB
456  // ------------------------------------------------------------------------------------
457  /** Extract features from the image based on the ORB method.
458  * \param img The image from where to extract the images.
459  * \param feats The list of extracted features.
460  * \param nDesiredFeatures Number of features to be extracted. Default:
461  * authomatic.
462  */
463  void extractFeaturesORB(
464  const mrpt::img::CImage& img, CFeatureList& feats,
465  const unsigned int init_ID = 0, const unsigned int nDesiredFeatures = 0,
466  const TImageROI& ROI = TImageROI());
467 
468  // ------------------------------------------------------------------------------------
469  // SURF
470  // ------------------------------------------------------------------------------------
471  /** Extract features from the image based on the SURF method.
472  * \param img The image from where to extract the images.
473  * \param feats The list of extracted features.
474  * \param nDesiredFeatures Number of features to be extracted. Default:
475  * authomatic.
476  */
477  void extractFeaturesSURF(
478  const mrpt::img::CImage& img, CFeatureList& feats,
479  unsigned int init_ID = 0, unsigned int nDesiredFeatures = 0,
480  const TImageROI& ROI = TImageROI());
481 
482  // ------------------------------------------------------------------------------------
483  // FAST
484  // ------------------------------------------------------------------------------------
485  /** Extract features from the image based on the FAST method (OpenCV impl.)
486  * \param img The image from where to extract the images.
487  * \param feats The list of extracted features.
488  * \param nDesiredFeatures Number of features to be extracted. Default:
489  * authomatic.
490  */
491  void extractFeaturesFAST(
492  const mrpt::img::CImage& img, CFeatureList& feats,
493  unsigned int init_ID = 0, unsigned int nDesiredFeatures = 0);
494 
495  // # added by Raghavender Sahdev
496  //-------------------------------------------------------------------------------------
497  // AKAZE
498  //-------------------------------------------------------------------------------------
499  /** Extract features from the image based on the AKAZE method.
500  * \param img The image from where to extract the images.
501  * \param feats The list of extracted features.
502  * \param nDesiredFeatures Number of features to be extracted. Default:
503  * authomatic.
504  */
506  const mrpt::img::CImage& inImg, CFeatureList& feats,
507  unsigned int init_ID, unsigned int nDesiredFeatures,
508  const TImageROI& ROI = TImageROI());
509 
510  //-------------------------------------------------------------------------------------
511  // LSD
512  //-------------------------------------------------------------------------------------
513  /** Extract features from the image based on the LSD method.
514  * \param img The image from where to extract the images.
515  * \param feats The list of extracted features.
516  * \param nDesiredFeatures Number of features to be extracted. Default:
517  * authomatic.
518  */
519  void extractFeaturesLSD(
520  const mrpt::img::CImage& inImg, CFeatureList& feats,
521  unsigned int init_ID, unsigned int nDesiredFeatures,
522  const TImageROI& ROI = TImageROI());
523 
524 }; // end of class
525 } // namespace mrpt::vision
bool rotation_invariant
Compute the rotation invariant SURF.
struct mrpt::vision::CFeatureExtraction::TOptions::TLATCHOptions LATCHOptions
void internal_computeSiftDescriptors(const mrpt::img::CImage &in_img, CFeatureList &in_features)
Compute the SIFT descriptor of the provided features into the input image.
struct mrpt::vision::CFeatureExtraction::TOptions::TFASTOptions FASTOptions
struct mrpt::vision::CFeatureExtraction::TOptions::TLogPolarImagesOptions LogPolarImagesOptions
int descriptor_type
AKAZE::DESCRIPTOR_MLDB maps to 5 in open cv; http://docs.opencv.org/trunk/d8/d30/classcv_1_1AKAZE.html.
float threshold
(default=0.005) for rejecting weak local maxima (with min_eig < threshold*max(eig_image)) ...
void loadFromConfigFile(const mrpt::config::CConfigFileBase &c, const std::string &s) override
This method load the options from a ".ini"-like file or memory-stored string list.
void extractFeaturesKLT(const mrpt::img::CImage &img, CFeatureList &feats, unsigned int init_ID=0, unsigned int nDesiredFeatures=0, const TImageROI &ROI=TImageROI())
Extract features from the image based on the KLT method.
bool useMask
Whether to use a mask for determining the regions where not to look for keypoints (default=false)...
This is a virtual base class for sets of options than can be loaded from and/or saved to configuratio...
void extractFeaturesSURF(const mrpt::img::CImage &img, CFeatureList &feats, unsigned int init_ID=0, unsigned int nDesiredFeatures=0, const TImageROI &ROI=TImageROI())
Extract features from the image based on the SURF method.
unsigned int radius
Maximum radius of the area of which the histogram is built, in pixel units (default=20 pixels) ...
void detectFeatures(const mrpt::img::CImage &img, CFeatureList &feats, const unsigned int init_ID=0, const unsigned int nDesiredFeatures=0, const TImageROI &ROI=TImageROI())
Extract features from the image based on the method defined in TOptions.
double rho_scale
(default=5) Log-Polar image patch will have dimensions WxH, with: W=num_angles, H=rho_scale * log(rad...
unsigned int num_angles
(default=16) Log-Polar image patch will have dimensions WxH, with: W=num_angles, H= rho_scale*log(rad...
TOptions options
Set all the parameters of the desired method here before calling detectFeatures() ...
void extractFeaturesLSD(const mrpt::img::CImage &inImg, CFeatureList &feats, unsigned int init_ID, unsigned int nDesiredFeatures, const TImageROI &ROI=TImageROI())
Extract features from the image based on the LSD method.
bool FIND_SUBPIXEL
Indicates if subpixel accuracy is desired for the extracted points (only applicable to KLT and Harris...
The set of parameters for all the detectors & descriptor algorithms.
struct mrpt::vision::CFeatureExtraction::TOptions::TBLDOptions BLDOptions
void dumpToTextStream(std::ostream &out) const override
This method should clearly display all the contents of the structure in textual form, sending it to a std::ostream.
bool use_KLT_response
(default=false) If true, use CImage::KLT_response to compute the response at each point...
void internal_computeSurfDescriptors(const mrpt::img::CImage &in_img, CFeatureList &in_features)
Compute the SURF descriptor of the provided features into the input image.
unsigned int min_distance
(default=5) minimum distance between features (in pixels)
struct mrpt::vision::CFeatureExtraction::TOptions::TORBOptions ORBOptions
float std_dist
Standard deviation in "distance", used for the "soft histogram" (default=0.4 pixels) ...
A structure for defining a ROI within an image.
float min_distance
minimum distance between features
struct mrpt::vision::CFeatureExtraction::TOptions::TLSDOptions LSDOptions
This class allows loading and storing values and vectors of different types from a configuration text...
float std_intensity
Standard deviation in "intensity", used for the "soft histogram" (default=20 units [0...
struct mrpt::vision::CFeatureExtraction::TOptions::TBCDOptions BCDOptions
mrpt::system::CTimeLogger profiler
Timelogger: disabled by default.
struct mrpt::vision::CFeatureExtraction::TOptions::TSpinImagesOptions SpinImagesOptions
unsigned int bins_distance
Number of bins in the "distance" axis of the polar image (default=6).
struct mrpt::vision::CFeatureExtraction::TOptions::TPolarImagesOptions PolarImagesOptions
float min_distance
minimum distance between features
TKeyPointMethod
Types of key point detectors.
TDescriptorType
The bitwise OR combination of values of TDescriptorType are used in CFeatureExtraction::computeDescri...
void internal_computeORBDescriptors(const mrpt::img::CImage &in_img, CFeatureList &in_features)
Compute the ORB descriptor of the provided features into the input image.
Classes for computer vision, detectors, features, etc.
Definition: CDifodo.h:17
float threshold
(default=0.05f) for rejecting weak local maxima (with min_eig < threshold*max(eig_image) ...
struct mrpt::vision::CFeatureExtraction::TOptions::THarrisOptions harrisOptions
TKeyPointMethod featsType
Type of the extracted features.
void internal_computeLATCHDescriptors(const mrpt::img::CImage &in_img, CFeatureList &in_features)
Compute a LATCH descriptor of the provided features into the input image.
void extractFeaturesORB(const mrpt::img::CImage &img, CFeatureList &feats, const unsigned int init_ID=0, const unsigned int nDesiredFeatures=0, const TImageROI &ROI=TImageROI())
Extract features from the image based on the ORB method.
A list of visual features, to be used as output by detectors, as input/output by trackers, etc.
Definition: CFeature.h:275
void extractFeaturesAKAZE(const mrpt::img::CImage &inImg, CFeatureList &feats, unsigned int init_ID, unsigned int nDesiredFeatures, const TImageROI &ROI=TImageROI())
Extract features from the image based on the AKAZE method.
void internal_computePolarImageDescriptors(const mrpt::img::CImage &in_img, CFeatureList &in_features)
Compute a polar-image descriptor of the provided features into the input image.
int diffusivity
KAZE::DIFF_PM_G2 maps to 1; http://docs.opencv.org/trunk/d3/d61/classcv_1_1KAZE.html.
void internal_computeLogPolarImageDescriptors(const mrpt::img::CImage &in_img, CFeatureList &in_features)
Compute a log-polar image descriptor of the provided features into the input image.
struct mrpt::vision::CFeatureExtraction::TOptions::TAKAZEOptions AKAZEOptions
float sigma
standard deviation for the gaussian smoothing function
A versatile "profiler" that logs the time spent within each pair of calls to enter(X)-leave(X), among other stats.
mrpt::vision::TStereoCalibResults out
struct mrpt::vision::CFeatureExtraction::TOptions::TSIFTOptions SIFTOptions
unsigned int hist_size_intensity
Number of bins in the "intensity" axis of the 2D histogram (default=10).
unsigned int radius
Maximum radius of the area of which the polar image is built, in pixel units (default=20 pixels) ...
struct mrpt::vision::CFeatureExtraction::TOptions::TKLTOptions KLTOptions
void internal_computeBLDLineDescriptors(const mrpt::img::CImage &in_img, CFeatureList &in_features)
Compute a BLD descriptor of the provided features into the input image.
Kanade-Lucas-Tomasi feature [SHI&#39;94].
unsigned int bins_angle
Number of bins in the "angular" axis of the polar image (default=8).
void extractFeaturesSIFT(const mrpt::img::CImage &img, CFeatureList &feats, unsigned int init_ID=0, unsigned int nDesiredFeatures=0, const TImageROI &ROI=TImageROI())
Extract features from the image based on the SIFT method.
int KLT_response_half_win_size
Used if use_KLT_response==true.
void extractFeaturesFAST(const mrpt::img::CImage &img, CFeatureList &feats, unsigned int init_ID=0, unsigned int nDesiredFeatures=0)
Extract features from the image based on the FAST method (OpenCV impl.)
unsigned int patchSize
Size of the patch to extract, or 0 if no patch is desired (default=21).
void internal_computeSpinImageDescriptors(const mrpt::img::CImage &in_img, CFeatureList &in_features)
Compute the intensity-domain spin images descriptor of the provided features into the input image...
unsigned int radius
Maximum radius of the area of which the log polar image is built, in pixel units (default=30 pixels) ...
bool addNewFeatures
Whether to add the found features to the input feature list or clear it before adding them (default=f...
unsigned int hist_size_distance
Number of bins in the "distance" axis of the 2D histogram (default=10).
void computeDescriptors(const mrpt::img::CImage &in_img, CFeatureList &inout_features, TDescriptorType in_descriptor_list)
Compute one (or more) descriptors for the given set of interest points onto the image, which may have been filled out manually or from detectFeatures.
struct mrpt::vision::CFeatureExtraction::TOptions::TSURFOptions SURFOptions
A class for storing images as grayscale or RGB bitmaps.
Definition: img/CImage.h:148
The central class from which images can be analyzed in search of different kinds of interest points a...



Page generated by Doxygen 1.8.14 for MRPT 2.0.0 Git: b38439d21 Tue Mar 31 19:58:06 2020 +0200 at miƩ abr 1 00:50:30 CEST 2020