39 #ifndef PCL_KDTREE_KDTREE_H_
40 #define PCL_KDTREE_KDTREE_H_
43 #include <pcl/pcl_macros.h>
44 #include <pcl/point_cloud.h>
45 #include <pcl/point_representation.h>
46 #include <pcl/common/io.h>
54 template <
typename Po
intT>
58 typedef boost::shared_ptr <std::vector<int> >
IndicesPtr;
70 typedef boost::shared_ptr<KdTree<PointT> >
Ptr;
71 typedef boost::shared_ptr<const KdTree<PointT> >
ConstPtr;
101 inline PointCloudConstPtr
138 std::vector<int> &k_indices, std::vector<float> &k_sqr_distances)
const = 0;
158 std::vector<int> &k_indices, std::vector<float> &k_sqr_distances)
const
160 assert (index >= 0 && index < static_cast<int> (cloud.
points.size ()) &&
"Out-of-bounds error in nearestKSearch!");
173 template <
typename Po
intTDiff>
inline int
175 std::vector<int> &k_indices, std::vector<float> &k_sqr_distances)
const
205 std::vector<int> &k_indices, std::vector<float> &k_sqr_distances)
const
209 assert (index >= 0 && index < static_cast<int> (
input_->points.size ()) &&
"Out-of-bounds error in nearestKSearch!");
214 assert (index >= 0 && index < static_cast<int> (
indices_->size ()) &&
"Out-of-bounds error in nearestKSearch!");
231 std::vector<float> &k_sqr_distances,
unsigned int max_nn = 0)
const = 0;
252 std::vector<int> &k_indices, std::vector<float> &k_sqr_distances,
253 unsigned int max_nn = 0)
const
255 assert (index >= 0 && index < static_cast<int> (cloud.
points.size ()) &&
"Out-of-bounds error in radiusSearch!");
256 return (
radiusSearch(cloud.
points[index], radius, k_indices, k_sqr_distances, max_nn));
269 template <
typename Po
intTDiff>
inline int
270 radiusSearchT (
const PointTDiff &point,
double radius, std::vector<int> &k_indices,
271 std::vector<float> &k_sqr_distances,
unsigned int max_nn = 0)
const
279 return (
radiusSearch (p, radius, k_indices, k_sqr_distances, max_nn));
303 std::vector<float> &k_sqr_distances,
unsigned int max_nn = 0)
const
307 assert (index >= 0 && index < static_cast<int> (
input_->points.size ()) &&
"Out-of-bounds error in radiusSearch!");
308 return (
radiusSearch (
input_->points[index], radius, k_indices, k_sqr_distances, max_nn));
312 assert (index >= 0 && index < static_cast<int> (
indices_->size ()) &&
"Out-of-bounds error in radiusSearch!");
374 #endif //#ifndef _PCL_KDTREE_KDTREE_H_
PointCloudConstPtr getInputCloud() const
Get a pointer to the input point cloud dataset.
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.
DefaultPointRepresentation extends PointRepresentation to define default behavior for common point ty...
boost::shared_ptr< const std::vector< int > > IndicesConstPtr
KdTree(bool sorted=true)
Empty constructor for KdTree.
boost::shared_ptr< const PointRepresentation > PointRepresentationConstPtr
boost::shared_ptr< std::vector< int > > IndicesPtr
IndicesConstPtr indices_
A pointer to the vector of point indices to use.
virtual void setEpsilon(float eps)
Set the search epsilon precision (error bound) for nearest neighbors searches.
int min_pts_
Minimum allowed number of k nearest neighbors points that a viable result must contain.
boost::mpl::remove_if< Sequence1, boost::mpl::not_< boost::mpl::contains< Sequence2, boost::mpl::_1 > > >::type type
bool sorted_
Return the radius search neighbours sorted.
virtual void setInputCloud(const PointCloudConstPtr &cloud, const IndicesConstPtr &indices=IndicesConstPtr())
Provide a pointer to the input dataset.
PointRepresentationConstPtr getPointRepresentation() const
Get a pointer to the point representation used when converting points into k-D vectors.
float getEpsilon() const
Get the search epsilon precision (error bound) for nearest neighbors searches.
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.
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).
boost::shared_ptr< PointCloud > PointCloudPtr
float epsilon_
Epsilon precision (error bound) for nearest neighbors searches.
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.
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.
boost::shared_ptr< const KdTree< PointT > > ConstPtr
boost::shared_ptr< const std::vector< int > > IndicesConstPtr
IndicesConstPtr getIndices() const
Get a pointer to the vector of indices used.
PointCloudConstPtr input_
The input point cloud dataset containing the points we need to use.
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.
void setPointRepresentation(const PointRepresentationConstPtr &point_representation)
Provide a pointer to the point representation to use to convert points into k-D vectors.
KdTree represents the base spatial locator class for kd-tree implementations.
A point structure representing Euclidean xyz coordinates, and the RGB color.
boost::shared_ptr< KdTree< PointT > > Ptr
PointRepresentationConstPtr point_representation_
For converting different point structures into k-dimensional vectors for nearest-neighbor search...
std::vector< PointT, Eigen::aligned_allocator< PointT > > points
The point data.
pcl::PointRepresentation< PointT > PointRepresentation
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.
int getMinPts() const
Get the minimum allowed number of k nearest neighbors points that a viable result must contain...
virtual ~KdTree()
Destructor for KdTree.
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).
void setMinPts(int min_pts)
Minimum allowed number of k nearest neighbors points that a viable result must contain.
pcl::PointCloud< PointT > PointCloud
Helper functor structure for concatenate.
boost::shared_ptr< const PointCloud > PointCloudConstPtr
PointRepresentation provides a set of methods for converting a point structs/object into an n-dimensi...
virtual std::string getName() const =0
Class getName method.