A generic adaptor class for providing Nearest Neighbor (NN) lookup via the nanoflann
library.
This makes use of the CRTP design pattern.
Derived classes must be aware of the need to call "kdtree_mark_as_outdated()" when the data points change to mark the cached KD-tree (an "index") as invalid, and also implement the following interface (note that these are not virtual functions due to the usage of CRTP):
The KD-tree index will be built on demand only upon call of any of the query methods provided by this class.
Notice that there is only ONE internal cached KD-tree, so if a method to query a 2D point is called, then another method for 3D points, then again the 2D method, three KD-trees will be built. So, try to group all the calls for a given dimensionality together or build different class instances for queries of each dimensionality, etc.
Definition at line 79 of file KDTreeCapable.h.
#include <mrpt/math/KDTreeCapable.h>
Classes | |
struct | TKDTreeDataHolder |
Internal structure with the KD-tree representation (mainly used to avoid copying pointers with the = operator) More... | |
struct | TKDTreeSearchParams |
Public Types | |
using | self_t = KDTreeCapable< Derived, num_t, metric_t > |
Public Member Functions | |
KDTreeCapable () | |
Constructor. More... | |
const Derived & | derived () const |
CRTP helper method. More... | |
Derived & | derived () |
CRTP helper method. More... | |
Public Attributes | |
TKDTreeSearchParams | kdtree_search_params |
Parameters to tune the ANN searches. More... | |
Public utility methods to query the KD-tree | |
TKDTreeDataHolder< 2 > | m_kdtree2d_data |
TKDTreeDataHolder< 3 > | m_kdtree3d_data |
TKDTreeDataHolder | m_kdtreeNd_data |
bool | m_kdtree_is_uptodate |
whether the KD tree needs to be rebuilt or not. More... | |
size_t | kdTreeClosestPoint2D (float x0, float y0, float &out_x, float &out_y, float &out_dist_sqr) const |
KD Tree-based search for the closest point (only ONE) to some given 2D coordinates. More... | |
size_t | kdTreeClosestPoint2D (float x0, float y0, float &out_dist_sqr) const |
This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. More... | |
size_t | kdTreeClosestPoint2D (const TPoint2D &p0, TPoint2D &pOut, float &outDistSqr) const |
This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. More... | |
float | kdTreeClosestPoint2DsqrError (float x0, float y0) const |
Like kdTreeClosestPoint2D, but just return the square error from some point to its closest neighbor. More... | |
float | kdTreeClosestPoint2DsqrError (const TPoint2D &p0) const |
void | kdTreeTwoClosestPoint2D (float x0, float y0, float &out_x1, float &out_y1, float &out_x2, float &out_y2, float &out_dist_sqr1, float &out_dist_sqr2) const |
KD Tree-based search for the TWO closest point to some given 2D coordinates. More... | |
void | kdTreeTwoClosestPoint2D (const TPoint2D &p0, TPoint2D &pOut1, TPoint2D &pOut2, float &outDistSqr1, float &outDistSqr2) const |
std::vector< size_t > | kdTreeNClosestPoint2D (float x0, float y0, size_t knn, std::vector< float > &out_x, std::vector< float > &out_y, std::vector< float > &out_dist_sqr) const |
KD Tree-based search for the N closest point to some given 2D coordinates. More... | |
std::vector< size_t > | kdTreeNClosestPoint2D (const TPoint2D &p0, size_t N, std::vector< TPoint2D > &pOut, std::vector< float > &outDistSqr) const |
void | kdTreeNClosestPoint2DIdx (float x0, float y0, size_t knn, std::vector< size_t > &out_idx, std::vector< float > &out_dist_sqr) const |
KD Tree-based search for the N closest point to some given 2D coordinates and returns their indexes. More... | |
void | kdTreeNClosestPoint2DIdx (const TPoint2D &p0, size_t N, std::vector< size_t > &outIdx, std::vector< float > &outDistSqr) const |
size_t | kdTreeClosestPoint3D (float x0, float y0, float z0, float &out_x, float &out_y, float &out_z, float &out_dist_sqr) const |
KD Tree-based search for the closest point (only ONE) to some given 3D coordinates. More... | |
size_t | kdTreeClosestPoint3D (float x0, float y0, float z0, float &out_dist_sqr) const |
This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. More... | |
size_t | kdTreeClosestPoint3D (const TPoint3D &p0, TPoint3D &pOut, float &outDistSqr) const |
This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. More... | |
void | kdTreeNClosestPoint3D (float x0, float y0, float z0, size_t knn, std::vector< float > &out_x, std::vector< float > &out_y, std::vector< float > &out_z, std::vector< float > &out_dist_sqr) const |
KD Tree-based search for the N closest points to some given 3D coordinates. More... | |
void | kdTreeNClosestPoint3DWithIdx (float x0, float y0, float z0, size_t knn, std::vector< float > &out_x, std::vector< float > &out_y, std::vector< float > &out_z, std::vector< size_t > &out_idx, std::vector< float > &out_dist_sqr) const |
KD Tree-based search for the N closest points to some given 3D coordinates. More... | |
void | kdTreeNClosestPoint3D (const TPoint3D &p0, size_t N, std::vector< TPoint3D > &pOut, std::vector< float > &outDistSqr) const |
size_t | kdTreeRadiusSearch3D (const num_t x0, const num_t y0, const num_t z0, const num_t maxRadiusSqr, std::vector< std::pair< size_t, num_t >> &out_indices_dist) const |
KD Tree-based search for all the points within a given radius of some 3D point. More... | |
size_t | kdTreeRadiusSearch2D (const num_t x0, const num_t y0, const num_t maxRadiusSqr, std::vector< std::pair< size_t, num_t >> &out_indices_dist) const |
KD Tree-based search for all the points within a given radius of some 2D point. More... | |
void | kdTreeNClosestPoint3DIdx (float x0, float y0, float z0, size_t knn, std::vector< size_t > &out_idx, std::vector< float > &out_dist_sqr) const |
KD Tree-based search for the N closest point to some given 3D coordinates and returns their indexes. More... | |
void | kdTreeNClosestPoint3DIdx (const TPoint3D &p0, size_t N, std::vector< size_t > &outIdx, std::vector< float > &outDistSqr) const |
void | kdtree_mark_as_outdated () const |
To be called by child classes when KD tree data changes. More... | |
void | rebuild_kdTree_2D () const |
Rebuild, if needed the KD-tree for 2D (nDims=2), 3D (nDims=3), ... More... | |
void | rebuild_kdTree_3D () const |
Rebuild, if needed the KD-tree for 2D (nDims=2), 3D (nDims=3), ... More... | |
using mrpt::math::KDTreeCapable< Derived, num_t, metric_t >::self_t = KDTreeCapable<Derived, num_t, metric_t> |
Definition at line 83 of file KDTreeCapable.h.
|
inline |
Constructor.
Definition at line 87 of file KDTreeCapable.h.
|
inline |
CRTP helper method.
Definition at line 94 of file KDTreeCapable.h.
|
inline |
CRTP helper method.
Definition at line 89 of file KDTreeCapable.h.
Referenced by mrpt::math::KDTreeCapable< CFeatureListKDTree< FEAT > >::kdTreeClosestPoint2D(), mrpt::math::KDTreeCapable< CFeatureListKDTree< FEAT > >::kdTreeClosestPoint3D(), mrpt::math::KDTreeCapable< CFeatureListKDTree< FEAT > >::kdTreeNClosestPoint2D(), mrpt::math::KDTreeCapable< CFeatureListKDTree< FEAT > >::kdTreeNClosestPoint3D(), mrpt::math::KDTreeCapable< CFeatureListKDTree< FEAT > >::kdTreeNClosestPoint3DWithIdx(), mrpt::math::KDTreeCapable< CFeatureListKDTree< FEAT > >::kdTreeTwoClosestPoint2D(), mrpt::math::KDTreeCapable< CFeatureListKDTree< FEAT > >::rebuild_kdTree_2D(), and mrpt::math::KDTreeCapable< CFeatureListKDTree< FEAT > >::rebuild_kdTree_3D().
|
inlineprotected |
To be called by child classes when KD tree data changes.
Definition at line 732 of file KDTreeCapable.h.
|
inline |
This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.
Definition at line 178 of file KDTreeCapable.h.
|
inline |
This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.
Definition at line 154 of file KDTreeCapable.h.
|
inline |
KD Tree-based search for the closest point (only ONE) to some given 2D coordinates.
This method automatically build the "m_kdtree_data" structure when:
x0 | The X coordinate of the query. |
y0 | The Y coordinate of the query. |
out_x | The X coordinate of the found closest correspondence. |
out_y | The Y coordinate of the found closest correspondence. |
out_dist_sqr | The square distance between the query and the returned point. |
Definition at line 125 of file KDTreeCapable.h.
Referenced by mrpt::math::KDTreeCapable< CFeatureListKDTree< FEAT > >::kdTreeClosestPoint2D(), and mrpt::math::KDTreeCapable< CFeatureListKDTree< FEAT > >::kdTreeClosestPoint2DsqrError().
|
inline |
Definition at line 200 of file KDTreeCapable.h.
|
inline |
Like kdTreeClosestPoint2D, but just return the square error from some point to its closest neighbor.
Definition at line 193 of file KDTreeCapable.h.
Referenced by mrpt::math::KDTreeCapable< CFeatureListKDTree< FEAT > >::kdTreeClosestPoint2DsqrError(), and mrpt::vision::detail::trackFeatures_addNewFeats< CFeatureList >().
|
inline |
This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.
Definition at line 464 of file KDTreeCapable.h.
|
inline |
This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.
Definition at line 439 of file KDTreeCapable.h.
|
inline |
KD Tree-based search for the closest point (only ONE) to some given 3D coordinates.
This method automatically build the "m_kdtree_data" structure when:
x0 | The X coordinate of the query. |
y0 | The Y coordinate of the query. |
z0 | The Z coordinate of the query. |
out_x | The X coordinate of the found closest correspondence. |
out_y | The Y coordinate of the found closest correspondence. |
out_z | The Z coordinate of the found closest correspondence. |
out_dist_sqr | The square distance between the query and the returned point. |
Definition at line 408 of file KDTreeCapable.h.
Referenced by mrpt::math::KDTreeCapable< CFeatureListKDTree< FEAT > >::kdTreeClosestPoint3D().
|
inline |
Definition at line 325 of file KDTreeCapable.h.
|
inline |
KD Tree-based search for the N closest point to some given 2D coordinates.
This method automatically build the "m_kdtree_data" structure when:
x0 | The X coordinate of the query. |
y0 | The Y coordinate of the query. |
N | The number of closest points to search. |
out_x | The vector containing the X coordinates of the correspondences. |
out_y | The vector containing the Y coordinates of the correspondences. |
out_dist_sqr | The vector containing the square distance between the query and the returned points. |
Definition at line 293 of file KDTreeCapable.h.
Referenced by mrpt::math::KDTreeCapable< CFeatureListKDTree< FEAT > >::kdTreeNClosestPoint2D().
|
inline |
Definition at line 380 of file KDTreeCapable.h.
|
inline |
KD Tree-based search for the N closest point to some given 2D coordinates and returns their indexes.
This method automatically build the "m_kdtree_data" structure when:
x0 | The X coordinate of the query. |
y0 | The Y coordinate of the query. |
N | The number of closest points to search. |
out_idx | The indexes of the found closest correspondence. |
out_dist_sqr | The square distance between the query and the returned point. |
Definition at line 358 of file KDTreeCapable.h.
Referenced by mrpt::slam::CGridMapAligner::AlignPDF_robustMatch(), mrpt::math::KDTreeCapable< CFeatureListKDTree< FEAT > >::kdTreeNClosestPoint2DIdx(), and mrpt::vision::matchMultiResolutionFeatures().
|
inline |
Definition at line 592 of file KDTreeCapable.h.
|
inline |
KD Tree-based search for the N closest points to some given 3D coordinates.
This method automatically build the "m_kdtree_data" structure when:
x0 | The X coordinate of the query. |
y0 | The Y coordinate of the query. |
z0 | The Z coordinate of the query. |
N | The number of closest points to search. |
out_x | The vector containing the X coordinates of the correspondences. |
out_y | The vector containing the Y coordinates of the correspondences. |
out_z | The vector containing the Z coordinates of the correspondences. |
out_dist_sqr | The vector containing the square distance between the query and the returned points. |
Definition at line 499 of file KDTreeCapable.h.
Referenced by mrpt::maps::CPointCloudFilterByDistance::filter(), and mrpt::math::KDTreeCapable< CFeatureListKDTree< FEAT > >::kdTreeNClosestPoint3D().
|
inline |
Definition at line 719 of file KDTreeCapable.h.
|
inline |
KD Tree-based search for the N closest point to some given 3D coordinates and returns their indexes.
This method automatically build the "m_kdtree_data" structure when:
x0 | The X coordinate of the query. |
y0 | The Y coordinate of the query. |
z0 | The Z coordinate of the query. |
N | The number of closest points to search. |
out_idx | The indexes of the found closest correspondence. |
out_dist_sqr | The square distance between the query and the returned point. |
Definition at line 696 of file KDTreeCapable.h.
Referenced by mrpt::math::KDTreeCapable< CFeatureListKDTree< FEAT > >::kdTreeNClosestPoint3DIdx().
|
inline |
KD Tree-based search for the N closest points to some given 3D coordinates.
This method automatically build the "m_kdtree_data" structure when:
x0 | The X coordinate of the query. |
y0 | The Y coordinate of the query. |
z0 | The Z coordinate of the query. |
N | The number of closest points to search. |
out_x | The vector containing the X coordinates of the correspondences. |
out_y | The vector containing the Y coordinates of the correspondences. |
out_z | The vector containing the Z coordinates of the correspondences. |
out_idx | The vector containing the indexes of the correspondences. |
out_dist_sqr | The vector containing the square distance between the query and the returned points. |
Definition at line 557 of file KDTreeCapable.h.
|
inline |
KD Tree-based search for all the points within a given radius of some 2D point.
This method automatically build the "m_kdtree_data" structure when:
x0 | The X coordinate of the query. |
y0 | The Y coordinate of the query. |
maxRadiusSqr | The square of the desired search radius. |
out_indices_dist | The output list, with pairs of indeces/squared distances for the found correspondences. |
Definition at line 661 of file KDTreeCapable.h.
Referenced by ransac_data_assoc_run().
|
inline |
KD Tree-based search for all the points within a given radius of some 3D point.
This method automatically build the "m_kdtree_data" structure when:
x0 | The X coordinate of the query. |
y0 | The Y coordinate of the query. |
z0 | The Z coordinate of the query. |
maxRadiusSqr | The square of the desired search radius. |
out_indices_dist | The output list, with pairs of indeces/squared distances for the found correspondences. |
Definition at line 626 of file KDTreeCapable.h.
|
inline |
Definition at line 259 of file KDTreeCapable.h.
|
inline |
KD Tree-based search for the TWO closest point to some given 2D coordinates.
This method automatically build the "m_kdtree_data" structure when:
x0 | The X coordinate of the query. |
y0 | The Y coordinate of the query. |
out_x1 | The X coordinate of the first correspondence. |
out_y1 | The Y coordinate of the first correspondence. |
out_x2 | The X coordinate of the second correspondence. |
out_y2 | The Y coordinate of the second correspondence. |
out_dist_sqr1 | The square distance between the query and the first returned point. |
out_dist_sqr2 | The square distance between the query and the second returned point. |
Definition at line 226 of file KDTreeCapable.h.
Referenced by mrpt::slam::CICP::ICP_Method_LM(), and mrpt::math::KDTreeCapable< CFeatureListKDTree< FEAT > >::kdTreeTwoClosestPoint2D().
|
inlineprivate |
Rebuild, if needed the KD-tree for 2D (nDims=2), 3D (nDims=3), ...
asking the child class for the data points.
Definition at line 779 of file KDTreeCapable.h.
Referenced by mrpt::math::KDTreeCapable< CFeatureListKDTree< FEAT > >::kdTreeClosestPoint2D(), mrpt::math::KDTreeCapable< CFeatureListKDTree< FEAT > >::kdTreeNClosestPoint2D(), mrpt::math::KDTreeCapable< CFeatureListKDTree< FEAT > >::kdTreeNClosestPoint2DIdx(), mrpt::math::KDTreeCapable< CFeatureListKDTree< FEAT > >::kdTreeRadiusSearch2D(), and mrpt::math::KDTreeCapable< CFeatureListKDTree< FEAT > >::kdTreeTwoClosestPoint2D().
|
inlineprivate |
Rebuild, if needed the KD-tree for 2D (nDims=2), 3D (nDims=3), ...
asking the child class for the data points.
Definition at line 813 of file KDTreeCapable.h.
Referenced by mrpt::math::KDTreeCapable< CFeatureListKDTree< FEAT > >::kdTreeClosestPoint3D(), mrpt::math::KDTreeCapable< CFeatureListKDTree< FEAT > >::kdTreeNClosestPoint3D(), mrpt::math::KDTreeCapable< CFeatureListKDTree< FEAT > >::kdTreeNClosestPoint3DIdx(), mrpt::math::KDTreeCapable< CFeatureListKDTree< FEAT > >::kdTreeNClosestPoint3DWithIdx(), and mrpt::math::KDTreeCapable< CFeatureListKDTree< FEAT > >::kdTreeRadiusSearch3D().
TKDTreeSearchParams mrpt::math::KDTreeCapable< Derived, num_t, metric_t >::kdtree_search_params |
Parameters to tune the ANN searches.
Definition at line 103 of file KDTreeCapable.h.
Referenced by mrpt::math::KDTreeCapable< CFeatureListKDTree< FEAT > >::rebuild_kdTree_2D(), and mrpt::math::KDTreeCapable< CFeatureListKDTree< FEAT > >::rebuild_kdTree_3D().
|
mutableprivate |
Definition at line 771 of file KDTreeCapable.h.
Referenced by mrpt::math::KDTreeCapable< CFeatureListKDTree< FEAT > >::kdTreeClosestPoint2D(), mrpt::math::KDTreeCapable< CFeatureListKDTree< FEAT > >::kdTreeNClosestPoint2D(), mrpt::math::KDTreeCapable< CFeatureListKDTree< FEAT > >::kdTreeNClosestPoint2DIdx(), mrpt::math::KDTreeCapable< CFeatureListKDTree< FEAT > >::kdTreeRadiusSearch2D(), mrpt::math::KDTreeCapable< CFeatureListKDTree< FEAT > >::kdTreeTwoClosestPoint2D(), mrpt::math::KDTreeCapable< CFeatureListKDTree< FEAT > >::rebuild_kdTree_2D(), and mrpt::math::KDTreeCapable< CFeatureListKDTree< FEAT > >::rebuild_kdTree_3D().
|
mutableprivate |
Definition at line 772 of file KDTreeCapable.h.
Referenced by mrpt::math::KDTreeCapable< CFeatureListKDTree< FEAT > >::kdTreeClosestPoint3D(), mrpt::math::KDTreeCapable< CFeatureListKDTree< FEAT > >::kdTreeNClosestPoint3D(), mrpt::math::KDTreeCapable< CFeatureListKDTree< FEAT > >::kdTreeNClosestPoint3DIdx(), mrpt::math::KDTreeCapable< CFeatureListKDTree< FEAT > >::kdTreeNClosestPoint3DWithIdx(), mrpt::math::KDTreeCapable< CFeatureListKDTree< FEAT > >::kdTreeRadiusSearch3D(), mrpt::math::KDTreeCapable< CFeatureListKDTree< FEAT > >::rebuild_kdTree_2D(), and mrpt::math::KDTreeCapable< CFeatureListKDTree< FEAT > >::rebuild_kdTree_3D().
|
mutableprivate |
whether the KD tree needs to be rebuilt or not.
Definition at line 775 of file KDTreeCapable.h.
Referenced by mrpt::math::KDTreeCapable< CFeatureListKDTree< FEAT > >::kdtree_mark_as_outdated(), mrpt::math::KDTreeCapable< CFeatureListKDTree< FEAT > >::rebuild_kdTree_2D(), and mrpt::math::KDTreeCapable< CFeatureListKDTree< FEAT > >::rebuild_kdTree_3D().
|
mutableprivate |
Definition at line 773 of file KDTreeCapable.h.
Referenced by mrpt::math::KDTreeCapable< CFeatureListKDTree< FEAT > >::rebuild_kdTree_2D(), and mrpt::math::KDTreeCapable< CFeatureListKDTree< FEAT > >::rebuild_kdTree_3D().
Page generated by Doxygen 1.8.17 for MRPT 1.9.9 Git: ad3a9d8ae Tue May 1 23:10:22 2018 -0700 at miƩ 12 jul 2023 10:03:34 CEST |