libnabo
1.0.4
|
KDTree, balanced, points in nodes, stack, implicit bounds, balance aspect ratio. More...
#include <nabo_private.h>
Classes | |
struct | CompareDim |
Functor to compare point values on a given dimension. More... | |
struct | Node |
Tree node for CL. More... | |
Public Types | |
typedef NearestNeighbourSearch < T >::Vector | Vector |
typedef NearestNeighbourSearch < T >::Matrix | Matrix |
typedef NearestNeighbourSearch < T >::Index | Index |
typedef NearestNeighbourSearch < T >::IndexVector | IndexVector |
typedef NearestNeighbourSearch < T >::IndexMatrix | IndexMatrix |
![]() | |
typedef NearestNeighbourSearch < T >::Vector | Vector |
typedef NearestNeighbourSearch < T >::Matrix | Matrix |
typedef NearestNeighbourSearch < T >::Index | Index |
typedef NearestNeighbourSearch < T >::IndexVector | IndexVector |
typedef NearestNeighbourSearch < T >::IndexMatrix | IndexMatrix |
![]() | |
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 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 | |
Protected Types | |
typedef Index | BuildPoint |
a point during kd-tree construction is just its index | |
typedef std::vector< BuildPoint > | BuildPoints |
points during kd-tree construction | |
typedef BuildPoints::iterator | BuildPointsIt |
iterator to points during kd-tree construction | |
typedef BuildPoints::const_iterator | BuildPointsCstIt |
const-iterator to points during kd-tree construction | |
typedef std::vector< Node > | Nodes |
dense vector of search nodes | |
Protected Member Functions | |
size_t | childLeft (size_t pos) const |
Return the left child of pos. | |
size_t | childRight (size_t pos) const |
Return the right child of pos. | |
size_t | parent (size_t pos) const |
Return the parent of pos. | |
![]() | |
OpenCLSearch (const Matrix &cloud, const Index dim, const unsigned creationOptionFlags, const cl_device_type deviceType) | |
constructor, calls NearestNeighbourSearch<T>(cloud) | |
void | initOpenCL (const char *clFileName, const char *kernelName, const std::string &additionalDefines="") |
Initialize CL support. More... | |
![]() | |
NearestNeighbourSearch (const Matrix &cloud, const Index dim, const unsigned creationOptionFlags) | |
constructor | |
void | checkSizesKnn (const Matrix &query, const IndexMatrix &indices, const Matrix &dists2, const Index k, const unsigned optionFlags, const Vector *maxRadii=0) const |
Make sure that the output matrices have the right sizes. Throw an exception otherwise. More... | |
Protected Attributes | |
Nodes | nodes |
search nodes | |
cl::Buffer | nodesCL |
CL buffer for search nodes. | |
![]() | |
const cl_device_type | deviceType |
the type of device to run CL code on (CL_DEVICE_TYPE_CPU or CL_DEVICE_TYPE_GPU) | |
cl::Context & | context |
the CL context | |
cl::Kernel | knnKernel |
the kernel to perform knnSearch, mutable because it is stateful, but conceptually const | |
cl::CommandQueue | queue |
the command queue | |
cl::Buffer | cloudCL |
the buffer for the input data | |
size_t | getTreeDepth (size_t size) const |
Return the max depth of a tree of a given size. | |
size_t | getTreeSize (size_t size) const |
Return the storage size of tree of a given size. | |
void | buildNodes (const BuildPointsIt first, const BuildPointsIt last, const size_t pos, const Vector minValues, const Vector maxValues) |
Recurse to build nodes. | |
KDTreeBalancedPtInNodesStackOpenCL (const Matrix &cloud, const Index dim, const unsigned creationOptionFlags, const cl_device_type deviceType) | |
constructor, calls OpenCLSearch<T>(cloud, ...) | |
Additional Inherited Members | |
![]() | |
virtual unsigned long | knn (const Matrix &query, IndexMatrix &indices, Matrix &dists2, const Index k, const T epsilon, const unsigned optionFlags, const T maxRadius) const |
Find the k nearest neighbours for each point of query. More... | |
![]() | |
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. More... | |
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. More... | |
virtual | ~NearestNeighbourSearch () |
virtual destructor | |
![]() | |
static NearestNeighbourSearch * | create (const Matrix &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. More... | |
static NearestNeighbourSearch * | createBruteForce (const Matrix &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. More... | |
static NearestNeighbourSearch * | createKDTreeLinearHeap (const Matrix &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) More... | |
static NearestNeighbourSearch * | createKDTreeTreeHeap (const Matrix &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) More... | |
![]() | |
const Matrix & | cloud |
the reference to the data-point cloud, which must remain valid during the lifetime of the NearestNeighbourSearch object | |
const Index | dim |
the dimensionality of the data-point cloud | |
const unsigned | creationOptionFlags |
creation options | |
const Vector | minBound |
the low bound of the search space (axis-aligned bounding box) | |
const Vector | maxBound |
the high bound of the search space (axis-aligned bounding box) | |
KDTree, balanced, points in nodes, stack, implicit bounds, balance aspect ratio.