|
| enum | SearchType {
BRUTE_FORCE = 0
, KDTREE_LINEAR_HEAP
, KDTREE_TREE_HEAP
, KDTREE_CL_PT_IN_NODES
,
KDTREE_CL_PT_IN_LEAVES
, BRUTE_FORCE_CL
, SEARCH_TYPE_COUNT
} |
| | type of search More...
|
| |
| enum | CreationOptionFlags { TOUCH_STATISTICS = 1
} |
| | creation option More...
|
| |
| enum | SearchOptionFlags { ALLOW_SELF_MATCH = 1
, SORT_RESULTS = 2
} |
| | search option More...
|
| |
|
typedef Eigen::Matrix< T, Eigen::Dynamic, 1 > | Vector |
| | an Eigen vector of type T, to hold the coordinates of a point
|
| |
|
typedef Eigen::Matrix< T, Eigen::Dynamic, Eigen::Dynamic > | Matrix |
| | a column-major Eigen matrix in which each column is a point; this matrix has dim rows
|
| |
|
typedef Cloud_T | CloudType |
| | a column-major Eigen matrix in which each column is a point; this matrix has dim rows
|
| |
|
typedef int | Index |
| | an index to a Vector or a Matrix, for refering to data points
|
| |
|
typedef Eigen::Matrix< Index, Eigen::Dynamic, 1 > | IndexVector |
| | a vector of indices to data points
|
| |
|
typedef Eigen::Matrix< Index, Eigen::Dynamic, Eigen::Dynamic > | IndexMatrix |
| | a matrix of indices to data points
|
| |
|
| unsigned long | knn (const Vector &query, IndexVector &indices, Vector &dists2, const Index k=1, const T epsilon=0, const unsigned optionFlags=0, const T maxRadius=std::numeric_limits< T >::infinity()) const |
| | Find the k nearest neighbours of query.
|
| |
| virtual unsigned long | knn (const Matrix &query, IndexMatrix &indices, Matrix &dists2, const Index k=1, const T epsilon=0, const unsigned optionFlags=0, const T maxRadius=std::numeric_limits< T >::infinity()) const =0 |
| | Find the k nearest neighbours for each point of query.
|
| |
| virtual unsigned long | knn (const Matrix &query, IndexMatrix &indices, Matrix &dists2, const Vector &maxRadii, const Index k=1, const T epsilon=0, const unsigned optionFlags=0) const =0 |
| | Find the k nearest neighbours for each point of query.
|
| |
|
virtual | ~NearestNeighbourSearch () |
| | virtual destructor
|
| |
|
| static NearestNeighbourSearch * | create (const CloudType &cloud, const Index dim=std::numeric_limits< Index >::max(), const SearchType preferedType=KDTREE_LINEAR_HEAP, const unsigned creationOptionFlags=0, const Parameters &additionalParameters=Parameters()) |
| | Create a nearest-neighbour search.
|
| |
| static NearestNeighbourSearch * | createBruteForce (const CloudType &cloud, const Index dim=std::numeric_limits< Index >::max(), const unsigned creationOptionFlags=0) |
| | Create a nearest-neighbour search, using brute-force search, useful for comparison only.
|
| |
| static NearestNeighbourSearch * | createKDTreeLinearHeap (const CloudType &cloud, const Index dim=std::numeric_limits< Index >::max(), const unsigned creationOptionFlags=0, const Parameters &additionalParameters=Parameters()) |
| | Create a nearest-neighbour search, using a kd-tree with linear heap, good for small k (~up to 30)
|
| |
| static NearestNeighbourSearch * | createKDTreeTreeHeap (const CloudType &cloud, const Index dim=std::numeric_limits< Index >::max(), const unsigned creationOptionFlags=0, const Parameters &additionalParameters=Parameters()) |
| | Create a nearest-neighbour search, using a kd-tree with tree heap, good for large k (~from 30)
|
| |
|
template<typename WrongMatrixType> |
| static NearestNeighbourSearch * | create (const WrongMatrixType &cloud, const Index dim=std::numeric_limits< Index >::max(), const SearchType preferedType=KDTREE_LINEAR_HEAP, const unsigned creationOptionFlags=0, const Parameters &additionalParameters=Parameters()) |
| | Prevent creation of trees with the wrong matrix type. Currently only dynamic size matrices are supported.
|
| |
|
template<typename WrongMatrixType> |
| static NearestNeighbourSearch * | createBruteForce (const WrongMatrixType &cloud, const Index dim=std::numeric_limits< Index >::max(), const unsigned creationOptionFlags=0) |
| | Prevent creation of trees with the wrong matrix type. Currently only dynamic size matrices are supported.
|
| |
|
template<typename WrongMatrixType> |
| static NearestNeighbourSearch * | createKDTreeLinearHeap (const WrongMatrixType &cloud, const Index dim=std::numeric_limits< Index >::max(), const unsigned creationOptionFlags=0, const Parameters &additionalParameters=Parameters()) |
| | Prevent creation of trees with the wrong matrix type. Currently only dynamic size matrices are supported.
|
| |
|
template<typename WrongMatrixType> |
| static NearestNeighbourSearch * | createKDTreeTreeHeap (const WrongMatrixType &, const Index dim=std::numeric_limits< Index >::max(), const unsigned creationOptionFlags=0, const Parameters &additionalParameters=Parameters()) |
| | Prevent creation of trees with the wrong matrix type. Currently only dynamic size matrices are supported.
|
| |
template<typename T, typename Cloud_T = Eigen::Matrix<T, Eigen::Dynamic, Eigen::Dynamic>>
struct Nabo::NearestNeighbourSearch< T, Cloud_T >
Nearest neighbour search interface, templatized on scalar type.
template<typename T, typename Cloud_T = Eigen::Matrix<T, Eigen::Dynamic, Eigen::Dynamic>>
Find the k nearest neighbours for each point of query.
If the search finds less than k points, the empty entries in dists2 will be filled with InvalidValue and the indices with InvalidIndex.
- Parameters
-
| query | query points |
| indices | indices of nearest neighbours, must be of size k x query.cols() |
| dists2 | squared distances to nearest neighbours, must be of size k x query.cols() |
| k | number of nearest neighbour requested |
| epsilon | maximal ratio of error for approximate search, 0 for exact search; has no effect if the number of neighbour found is smaller than the number requested |
| optionFlags | search options, a bitwise OR of elements of SearchOptionFlags |
| maxRadius | maximum radius in which to search, can be used to prune search, is not affected by epsilon |
- Returns
- if creationOptionFlags contains TOUCH_STATISTICS, return the number of point touched, otherwise return 0
Implemented in Nabo::BruteForceSearch< T, CloudType >, Nabo::KDTreeUnbalancedPtInLeavesImplicitBoundsStackOpt< T, Heap, CloudType >, Nabo::OpenCLSearch< T, CloudType >, and Nabo::OpenCLSearch< T, Eigen::Matrix< T, Eigen::Dynamic, Eigen::Dynamic > >.
template<typename T, typename Cloud_T = Eigen::Matrix<T, Eigen::Dynamic, Eigen::Dynamic>>
Find the k nearest neighbours for each point of query.
If the search finds less than k points, the empty entries in dists2 will be filled with InvalidValue and the indices with InvalidIndex.
- Parameters
-
| query | query points |
| indices | indices of nearest neighbours, must be of size k x query.cols() |
| dists2 | squared distances to nearest neighbours, must be of size k x query.cols() |
| maxRadii | vector of maximum radii in which to search, used to prune search, is not affected by epsilon |
| k | number of nearest neighbour requested |
| epsilon | maximal ratio of error for approximate search, 0 for exact search; has no effect if the number of neighbour found is smaller than the number requested |
| optionFlags | search options, a bitwise OR of elements of SearchOptionFlags |
- Returns
- if creationOptionFlags contains TOUCH_STATISTICS, return the number of point touched, otherwise return 0
Implemented in Nabo::BruteForceSearch< T, CloudType >, Nabo::KDTreeUnbalancedPtInLeavesImplicitBoundsStackOpt< T, Heap, CloudType >, Nabo::OpenCLSearch< T, CloudType >, and Nabo::OpenCLSearch< T, Eigen::Matrix< T, Eigen::Dynamic, Eigen::Dynamic > >.