27 template <
typename PIXEL_COORD_TYPE>
56 template <
typename COORD_TYPE>
63 template <
typename OTHER_TKeyPo
int>
83 template <
typename FEATURE>
105 template <
typename FEATURE>
121 if (this->
empty())
return 0;
149 using iterator =
typename TFeatureVector::iterator;
154 typename TFeatureVector::const_reverse_iterator;
184 inline const FEATURE&
operator[](
const std::size_t index)
const 219 return m_feats[i].track_status;
282 template <
typename FEATURE_LIST>
298 template <
typename FEAT>
330 const float* p1,
const size_t idx_p2,
331 [[maybe_unused]]
size_t size)
const 335 const float d0 = p1[0] -
m_data[idx_p2].pt.x;
336 const float d1 = p1[1] -
m_data[idx_p2].pt.y;
337 return d0 * d0 + d1 * d1;
346 template <
typename BBOX>
reverse_iterator rbegin()
const_reverse_iterator rend() const
const FEATURE & operator[](const std::size_t index) const
TKeyPoint_templ()=default
Default constructor, leaves all fields uninitialized.
Helper class: KD-tree search class for vector<KeyPoint>: Call mark_as_outdated() to force rebuilding ...
uint64_t TFeatureID
Definition of a feature ID.
const FEATURE_LIST & m_data
CFeatureListKDTree(const std::vector< FEAT > &data)
iterator erase(const iterator &it)
size_t size(const MATRIXLIKE &m, const int dim)
typename TFeatureVector::reverse_iterator reverse_iterator
typename TFeatureVector::iterator iterator
typename TFeatureVector::const_iterator const_iterator
void setFeatureXf(size_t i, float x)
TKeyPointTraits< FEATURE >::coord_t getFeatureY(size_t i) const
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 ...
A pair (x,y) of pixel coordinates (subpixel resolution).
float kdtree_get_pt(const size_t idx, int dim) const
Returns the dim'th component of the idx'th point in the class:
TFeatureID ID
ID of the feature.
static coord_t f2coord(float f)
TKeyPointTraits< FEATURE >::coord_t getFeatureX(size_t i) const
mrpt::math::CMatrixBool m_occupied_sections
TFeatureTrackStatus track_status
Status of the feature tracking process.
Simple structure for image key points.
bool kdtree_get_bbox([[maybe_unused]] BBOX &bb) const
void emplace_back(const int x, const int y)
FEATURE & operator[](const std::size_t index)
A helper struct to sort keypoints by their response: It can be used with these types: ...
A generic adaptor class for providing Nearest Neighbor (NN) lookup via the nanoflann library...
void setScale(size_t i, float s)
float d2f(const double d)
shortcut for static_cast<float>(double)
void push_back(const FEATURE &f)
const FEATURE & front() const
Inactive (right after detection, and before being tried to track)
typename TFeatureVector::const_reverse_iterator const_reverse_iterator
TFeatureVector m_feats
The actual container with the list of features.
std::vector< size_t > m_first_index_per_row
A LUT of the first feature index per row, to efficiently look for neighbors, etc. ...
bool isPointFeature([[maybe_unused]] size_t i) const
void setTrackStatus(size_t i, TFeatureTrackStatus s)
const TFeatureVector & getVector() const
Returns a const ref to the actual std::vector<> container.
Classes for computer vision, detectors, features, etc.
void setFeatureY(size_t i, typename TKeyPointTraits< FEATURE >::coord_t y)
const_reverse_iterator rbegin() const
const FEATURE & back() const
typename mrpt::img::TPixelCoordf ::pixel_coord_t pixel_coord_t
The type of pt.x and pt.y.
void keep_max(T &var, const K test_val)
If the second argument is above the first one, set the first argument to this higher value...
void setFeatureID(size_t i, TFeatureID id)
float getFeatureResponse(size_t i) const
void mark_as_outdated() const
std::vector< size_t > & getFirstIndexPerRowLUT()
TFeatureID getMaxID() const
Returns the maximum ID of all features in the list, or 0 if it's empty.
void setFeatureX(size_t i, typename TKeyPointTraits< FEATURE >::coord_t x)
A list of image features using the structure TKeyPoint for each feature Users normally will use direc...
const_iterator begin() const
#define ASSERTDEB_(f)
Defines an assertion mechanism - only when compiled in debug.
std::vector< TKeyPoint > TFeatureVector
void kdtree_mark_as_outdated() const
To be called by child classes when KD tree data changes.
TKeyPoint_templ(const COORD_TYPE x, const COORD_TYPE y)
Constructor that only sets the pt.
const std::vector< FEAT > & m_data
uint8_t octave
The image octave the image was found in: 0=original image, 1=1/2 image, 2=1/4 image, etc.
void setFeatureYf(size_t i, float y)
static coord_t f2coord(float f)
TKeyPoint_templ(const OTHER_TKeyPoint &o)
TFeatureID getFeatureID(size_t i) const
TFeatureTrackStatus getTrackStatus(size_t i)
const std::vector< size_t > & getFirstIndexPerRowLUT() const
Returns a vector with a LUT of the first feature index per row, to efficiently look for neighbors...
float getScale(size_t i) const
This template class provides the basic functionality for a general 2D any-size, resizable container o...
float response
A measure of the "goodness" of the feature (typically, the KLT_response value)
size_t kdtree_get_point_count() const
Must return the number of data points.
uint8_t user_flags
A field for any other flags needed by the user (this has not a predefined meaning) ...
pixel_coords_t pt
Coordinates in the image.
bool operator()(size_t k1, size_t k2) const
KeypointResponseSorter(const FEATURE_LIST &data)
void setFeatureResponse(size_t i, float r)
static struct FontData data
const_iterator end() const
int round(const T value)
Returns the closer integer (int) to x.