|
Point Cloud Library (PCL)
1.15.1-dev
|
search::FlannSearch is a generic FLANN wrapper class for the new search interface. More...
#include <pcl/search/flann_search.h>
Inheritance diagram for pcl::search::FlannSearch< PointT, FlannDistance >:
Collaboration diagram for pcl::search::FlannSearch< PointT, FlannDistance >:Classes | |
| class | FlannIndexCreator |
| Helper class that creates a FLANN index from a given FLANN matrix. More... | |
| class | KdTreeIndexCreator |
| Creates a FLANN KdTreeSingleIndex from the given input data. More... | |
| class | KdTreeMultiIndexCreator |
| Creates a FLANN KdTreeIndex of multiple randomized trees from the given input data, suitable for feature matching. More... | |
| class | KMeansIndexCreator |
| Creates a FLANN KdTreeSingleIndex from the given input data. More... | |
Public Member Functions | |
| FlannSearch (bool sorted=true, FlannIndexCreatorPtr creator=FlannIndexCreatorPtr(new KdTreeIndexCreator())) | |
| ~FlannSearch () override | |
| Destructor for FlannSearch. More... | |
| void | setEpsilon (double eps) |
| Set the search epsilon precision (error bound) for nearest neighbors searches. More... | |
| double | getEpsilon () |
| Get the search epsilon precision (error bound) for nearest neighbors searches. More... | |
| void | setChecks (int checks) |
| Set the number of checks to perform during approximate searches in multiple randomized trees. More... | |
| int | getChecks () |
| Get the number of checks to perform during approximate searches in multiple randomized trees. More... | |
| bool | setInputCloud (const PointCloudConstPtr &cloud, const IndicesConstPtr &indices=IndicesConstPtr()) override |
| Provide a pointer to the input dataset. More... | |
| int | nearestKSearch (const PointT &point, int k, Indices &k_indices, std::vector< float > &k_sqr_distances) const override |
| Search for the k-nearest neighbors for the given query point. More... | |
| void | nearestKSearch (const PointCloud &cloud, const Indices &indices, int k, std::vector< Indices > &k_indices, std::vector< std::vector< float > > &k_sqr_distances) const override |
| Search for the k-nearest neighbors for the given query point. More... | |
| int | radiusSearch (const PointT &point, double radius, Indices &k_indices, std::vector< float > &k_sqr_distances, unsigned int max_nn=0) const override |
| Search for all the nearest neighbors of the query point in a given radius. More... | |
| void | radiusSearch (const PointCloud &cloud, const Indices &indices, double radius, std::vector< Indices > &k_indices, std::vector< std::vector< float > > &k_sqr_distances, unsigned int max_nn=0) const override |
| Search for the k-nearest neighbors for the given query point. More... | |
| void | setPointRepresentation (const PointRepresentationConstPtr &point_representation) |
| Provide a pointer to the point representation to use to convert points into k-D vectors. More... | |
| PointRepresentationConstPtr const | getPointRepresentation () |
| Get a pointer to the point representation used when converting points into k-D vectors. More... | |
Public Member Functions inherited from pcl::search::Search< PointT > | |
| Search (const std::string &name="", bool sorted=false) | |
| Constructor. More... | |
| virtual | ~Search ()=default |
| Destructor. More... | |
| virtual const std::string & | getName () const |
| Returns the search method name. More... | |
| virtual void | setSortedResults (bool sorted) |
| sets whether the results should be sorted (ascending in the distance) or not More... | |
| virtual bool | getSortedResults () |
| Gets whether the results should be sorted (ascending in the distance) or not Otherwise the results may be returned in any order. More... | |
| virtual PointCloudConstPtr | getInputCloud () const |
| Get a pointer to the input point cloud dataset. More... | |
| virtual IndicesConstPtr | getIndices () const |
| Get a pointer to the vector of indices used. More... | |
| template<typename PointTDiff > | |
| int | nearestKSearchT (const PointTDiff &point, int k, Indices &k_indices, std::vector< float > &k_sqr_distances) const |
| Search for k-nearest neighbors for the given query point. More... | |
| virtual int | nearestKSearch (const PointCloud &cloud, index_t index, int k, Indices &k_indices, std::vector< float > &k_sqr_distances) const |
| Search for k-nearest neighbors for the given query point. More... | |
| virtual int | nearestKSearch (index_t index, int k, Indices &k_indices, std::vector< float > &k_sqr_distances) const |
| Search for k-nearest neighbors for the given query point (zero-copy). More... | |
| template<typename PointTDiff > | |
| void | nearestKSearchT (const pcl::PointCloud< PointTDiff > &cloud, const Indices &indices, int k, std::vector< Indices > &k_indices, std::vector< std::vector< float > > &k_sqr_distances) const |
| Search for the k-nearest neighbors for the given query point. More... | |
| template<typename PointTDiff > | |
| int | radiusSearchT (const PointTDiff &point, double radius, Indices &k_indices, std::vector< float > &k_sqr_distances, unsigned int max_nn=0) const |
| Search for all the nearest neighbors of the query point in a given radius. More... | |
| virtual int | radiusSearch (const PointCloud &cloud, index_t index, double radius, Indices &k_indices, std::vector< float > &k_sqr_distances, unsigned int max_nn=0) const |
| Search for all the nearest neighbors of the query point in a given radius. More... | |
| virtual int | radiusSearch (index_t index, double radius, Indices &k_indices, std::vector< float > &k_sqr_distances, unsigned int max_nn=0) const |
| Search for all the nearest neighbors of the query point in a given radius (zero-copy). More... | |
| template<typename PointTDiff > | |
| void | radiusSearchT (const pcl::PointCloud< PointTDiff > &cloud, const Indices &indices, double radius, std::vector< Indices > &k_indices, std::vector< std::vector< float > > &k_sqr_distances, unsigned int max_nn=0) const |
| Search for all the nearest neighbors of the query points in a given radius. More... | |
| void | setNumberOfThreads (unsigned int nr_threads) |
| Set the number of threads to use for searching over multiple points or indices. More... | |
Protected Member Functions | |
| void | convertInputToFlannMatrix () |
| converts the input data to a format usable by FLANN More... | |
Protected Member Functions inherited from pcl::search::Search< PointT > | |
| void | sortResults (Indices &indices, std::vector< float > &distances) const |
Protected Attributes | |
| IndexPtr | index_ |
| The FLANN index. More... | |
| FlannIndexCreatorPtr | creator_ |
| The index creator, used to (re-) create the index when the search data is passed. More... | |
| MatrixPtr | input_flann_ |
| Input data in FLANN format. More... | |
| float | eps_ {0.0f} |
| Epsilon for approximate NN search. More... | |
| int | checks_ {32} |
| Number of checks to perform for approximate NN search using the multiple randomized tree index. More... | |
| bool | input_copied_for_flann_ {false} |
| PointRepresentationConstPtr | point_representation_ {nullptr} |
| int | dim_ {0} |
| Indices | index_mapping_ |
| bool | identity_mapping_ {false} |
| std::size_t | total_nr_points_ {0} |
Protected Attributes inherited from pcl::search::Search< PointT > | |
| PointCloudConstPtr | input_ |
| IndicesConstPtr | indices_ |
| bool | sorted_results_ |
| std::string | name_ |
| unsigned int | num_threads_ {1} |
| The number of threads to use when searching over multiple points or indices. More... | |
search::FlannSearch is a generic FLANN wrapper class for the new search interface.
It is able to wrap any FLANN index type, e.g. the kd tree as well as indices for high-dimensional searches and intended as a more powerful and cleaner successor to KdTreeFlann.
By default, this class creates a single kd tree for indexing the input data. However, for high dimensions (> 10), it is often better to use the multiple randomized kd tree index provided by FLANN in combination with the flann::L2 distance functor. During search in this type of index, the number of checks to perform before terminating the search can be controlled. Here is a code example if a high-dimensional 2-NN search:
Definition at line 100 of file flann_search.h.
| using pcl::search::FlannSearch< PointT, FlannDistance >::ConstPtr = shared_ptr<const FlannSearch<PointT, FlannDistance> > |
Definition at line 108 of file flann_search.h.
| using pcl::search::FlannSearch< PointT, FlannDistance >::FlannIndexCreatorPtr = shared_ptr<FlannIndexCreator> |
Definition at line 141 of file flann_search.h.
| using pcl::search::FlannSearch< PointT, FlannDistance >::Index = flann::NNIndex<FlannDistance> |
Definition at line 116 of file flann_search.h.
| using pcl::search::FlannSearch< PointT, FlannDistance >::IndexPtr = shared_ptr<flann::NNIndex<FlannDistance> > |
Definition at line 117 of file flann_search.h.
| using pcl::search::FlannSearch< PointT, FlannDistance >::MatrixConstPtr = shared_ptr<const flann::Matrix<float> > |
Definition at line 114 of file flann_search.h.
| using pcl::search::FlannSearch< PointT, FlannDistance >::MatrixPtr = shared_ptr<flann::Matrix<float> > |
Definition at line 113 of file flann_search.h.
| using pcl::search::FlannSearch< PointT, FlannDistance >::PointCloud = typename Search<PointT>::PointCloud |
Definition at line 110 of file flann_search.h.
| using pcl::search::FlannSearch< PointT, FlannDistance >::PointCloudConstPtr = typename Search<PointT>::PointCloudConstPtr |
Definition at line 111 of file flann_search.h.
| using pcl::search::FlannSearch< PointT, FlannDistance >::PointRepresentation = pcl::PointRepresentation<PointT> |
Definition at line 119 of file flann_search.h.
| using pcl::search::FlannSearch< PointT, FlannDistance >::PointRepresentationConstPtr = typename PointRepresentation::ConstPtr |
Definition at line 121 of file flann_search.h.
| using pcl::search::FlannSearch< PointT, FlannDistance >::PointRepresentationPtr = typename PointRepresentation::Ptr |
Definition at line 120 of file flann_search.h.
| using pcl::search::FlannSearch< PointT, FlannDistance >::Ptr = shared_ptr<FlannSearch<PointT, FlannDistance> > |
Definition at line 107 of file flann_search.h.
| pcl::search::FlannSearch< PointT, FlannDistance >::FlannSearch | ( | bool | sorted = true, |
| FlannIndexCreatorPtr | creator = FlannIndexCreatorPtr (new KdTreeIndexCreator ()) |
||
| ) |
Definition at line 78 of file flann_search.hpp.
References pcl::search::FlannSearch< PointT, FlannDistance >::dim_, and pcl::search::FlannSearch< PointT, FlannDistance >::point_representation_.
|
override |
Destructor for FlannSearch.
Definition at line 86 of file flann_search.hpp.
|
protected |
converts the input data to a format usable by FLANN
Definition at line 372 of file flann_search.hpp.
|
inline |
Get the number of checks to perform during approximate searches in multiple randomized trees.
Definition at line 248 of file flann_search.h.
References pcl::search::FlannSearch< PointT, FlannDistance >::checks_.
|
inline |
Get the search epsilon precision (error bound) for nearest neighbors searches.
Definition at line 232 of file flann_search.h.
References pcl::search::FlannSearch< PointT, FlannDistance >::eps_.
|
inline |
Get a pointer to the point representation used when converting points into k-D vectors.
Definition at line 326 of file flann_search.h.
References pcl::search::FlannSearch< PointT, FlannDistance >::point_representation_.
|
overridevirtual |
Search for the k-nearest neighbors for the given query point.
| [in] | cloud | the point cloud data |
| [in] | indices | a vector of point cloud indices to query for nearest neighbors |
| [in] | k | the number of neighbors to search for |
| [out] | k_indices | the resultant indices of the neighboring points, k_indices[i] corresponds to the neighbors of the query point i |
| [out] | k_sqr_distances | the resultant squared distances to the neighboring points, k_sqr_distances[i] corresponds to the neighbors of the query point i |
Reimplemented from pcl::search::Search< PointT >.
Definition at line 150 of file flann_search.hpp.
References pcl::knn_search().
|
overridevirtual |
Search for the k-nearest neighbors for the given query point.
| [in] | point | the given query point |
| [in] | k | the number of neighbors to search for |
| [out] | k_indices | the resultant indices of the neighboring points (must be resized to k a priori!) |
| [out] | k_sqr_distances | the resultant squared distances to the neighboring points (must be resized to k a priori!) |
Implements pcl::search::Search< PointT >.
Definition at line 106 of file flann_search.hpp.
References pcl::knn_search().
|
overridevirtual |
Search for the k-nearest neighbors for the given query point.
| [in] | cloud | the point cloud data |
| [in] | indices | a vector of point cloud indices to query for nearest neighbors |
| [in] | radius | the radius of the sphere bounding all of p_q's neighbors |
| [out] | k_indices | the resultant indices of the neighboring points, k_indices[i] corresponds to the neighbors of the query point i |
| [out] | k_sqr_distances | the resultant squared distances to the neighboring points, k_sqr_distances[i] corresponds to the neighbors of the query point i |
| [in] | max_nn | if given, bounds the maximum returned neighbors to this value |
Reimplemented from pcl::search::Search< PointT >.
Definition at line 282 of file flann_search.hpp.
|
overridevirtual |
Search for all the nearest neighbors of the query point in a given radius.
| [in] | point | the given query point |
| [in] | radius | the radius of the sphere bounding all of p_q's neighbors |
| [out] | k_indices | the resultant indices of the neighboring points |
| [out] | k_sqr_distances | the resultant squared distances to the neighboring points |
| [in] | max_nn | if given, bounds the maximum returned neighbors to this value. If max_nn is set to 0 or to a number higher than the number of points in the input cloud, all neighbors in radius will be returned. |
Implements pcl::search::Search< PointT >.
Definition at line 240 of file flann_search.hpp.
|
inline |
Set the number of checks to perform during approximate searches in multiple randomized trees.
| [in] | checks | number of checks to perform during approximate searches in multiple randomized trees. |
Definition at line 241 of file flann_search.h.
References pcl::search::FlannSearch< PointT, FlannDistance >::checks_.
|
inline |
Set the search epsilon precision (error bound) for nearest neighbors searches.
| [in] | eps | precision (error bound) for nearest neighbors searches |
Definition at line 225 of file flann_search.h.
References pcl::search::FlannSearch< PointT, FlannDistance >::eps_.
|
overridevirtual |
Provide a pointer to the input dataset.
| [in] | cloud | the const boost shared pointer to a PointCloud message |
| [in] | indices | the point indices subset that is to be used from cloud |
Reimplemented from pcl::search::Search< PointT >.
Definition at line 94 of file flann_search.hpp.
Referenced by pcl::search::FlannSearch< PointT, FlannDistance >::setPointRepresentation().
|
inline |
Provide a pointer to the point representation to use to convert points into k-D vectors.
| [in] | point_representation | the const boost shared pointer to a PointRepresentation |
Definition at line 316 of file flann_search.h.
References pcl::search::FlannSearch< PointT, FlannDistance >::dim_, pcl::search::Search< PointT >::indices_, pcl::search::Search< PointT >::input_, pcl::search::FlannSearch< PointT, FlannDistance >::point_representation_, and pcl::search::FlannSearch< PointT, FlannDistance >::setInputCloud().
|
protected |
Number of checks to perform for approximate NN search using the multiple randomized tree index.
Definition at line 355 of file flann_search.h.
Referenced by pcl::search::FlannSearch< PointT, FlannDistance >::getChecks(), and pcl::search::FlannSearch< PointT, FlannDistance >::setChecks().
|
protected |
The index creator, used to (re-) create the index when the search data is passed.
Definition at line 343 of file flann_search.h.
|
protected |
Definition at line 361 of file flann_search.h.
Referenced by pcl::search::FlannSearch< PointT, FlannDistance >::FlannSearch(), and pcl::search::FlannSearch< PointT, FlannDistance >::setPointRepresentation().
|
protected |
Epsilon for approximate NN search.
Definition at line 351 of file flann_search.h.
Referenced by pcl::search::FlannSearch< PointT, FlannDistance >::getEpsilon(), and pcl::search::FlannSearch< PointT, FlannDistance >::setEpsilon().
|
protected |
Definition at line 364 of file flann_search.h.
|
protected |
The FLANN index.
Definition at line 339 of file flann_search.h.
|
protected |
Definition at line 363 of file flann_search.h.
|
protected |
Definition at line 357 of file flann_search.h.
|
protected |
Input data in FLANN format.
Definition at line 347 of file flann_search.h.
|
protected |
|
protected |
Definition at line 366 of file flann_search.h.