44 #include <pcl/point_cloud.h>
45 #include <pcl/point_representation.h>
46 #include <pcl/common/io.h>
47 #include <pcl/common/copy_point.h>
55 template <
typename Po
intT>
70 using Ptr = shared_ptr<KdTree<PointT> >;
71 using ConstPtr = shared_ptr<const KdTree<PointT> >;
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
201 std::vector<int> &k_indices, std::vector<float> &k_sqr_distances)
const
205 assert (index >= 0 && index <
static_cast<int> (
input_->points.size ()) &&
"Out-of-bounds error in nearestKSearch!");
208 assert (index >= 0 && index <
static_cast<int> (
indices_->size ()) &&
"Out-of-bounds error in nearestKSearch!");
224 std::vector<float> &k_sqr_distances,
unsigned int max_nn = 0)
const = 0;
245 std::vector<int> &k_indices, std::vector<float> &k_sqr_distances,
246 unsigned int max_nn = 0)
const
248 assert (index >= 0 && index <
static_cast<int> (cloud.
points.size ()) &&
"Out-of-bounds error in radiusSearch!");
249 return (
radiusSearch(cloud.
points[index], radius, k_indices, k_sqr_distances, max_nn));
262 template <
typename Po
intTDiff>
inline int
263 radiusSearchT (
const PointTDiff &point,
double radius, std::vector<int> &k_indices,
264 std::vector<float> &k_sqr_distances,
unsigned int max_nn = 0)
const
268 return (
radiusSearch (p, radius, k_indices, k_sqr_distances, max_nn));
292 std::vector<float> &k_sqr_distances,
unsigned int max_nn = 0)
const
296 assert (index >= 0 && index <
static_cast<int> (
input_->points.size ()) &&
"Out-of-bounds error in radiusSearch!");
297 return (
radiusSearch (
input_->points[index], radius, k_indices, k_sqr_distances, max_nn));
299 assert (index >= 0 && index <
static_cast<int> (
indices_->size ()) &&
"Out-of-bounds error in radiusSearch!");
DefaultPointRepresentation extends PointRepresentation to define default behavior for common point ty...
KdTree represents the base spatial locator class for kd-tree implementations.
shared_ptr< std::vector< int > > IndicesPtr
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.
PointRepresentationConstPtr point_representation_
For converting different point structures into k-dimensional vectors for nearest-neighbor search.
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.
PointCloudConstPtr getInputCloud() const
Get a pointer to the input point cloud dataset.
KdTree(bool sorted=true)
Empty constructor for KdTree.
typename PointRepresentation::ConstPtr PointRepresentationConstPtr
IndicesConstPtr getIndices() const
Get a pointer to the vector of indices used.
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 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).
typename PointCloud::ConstPtr PointCloudConstPtr
typename PointCloud::Ptr PointCloudPtr
PointCloudConstPtr input_
The input point cloud dataset containing the points we need to use.
float getEpsilon() const
Get the search epsilon precision (error bound) for nearest neighbors searches.
virtual void setEpsilon(float eps)
Set the search epsilon precision (error bound) for nearest neighbors searches.
float epsilon_
Epsilon precision (error bound) for nearest neighbors searches.
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.
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).
int min_pts_
Minimum allowed number of k nearest neighbors points that a viable result must contain.
void setPointRepresentation(const PointRepresentationConstPtr &point_representation)
Provide a pointer to the point representation to use to convert points into k-D vectors.
void setMinPts(int min_pts)
Minimum allowed number of k nearest neighbors points that a viable result must contain.
virtual void setInputCloud(const PointCloudConstPtr &cloud, const IndicesConstPtr &indices=IndicesConstPtr())
Provide a pointer to the input dataset.
bool sorted_
Return the radius search neighbours sorted.
int getMinPts() const
Get the minimum allowed number of k nearest neighbors points that a viable result must contain.
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.
IndicesConstPtr indices_
A pointer to the vector of point indices to use.
shared_ptr< const std::vector< int > > IndicesConstPtr
shared_ptr< KdTree< PointT > > Ptr
virtual ~KdTree()
Destructor for KdTree.
shared_ptr< const KdTree< PointT > > ConstPtr
virtual std::string getName() const =0
Class getName method.
PointRepresentationConstPtr getPointRepresentation() const
Get a pointer to the point representation used when converting points into k-D vectors.
PointCloud represents the base class in PCL for storing collections of 3D points.
shared_ptr< PointCloud< PointT > > Ptr
std::vector< PointT, Eigen::aligned_allocator< PointT > > points
The point data.
shared_ptr< const PointCloud< PointT > > ConstPtr
PointRepresentation provides a set of methods for converting a point structs/object into an n-dimensi...
shared_ptr< const PointRepresentation< PointT > > ConstPtr
void copyPoint(const PointInT &point_in, PointOutT &point_out)
Copy the fields of a source point into a target point.
Defines functions, macros and traits for allocating and using memory.
shared_ptr< const Indices > IndicesConstPtr
Defines all the PCL and non-PCL macros used.
A point structure representing Euclidean xyz coordinates, and the RGB color.