pcl::KdTree< PointT > Class Template Referenceabstract
Module kdtree

KdTree represents the base spatial locator class for kd-tree implementations. More...

`#include <pcl/kdtree/kdtree.h>`

Inheritance diagram for pcl::KdTree< PointT >:

## Public Types

using | IndicesPtr = shared_ptr< std::vector< int > >
using | IndicesConstPtr = shared_ptr< const std::vector< int > >
using | PointCloud = pcl::PointCloud< PointT >
using | PointCloudPtr = typename PointCloud::Ptr
using | PointCloudConstPtr = typename PointCloud::ConstPtr
using | PointRepresentation = pcl::PointRepresentation< PointT >
using | PointRepresentationConstPtr = typename PointRepresentation::ConstPtr
using | Ptr = shared_ptr< KdTree< PointT > >
using | ConstPtr = shared_ptr< const KdTree< PointT > >

## Public Member Functions

| KdTree (bool sorted=true)
| Empty constructor for KdTree. More...
virtual void | setInputCloud (const PointCloudConstPtr &cloud, const IndicesConstPtr &indices=IndicesConstPtr())
| Provide a pointer to the input dataset. More...
IndicesConstPtr | getIndices () const
| Get a pointer to the vector of indices used. More...
PointCloudConstPtr | getInputCloud () const
| Get a pointer to the input point cloud dataset. 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 | getPointRepresentation () const
| Get a pointer to the point representation used when converting points into k-D vectors. More...
virtual | ~KdTree ()
| Destructor for KdTree. More...
virtual int | nearestKSearch (const PointT &p_q, int k, std::vector< int > &k_indices, std::vector< float > &k_sqr_distances) const =0
| Search for k-nearest neighbors for the given query point. More...
virtual int | nearestKSearch (const PointCloud &cloud, int index, int k, std::vector< int > &k_indices, std::vector< float > &k_sqr_distances) const
| Search for k-nearest neighbors for the given query point. More...
template<typename PointTDiff >
int | nearestKSearchT (const PointTDiff &point, int k, std::vector< int > &k_indices, std::vector< float > &k_sqr_distances) const
| Search for k-nearest neighbors for the given query point. More...
virtual int | nearestKSearch (int index, int k, std::vector< int > &k_indices, std::vector< float > &k_sqr_distances) const
| Search for k-nearest neighbors for the given query point (zero-copy). More...
virtual int | radiusSearch (const PointT &p_q, double radius, std::vector< int > &k_indices, std::vector< float > &k_sqr_distances, unsigned int max_nn=0) const =0
| Search for all the nearest neighbors of the query point in a given radius. More...
virtual int | radiusSearch (const PointCloud &cloud, int index, double radius, std::vector< int > &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...
template<typename PointTDiff >
int | radiusSearchT (const PointTDiff &point, double radius, std::vector< int > &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 (int index, double radius, std::vector< int > &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...
virtual void | setEpsilon (float eps)
| Set the search epsilon precision (error bound) for nearest neighbors searches. More...
float | getEpsilon () const
| Get the search epsilon precision (error bound) for nearest neighbors searches. More...
void | setMinPts (int min_pts)
| Minimum allowed number of k nearest neighbors points that a viable result must contain. More...
int | getMinPts () const
| Get the minimum allowed number of k nearest neighbors points that a viable result must contain. More...

## Protected Member Functions

virtual std::string | getName () const =0
| Class getName method. More...

## Protected Attributes

PointCloudConstPtr | input_
| The input point cloud dataset containing the points we need to use. More...
IndicesConstPtr | indices_
| A pointer to the vector of point indices to use. More...
float | epsilon_
| Epsilon precision (error bound) for nearest neighbors searches. More...
int | min_pts_
| Minimum allowed number of k nearest neighbors points that a viable result must contain. More...
bool | sorted_
| Return the radius search neighbours sorted. More...
PointRepresentationConstPtr | point_representation_
| For converting different point structures into k-dimensional vectors for nearest-neighbor search. More...

## Detailed Description

### template<typename PointT>
class pcl::KdTree< PointT >

KdTree represents the base spatial locator class for kd-tree implementations.

Author
  Radu B Rusu, Bastian Steder, Michael Dixon

Definition at line 55 of file kdtree.h.

## Member Typedef Documentation

## ConstPtr

template<typename PointT>

using pcl::KdTree< PointT >::ConstPtr = shared_ptr<const KdTree<PointT> >

Definition at line 70 of file kdtree.h.

## IndicesConstPtr

template<typename PointT>

using pcl::KdTree< PointT >::IndicesConstPtr = shared_ptr<const std::vector<int> >

Definition at line 59 of file kdtree.h.

## IndicesPtr

template<typename PointT>

using pcl::KdTree< PointT >::IndicesPtr = shared_ptr<std::vector<int> >

Definition at line 58 of file kdtree.h.

## PointCloud

template<typename PointT>

using pcl::KdTree< PointT >::PointCloud = pcl::PointCloud<PointT>

Definition at line 61 of file kdtree.h.

## PointCloudConstPtr

template<typename PointT>

using pcl::KdTree< PointT >::PointCloudConstPtr = typename PointCloud::ConstPtr

Definition at line 63 of file kdtree.h.

## PointCloudPtr

template<typename PointT>

using pcl::KdTree< PointT >::PointCloudPtr = typename PointCloud::Ptr

Definition at line 62 of file kdtree.h.

## PointRepresentation

template<typename PointT>

using pcl::KdTree< PointT >::PointRepresentation = pcl::PointRepresentation<PointT>

Definition at line 65 of file kdtree.h.

## PointRepresentationConstPtr

template<typename PointT>

using pcl::KdTree< PointT >::PointRepresentationConstPtr = typename PointRepresentation::ConstPtr

Definition at line 66 of file kdtree.h.

## Ptr

template<typename PointT>

using pcl::KdTree< PointT >::Ptr = shared_ptr<KdTree<PointT> >

Definition at line 69 of file kdtree.h.

## Constructor & Destructor Documentation

## KdTree()

template<typename PointT>

pcl::KdTree< PointT >::KdTree | ( | bool | sorted = `true` | ) |

inline

Empty constructor for KdTree.

Sets some internal values to their defaults.

Parameters

  [in] | sorted | set to true if the application that the tree will be used for requires sorted nearest neighbor indices (default). False otherwise.

Definition at line 75 of file kdtree.h.

## ~KdTree()

template<typename PointT>

virtual pcl::KdTree< PointT >::~KdTree | ( |  | ) |

inline virtual

Destructor for KdTree.

Deletes all allocated data arrays and destroys the kd-tree structures.

Definition at line 125 of file kdtree.h.

## Member Function Documentation

## getEpsilon()

template<typename PointT>

float pcl::KdTree< PointT >::getEpsilon | ( |  | ) | const

inline

Get the search epsilon precision (error bound) for nearest neighbors searches.

Definition at line 313 of file kdtree.h.

## getIndices()

template<typename PointT>

IndicesConstPtr pcl::KdTree< PointT >::getIndices | ( |  | ) | const

inline

Get a pointer to the vector of indices used.

Definition at line 94 of file kdtree.h.

Referenced by pcl::extractEuclideanClusters().

## getInputCloud()

template<typename PointT>

PointCloudConstPtr pcl::KdTree< PointT >::getInputCloud | ( |  | ) | const

inline

Get a pointer to the input point cloud dataset.

Definition at line 101 of file kdtree.h.

Referenced by pcl::extractEuclideanClusters().

## getMinPts()

template<typename PointT>

int pcl::KdTree< PointT >::getMinPts | ( |  | ) | const

inline

Get the minimum allowed number of k nearest neighbors points that a viable result must contain.

Definition at line 329 of file kdtree.h.

## getName()

template<typename PointT>

virtual std::string pcl::KdTree< PointT >::getName | ( |  | ) | const

protected pure virtual

Class getName method.

## getPointRepresentation()

template<typename PointT>

PointRepresentationConstPtr pcl::KdTree< PointT >::getPointRepresentation | ( |  | ) | const

inline

Get a pointer to the point representation used when converting points into k-D vectors.

Definition at line 119 of file kdtree.h.

## nearestKSearch() [1/3]

template<typename PointT>

virtual int pcl::KdTree< PointT >::nearestKSearch | ( | const PointCloud & | cloud,
|  | int | index,
|  | int | k,
|  | std::vector< int > & | k_indices,
|  | std::vector< float > & | k_sqr_distances
| ) |  | const

inline virtual

Search for k-nearest neighbors for the given query point.

Attention
  This method does not do any bounds checking for the input index (i.e., index >= cloud.points.size () || index < 0), and assumes valid (i.e., finite) data.

Parameters

  [in] | cloud | the point cloud data
  [in] | index | a valid index in cloud representing a valid (i.e., finite) 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!)

Returns
  number of neighbors found

Exceptions

  asserts | in debug mode if the index is not between 0 and the maximum number of points

Definition at line 156 of file kdtree.h.

## nearestKSearch() [2/3]

template<typename PointT>

virtual int pcl::KdTree< PointT >::nearestKSearch | ( | const PointT & | p_q,
|  | int | k,
|  | std::vector< int > & | k_indices,
|  | std::vector< float > & | k_sqr_distances
| ) |  | const

pure virtual

Search for k-nearest neighbors for the given query point.

Parameters

  [in] | p_q | 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!)

Returns
  number of neighbors found

Implemented in pcl::KdTreeFLANN< SceneT >, pcl::KdTreeFLANN< PointTarget >, pcl::KdTreeFLANN< PointT, Dist >, pcl::KdTreeFLANN< PointT >, pcl::KdTreeFLANN< pcl::VFHSignature308 >, pcl::KdTreeFLANN< pcl::PointXYZRGB >, pcl::KdTreeFLANN< pcl::PointXYZ >, pcl::KdTreeFLANN< pcl::InterestPoint >, and pcl::KdTreeFLANN< FeatureT >.

Referenced by pcl::KdTree< FeatureT >::nearestKSearch(), and pcl::KdTree< FeatureT >::nearestKSearchT().

## nearestKSearch() [3/3]

template<typename PointT>

virtual int pcl::KdTree< PointT >::nearestKSearch | ( | int | index,
|  | int | k,
|  | std::vector< int > & | k_indices,
|  | std::vector< float > & | k_sqr_distances
| ) |  | const

inline virtual

Search for k-nearest neighbors for the given query point (zero-copy).

Attention
  This method does not do any bounds checking for the input index (i.e., index >= cloud.points.size () || index < 0), and assumes valid (i.e., finite) data.

Parameters

  [in] | index | a valid index representing a valid query point in the dataset given by setInputCloud. If indices were given in setInputCloud, index will be the position in the indices vector.
  [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!)

Returns
  number of neighbors found

Exceptions

  asserts | in debug mode if the index is not between 0 and the maximum number of points

Definition at line 199 of file kdtree.h.

## nearestKSearchT()

template<typename PointT>
template<typename PointTDiff >

int pcl::KdTree< PointT >::nearestKSearchT | ( | const PointTDiff & | point,
|  | int | k,
|  | std::vector< int > & | k_indices,
|  | std::vector< float > & | k_sqr_distances
| ) |  | const

inline

Search for k-nearest neighbors for the given query point.

This method accepts a different template parameter for the point type.

Parameters

  [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!)

Returns
  number of neighbors found

Definition at line 173 of file kdtree.h.

Referenced by pcl::getApproximateIndices().

## radiusSearch() [1/3]

template<typename PointT>

virtual int pcl::KdTree< PointT >::radiusSearch | ( | const PointCloud & | cloud,
|  | int | index,
|  | double | radius,
|  | std::vector< int > & | k_indices,
|  | std::vector< float > & | k_sqr_distances,
|  | unsigned int | max_nn = `0`
| ) |  | const

inline virtual

Search for all the nearest neighbors of the query point in a given radius.

Attention
  This method does not do any bounds checking for the input index (i.e., index >= cloud.points.size () || index < 0), and assumes valid (i.e., finite) data.

Parameters

  [in] | cloud | the point cloud data
  [in] | index | a valid index in cloud representing a valid (i.e., finite) 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.

Returns
  number of neighbors found in radius

Exceptions

  asserts | in debug mode if the index is not between 0 and the maximum number of points

Definition at line 243 of file kdtree.h.

## radiusSearch() [2/3]

template<typename PointT>

virtual int pcl::KdTree< PointT >::radiusSearch | ( | const PointT & | p_q,
|  | double | radius,
|  | std::vector< int > & | k_indices,
|  | std::vector< float > & | k_sqr_distances,
|  | unsigned int | max_nn = `0`
| ) |  | const

pure virtual

Search for all the nearest neighbors of the query point in a given radius.

Parameters

  [in] | p_q | 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.

Returns
  number of neighbors found in radius

Implemented in pcl::KdTreeFLANN< SceneT >, pcl::KdTreeFLANN< PointTarget >, pcl::KdTreeFLANN< PointT, Dist >, pcl::KdTreeFLANN< PointT >, pcl::KdTreeFLANN< pcl::VFHSignature308 >, pcl::KdTreeFLANN< pcl::PointXYZRGB >, pcl::KdTreeFLANN< pcl::PointXYZ >, pcl::KdTreeFLANN< pcl::InterestPoint >, and pcl::KdTreeFLANN< FeatureT >.

Referenced by pcl::extractEuclideanClusters(), pcl::KdTree< FeatureT >::radiusSearch(), and pcl::KdTree< FeatureT >::radiusSearchT().

## radiusSearch() [3/3]

template<typename PointT>

virtual int pcl::KdTree< PointT >::radiusSearch | ( | int | index,
|  | double | radius,
|  | std::vector< int > & | k_indices,
|  | std::vector< float > & | k_sqr_distances,
|  | unsigned int | max_nn = `0`
| ) |  | const

inline virtual

Search for all the nearest neighbors of the query point in a given radius (zero-copy).

Attention
  This method does not do any bounds checking for the input index (i.e., index >= cloud.points.size () || index < 0), and assumes valid (i.e., finite) data.

Parameters

  [in] | index | a valid index representing a valid query point in the dataset given by setInputCloud. If indices were given in setInputCloud, index will be the position in the indices vector.
  [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.

Returns
  number of neighbors found in radius

Exceptions

  asserts | in debug mode if the index is not between 0 and the maximum number of points

Definition at line 290 of file kdtree.h.

## radiusSearchT()

template<typename PointT>
template<typename PointTDiff >

int pcl::KdTree< PointT >::radiusSearchT | ( | const PointTDiff & | point,
|  | double | radius,
|  | std::vector< int > & | k_indices,
|  | std::vector< float > & | k_sqr_distances,
|  | unsigned int | max_nn = `0`
| ) |  | const

inline

Search for all the nearest neighbors of the query point in a given radius.

Parameters

  [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.

Returns
  number of neighbors found in radius

Definition at line 262 of file kdtree.h.

## setEpsilon()

template<typename PointT>

virtual void pcl::KdTree< PointT >::setEpsilon | ( | float | eps | ) |

inline virtual

Set the search epsilon precision (error bound) for nearest neighbors searches.

Parameters

  [in] | eps | precision (error bound) for nearest neighbors searches

Reimplemented in pcl::KdTreeFLANN< PointT, Dist >, pcl::KdTreeFLANN< PointT >, pcl::KdTreeFLANN< pcl::PointXYZRGB >, pcl::KdTreeFLANN< pcl::VFHSignature308 >, pcl::KdTreeFLANN< SceneT >, pcl::KdTreeFLANN< PointTarget >, pcl::KdTreeFLANN< pcl::InterestPoint >, pcl::KdTreeFLANN< pcl::PointXYZ >, and pcl::KdTreeFLANN< FeatureT >.

Definition at line 306 of file kdtree.h.

## setInputCloud()

template<typename PointT>

virtual void pcl::KdTree< PointT >::setInputCloud | ( | const PointCloudConstPtr & | cloud,
|  | const IndicesConstPtr & | indices = `IndicesConstPtr ()`
| ) |  |

inline virtual

Provide a pointer to the input dataset.

Parameters

  [in] | cloud | the const boost shared pointer to a PointCloud message
  [in] | indices | the point indices subset that is to be used from cloud - if NULL the whole cloud is used

Reimplemented in pcl::KdTreeFLANN< PointT, Dist >, pcl::KdTreeFLANN< PointT >, pcl::KdTreeFLANN< pcl::PointXYZRGB >, pcl::KdTreeFLANN< pcl::VFHSignature308 >, pcl::KdTreeFLANN< SceneT >, pcl::KdTreeFLANN< PointTarget >, pcl::KdTreeFLANN< pcl::InterestPoint >, pcl::KdTreeFLANN< pcl::PointXYZ >, and pcl::KdTreeFLANN< FeatureT >.

Definition at line 86 of file kdtree.h.

Referenced by pcl::KdTree< FeatureT >::setPointRepresentation().

## setMinPts()

template<typename PointT>

void pcl::KdTree< PointT >::setMinPts | ( | int | min_pts | ) |

inline

Minimum allowed number of k nearest neighbors points that a viable result must contain.

Parameters

  [in] | min_pts | the minimum number of neighbors in a viable neighborhood

Definition at line 322 of file kdtree.h.

## setPointRepresentation()

template<typename PointT>

void pcl::KdTree< PointT >::setPointRepresentation | ( | const PointRepresentationConstPtr & | point_representation | ) |

inline

Provide a pointer to the point representation to use to convert points into k-D vectors.

Parameters

  [in] | point_representation | the const boost shared pointer to a PointRepresentation

Definition at line 110 of file kdtree.h.

## Member Data Documentation

## epsilon_

template<typename PointT>

float pcl::KdTree< PointT >::epsilon_

protected

Epsilon precision (error bound) for nearest neighbors searches.

Definition at line 342 of file kdtree.h.

Referenced by pcl::KdTree< FeatureT >::getEpsilon(), and pcl::KdTree< FeatureT >::setEpsilon().

## indices_

template<typename PointT>

IndicesConstPtr pcl::KdTree< PointT >::indices_

protected

A pointer to the vector of point indices to use.

Definition at line 339 of file kdtree.h.

Referenced by pcl::KdTree< FeatureT >::getIndices(), pcl::KdTree< FeatureT >::nearestKSearch(), pcl::KdTree< FeatureT >::radiusSearch(), pcl::KdTree< FeatureT >::setInputCloud(), and pcl::KdTree< FeatureT >::setPointRepresentation().

## input_

template<typename PointT>

PointCloudConstPtr pcl::KdTree< PointT >::input_

protected

The input point cloud dataset containing the points we need to use.

Definition at line 336 of file kdtree.h.

Referenced by pcl::KdTree< FeatureT >::getInputCloud(), pcl::KdTree< FeatureT >::nearestKSearch(), pcl::KdTree< FeatureT >::radiusSearch(), pcl::KdTree< FeatureT >::setInputCloud(), and pcl::KdTree< FeatureT >::setPointRepresentation().

## min_pts_

template<typename PointT>

int pcl::KdTree< PointT >::min_pts_

protected

Minimum allowed number of k nearest neighbors points that a viable result must contain.

Definition at line 345 of file kdtree.h.

Referenced by pcl::KdTree< FeatureT >::getMinPts(), and pcl::KdTree< FeatureT >::setMinPts().

## point_representation_

template<typename PointT>

PointRepresentationConstPtr pcl::KdTree< PointT >::point_representation_

protected

For converting different point structures into k-dimensional vectors for nearest-neighbor search.

Definition at line 351 of file kdtree.h.

Referenced by pcl::KdTree< FeatureT >::getPointRepresentation(), and pcl::KdTree< FeatureT >::setPointRepresentation().

## sorted_

template<typename PointT>

bool pcl::KdTree< PointT >::sorted_

protected

Return the radius search neighbours sorted.

Definition at line 348 of file kdtree.h.

The documentation for this class was generated from the following file:

- pcl/kdtree/kdtree.h