67     std::optional<mrpt::img::CImage> 
patch;
   110         std::optional<std::vector<uint8_t>> 
SIFT;
   113         std::optional<std::vector<float>> 
SURF;
   135         std::optional<std::vector<uint8_t>> 
ORB;
   139         std::optional<std::vector<uint8_t>> 
BLD;
   141         std::optional<std::vector<uint8_t>> 
LATCH;
   182         bool normalize_distances = 
true) 
const;
   187         const CFeature& oFeature, 
bool normalize_distances = 
true) 
const;
   192         const CFeature& oFeature, 
bool normalize_distances = 
true) 
const;
   197         const CFeature& oFeature, 
bool normalize_distances = 
true) 
const;
   207         const CFeature& oFeature, 
float& minDistAngle,
   208         bool normalize_distances = 
true) 
const;
   218         const CFeature& oFeature, 
float& minDistAngle,
   219         bool normalize_distances = 
true) 
const;
   229         const CFeature& oFeature, 
bool normalize_distances = 
true) 
const;
   233         const CFeature& oFeature, 
bool normalize_distances = 
true) 
const;
   252     void saveToTextFile(
const std::string& filename, 
bool APPEND = 
false);
   268         float& minDistAngle, 
bool normalize_distances, 
bool dont_shift_angle);
   291     void saveToTextFile(
const std::string& fileName, 
bool APPEND = 
false);
   318         const float x, 
const float y, 
double& max_dist) 
const;
   367         m_feats.emplace_back(std::move(f));
   397             return m_feats[idx].keypoint.pt.x;
   399             return m_feats[idx].keypoint.pt.y;
   405         const float* p1, 
const size_t idx_p2,
   406         [[maybe_unused]] 
size_t size)
 const   410         const float d0 = p1[0] - 
m_feats[idx_p2].keypoint.pt.x;
   411         const float d1 = p1[1] - 
m_feats[idx_p2].keypoint.pt.y;
   412         return d0 * d0 + d1 * d1;
   421     template <
typename BBOX>
   433         return m_feats[i].keypoint.pt.x;
   437         return m_feats[i].keypoint.pt.y;
   445         return m_feats[i].keypoint.response;
   449         return m_feats[i].isPointFeature();
   454         return m_feats[i].keypoint.track_status;
   473         m_feats[i].keypoint.response = r;
   477         m_feats[i].keypoint.octave = s;
   481         m_feats[i].keypoint.track_status = s;
 void updateMaxID(const TListIdx &idx)
Updates the value of the maximum ID of the features in the matched list, i.e. 
 
float descriptorDistanceTo(const CFeature &oFeature, TDescriptorType descriptorToUse=descAny, bool normalize_distances=true) const
Computes the Euclidean Distance between this feature's and other feature's descriptors, using the given descriptor or the first present one. 
 
const_reverse_iterator rend() const
 
uint8_t descriptorORBDistanceTo(const CFeature &oFeature) const
Computes the Hamming distance "this" and the "other" descriptor ORB descriptor. 
 
uint64_t TFeatureID
Definition of a feature ID. 
 
float descriptorSpinImgDistanceTo(const CFeature &oFeature, bool normalize_distances=true) const
Computes the Euclidean Distance between "this" and the "other" descriptors. 
 
bool hasDescriptorBLD() const
 
CFeatureList()=default
Constructor. 
 
TInternalFeatList::iterator iterator
 
std::optional< std::vector< uint8_t > > ORB
ORB feature descriptor. 
 
void loadFromTextFile(const std::string &fileName)
Save feature list to a text file. 
 
Non-defined feature (also used for Occupancy features) 
 
std::optional< std::vector< uint8_t > > BLD
BLD feature descriptor. 
 
bool hasDescriptorLogPolarImg() const
 
void setRightMaxID(const TFeatureID &rightID)
 
TKeyPointMethod type
Keypoint method used to detect this feature. 
 
TFeatureTrackStatus track_status
Status of the feature tracking process. 
 
void setFeatureX(size_t i, float x)
 
bool hasDescriptorSpinImg() const
 
void dumpToConsole() const
 
float descriptorSIFTDistanceTo(const CFeature &oFeature, bool normalize_distances=true) const
Computes the Euclidean Distance between "this" and the "other" descriptors. 
 
TFeatureID getFeatureID(size_t i) const
 
float getFeatureY(size_t i) const
 
float descriptorSURFDistanceTo(const CFeature &oFeature, bool normalize_distances=true) const
Computes the Euclidean Distance between "this" and the "other" descriptors. 
 
float getScale(size_t i) const
 
void setFeatureResponse(size_t i, float r)
 
void setMaxIDs(const TFeatureID &leftID, const TFeatureID &rightID)
 
bool hasDescriptorSIFT() const
 
bool isPointFeature(size_t i) const
 
const_iterator begin() const
 
TKeyPointMethod get_type() const
The type of the first feature in the list. 
 
CMatchedFeatureList()=default
 
void setTrackStatus(size_t i, TFeatureTrackStatus s)
 
const_reverse_iterator rbegin() const
 
Used in some methods to mean "any of the present descriptors". 
 
TKeyPointMethod get_type() const
The type of the first feature in the list. 
 
TInternalFeatList m_feats
The actual container with the list of features. 
 
A generic adaptor class for providing Nearest Neighbor (NN) lookup via the nanoflann library...
 
void setFeatureY(size_t i, float y)
 
const CFeature & operator[](const unsigned int index) const
 
reverse_iterator rbegin()
 
void push_back(const CFeature &f)
 
const_iterator end() const
 
void dumpToTextStream(std::ostream &out) const
Dump feature information into a text stream. 
 
TInternalFeatList::reverse_iterator reverse_iterator
 
bool polarImgsNoRotation
If set to true (default=false) the call to "descriptorDistanceTo" will not consider all the rotations...
 
double depth
The estimated depth in 3D of this feature wrt the camera. 
 
void getBothFeatureLists(CFeatureList &list1, CFeatureList &list2)
Returns the matching features as two separate CFeatureLists. 
 
void saveToTextFile(const std::string &filename, bool APPEND=false)
Save the feature to a text file in this format: "%% Dump of mrpt::vision::CFeatureList. Each line format is:\n" "%% ID TYPE X Y ORIENTATION SCALE TRACK_STATUS RESPONSE HAS_SIFT [SIFT] HAS_SURF [SURF] HAS_MULTI [MULTI_i] HAS_ORB [ORB]" "%% |---------------------- feature ------------------| |---------------------- descriptors ------------------------|" "%% with:\n" "%%  TYPE  : The used detector: 0:KLT, 1: Harris, 2: BCD, 3: SIFT, 4: SURF, 5: Beacon, 6: FAST, 7: ORB\n" "%% HAS_* : 1 if a descriptor of that type is associated to the feature. 
 
Inactive (right after detection, and before being tried to track) 
 
std::optional< mrpt::img::CImage > patch
A patch of the image surrounding the feature. 
 
void getMaxID(const TListIdx &idx, TFeatureID &firstListID, TFeatureID &secondListID)
Returns the maximum ID of the features in the list. 
 
CFeature & operator[](const unsigned int index)
 
TKeyPointMethod
Types of key point detectors. 
 
TDescriptorType
The bitwise OR combination of values of TDescriptorType are used in CFeatureExtraction::computeDescri...
 
All the possible descriptors this feature may have. 
 
Classes for computer vision, detectors, features, etc. 
 
uint16_t SpinImg_range_rows
The number of rows (corresponding to range bins in the 2D histogram) of the original matrix from whic...
 
TInternalFeatList::const_reverse_iterator const_reverse_iterator
 
A generic 2D feature from an image, extracted with CFeatureExtraction Each feature may have one or mo...
 
float descriptorLATCHDistanceTo(const CFeature &oFeature, bool normalize_distances=true) const
Computes the Euclidean Distance between "this" and the "other" descriptors. 
 
virtual ~CMatchedFeatureList()=default
 
static float internal_distanceBetweenPolarImages(const mrpt::math::CMatrixF &desc1, const mrpt::math::CMatrixF &desc2, float &minDistAngle, bool normalize_distances, bool dont_shift_angle)
Internal function used by "descriptorLogPolarImgDistanceTo" and "descriptorPolarImgDistanceTo". 
 
bool kdtree_get_bbox([[maybe_unused]] BBOX &bb) const
 
iterator erase(const iterator &it)
 
bool hasDescriptorORB() const
 
void saveToTextFile(const std::string &fileName)
Save list of matched features to a text file. 
 
const CFeature * getByID(const TFeatureID &ID) const
Get a reference to a Feature from its ID. 
 
A list of visual features, to be used as output by detectors, as input/output by trackers, etc. 
 
const CFeature * nearest(const float x, const float y, double &max_dist) const
Get a reference to the nearest feature to the a given 2D point (version returning distance to closest...
 
uint8_t user_flags
A field for any other flags needed by the user (this has not a predefined meaning) ...
 
float kdtree_get_pt(const size_t idx, int dim) const
Returns the dim'th component of the idx'th point in the class: 
 
void mark_as_outdated() const
 
mrpt::math::TPoint3D p3D
camera that took its image 
 
TInternalFeatList::const_iterator const_iterator
 
#define MRPT_DECLARE_TTYPENAME_PTR_NAMESPACE(_TYPE, __NS)
 
std::optional< mrpt::math::CMatrixF > PolarImg
A polar image centered at the interest point. 
 
float getFeatureResponse(size_t i) const
 
bool hasDescriptorLATCH() const
 
void saveToTextFile(const std::string &fileName, bool APPEND=false)
Save feature list to a text file. 
 
float response
A measure of the "goodness" of the feature. 
 
virtual ~CFeatureList()
Virtual destructor. 
 
bool getFirstDescriptorAsMatrix(mrpt::math::CMatrixFloat &desc) const
Return the first found descriptor, as a matrix. 
 
void setScale(size_t i, uint8_t s)
 
This class is a "CSerializable" wrapper for "CMatrixFloat". 
 
This is the global namespace for all Mobile Robot Programming Toolkit (MRPT) libraries. 
 
TKeyPointMethod get_type() const
Get the type of the feature. 
 
const_iterator begin() const
 
void setFeatureID(size_t i, TFeatureID id)
 
std::optional< std::vector< uint8_t > > SIFT
SIFT feature descriptor. 
 
mrpt::vision::TStereoCalibResults out
 
#define ASSERTDEB_(f)
Defines an assertion mechanism - only when compiled in debug. 
 
const CFeature * getByID(const TFeatureID &ID, const TListIdx &idx)
Returns a smart pointer to the feature with the provided ID or a empty one if not found...
 
float descriptorPolarImgDistanceTo(const CFeature &oFeature, float &minDistAngle, bool normalize_distances=true) const
Returns the minimum Euclidean Distance between "this" and the "other" polar image descriptor...
 
std::optional< std::vector< float > > SURF
SURF feature descriptor. 
 
void kdtree_mark_as_outdated() const
To be called by child classes when KD tree data changes. 
 
void setLeftMaxID(const TFeatureID &leftID)
Explicitly set the max IDs values to certain values. 
 
float kdtree_distance(const float *p1, const size_t idx_p2, [[maybe_unused]] size_t size) const
Returns the distance between the vector "p1[0:size-1]" and the data point with index "idx_p2" stored ...
 
float patchCorrelationTo(const CFeature &oFeature) const
Computes the normalized cross-correlation between the patches of this and another feature (normalized...
 
The virtual base class which provides a unified interface for all persistent objects in MRPT...
 
TFeatureID getMaxID() const
Get the maximum ID into the list. 
 
void setFeatureYf(size_t i, float y)
 
#define DEFINE_SERIALIZABLE(class_name, NS)
This declaration must be inserted in all CSerializable classes definition, within the class declarati...
 
void setFeatureXf(size_t i, float x)
 
float y2[2]
Coordinates for a LSD Detector to represent a line. 
 
bool hasDescriptorPolarImg() const
 
float orientation
Main orientation of the feature. 
 
float descriptorLogPolarImgDistanceTo(const CFeature &oFeature, float &minDistAngle, bool normalize_distances=true) const
Returns the minimum Euclidean Distance between "this" and the "other" log-polar image descriptor...
 
~CFeature() override=default
 
This template class provides the basic functionality for a general 2D any-size, resizable container o...
 
float descriptorBLDDistanceTo(const CFeature &oFeature, bool normalize_distances=true) const
Computes the Euclidean Distance between "this" and the "other" descriptors. 
 
uint16_t patchSize
Size of the patch (patchSize x patchSize) (it must be an odd number) 
 
void mark_kdtree_as_outdated() const
Call this when the list of features has been modified so the KD-tree is marked as outdated...
 
double initialDepth
in the current frame 
 
void emplace_back(CFeature &&f)
 
float getFeatureX(size_t i) const
 
std::optional< std::vector< float > > SpinImg
The 2D histogram as a single row. 
 
std::optional< mrpt::math::CMatrixF > LogPolarImg
A log-polar image centered at the interest point. 
 
void copyListFrom(const CFeatureList &otherList)
Copies the content of another CFeatureList inside this one. 
 
TFeatureTrackStatus getTrackStatus(size_t i)
 
bool isPointFeature() const
Return false only for Blob detectors (SIFT, SURF) 
 
std::vector< CFeature > TInternalFeatList
 
bool hasDescriptorSURF() const
 
size_t kdtree_get_point_count() const
Must return the number of data points. 
 
std::optional< std::vector< uint8_t > > LATCH
LATCH feature descriptor.