41 #include <pcl/memory.h>
42 #include <pcl/pcl_macros.h>
43 #include <pcl/point_cloud.h>
44 #include <pcl/point_representation.h>
45 #include <pcl/common/copy_point.h>
54 template <
typename Po
intT>
69 using Ptr = shared_ptr<KdTree<PointT> >;
70 using ConstPtr = shared_ptr<const KdTree<PointT> >;
100 inline PointCloudConstPtr
137 Indices &k_indices, std::vector<float> &k_sqr_distances)
const = 0;
157 Indices &k_indices, std::vector<float> &k_sqr_distances)
const
159 assert (index >= 0 && index < static_cast<int> (cloud.
size ()) &&
"Out-of-bounds error in nearestKSearch!");
160 return (
nearestKSearch (cloud[index], k, k_indices, k_sqr_distances));
172 template <
typename Po
intTDiff>
inline int
174 Indices &k_indices, std::vector<float> &k_sqr_distances)
const
200 Indices &k_indices, std::vector<float> &k_sqr_distances)
const
204 assert (index >= 0 && index < static_cast<int> (
input_->size ()) &&
"Out-of-bounds error in nearestKSearch!");
207 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 Indices &k_indices, std::vector<float> &k_sqr_distances,
246 unsigned int max_nn = 0)
const
248 assert (index >= 0 && index < static_cast<int> (cloud.
size ()) &&
"Out-of-bounds error in radiusSearch!");
249 return (
radiusSearch(cloud[index], radius, k_indices, k_sqr_distances, max_nn));
262 template <
typename Po
intTDiff>
inline int
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_->size ()) &&
"Out-of-bounds error in radiusSearch!");
299 assert (index >= 0 && index < static_cast<int> (
indices_->size ()) &&
"Out-of-bounds error in radiusSearch!");
float getEpsilon() const
Get the search epsilon precision (error bound) for nearest neighbors searches.
shared_ptr< PointCloud< PointT > > Ptr
bool sorted_
Return the radius search neighbours sorted.
virtual int radiusSearch(const PointCloud &cloud, int index, double radius, Indices &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.
void setPointRepresentation(const PointRepresentationConstPtr &point_representation)
Provide a pointer to the point representation to use to convert points into k-D vectors.
virtual int nearestKSearch(int index, unsigned int k, Indices &k_indices, std::vector< float > &k_sqr_distances) const
Search for k-nearest neighbors for the given query point (zero-copy).
typename PointCloud::Ptr PointCloudPtr
typename PointRepresentation::ConstPtr PointRepresentationConstPtr
shared_ptr< Indices > IndicesPtr
PointCloudConstPtr getInputCloud() const
Get a pointer to the input point cloud dataset.
shared_ptr< KdTree< FeatureT > > Ptr
shared_ptr< const Indices > IndicesConstPtr
int nearestKSearchT(const PointTDiff &point, unsigned int k, Indices &k_indices, std::vector< float > &k_sqr_distances) const
Search for k-nearest neighbors for the given query point.
shared_ptr< const Indices > IndicesConstPtr
IndicesConstPtr getIndices() const
Get a pointer to the vector of indices used.
virtual ~KdTree()=default
Destructor for KdTree.
int min_pts_
Minimum allowed number of k nearest neighbors points that a viable result must contain.
float epsilon_
Epsilon precision (error bound) for nearest neighbors searches.
virtual void setInputCloud(const PointCloudConstPtr &cloud, const IndicesConstPtr &indices=IndicesConstPtr())
Provide a pointer to the input dataset.
typename PointCloud::ConstPtr PointCloudConstPtr
PointRepresentationConstPtr point_representation_
For converting different point structures into k-dimensional vectors for nearest-neighbor search...
shared_ptr< const PointRepresentation< PointT > > ConstPtr
virtual int radiusSearch(int index, double radius, Indices &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).
bool getSortedResults() const
Gets whether the results should be sorted (ascending in the distance) or not Otherwise the results ma...
IndicesAllocator<> Indices
Type used for indices in PCL.
virtual int nearestKSearch(const PointCloud &cloud, int index, unsigned int k, Indices &k_indices, std::vector< float > &k_sqr_distances) const
Search for k-nearest neighbors for the given query point.
PointRepresentationConstPtr getPointRepresentation() const
Get a pointer to the point representation used when converting points into k-D vectors.
int getMinPts() const
Get the minimum allowed number of k nearest neighbors points that a viable result must contain...
PointCloudConstPtr input_
The input point cloud dataset containing the points we need to use.
IndicesConstPtr indices_
A pointer to the vector of point indices to use.
virtual int nearestKSearch(const PointT &p_q, unsigned int k, Indices &k_indices, std::vector< float > &k_sqr_distances) const =0
Search for k-nearest neighbors for the given query point.
DefaultPointRepresentation extends PointRepresentation to define default behavior for common point ty...
int radiusSearchT(const PointTDiff &point, double radius, Indices &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.
shared_ptr< const KdTree< FeatureT > > ConstPtr
virtual std::string getName() const =0
Class getName method.
shared_ptr< const PointCloud< PointT > > ConstPtr
virtual int radiusSearch(const PointT &p_q, double radius, Indices &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 void setEpsilon(float eps)
Set the search epsilon precision (error bound) for nearest neighbors searches.
A point structure representing Euclidean xyz coordinates, and the RGB color.
void setMinPts(int min_pts)
Minimum allowed number of k nearest neighbors points that a viable result must contain.
void copyPoint(const PointInT &point_in, PointOutT &point_out)
Copy the fields of a source point into a target point.
KdTree represents the base spatial locator class for kd-tree implementations.
KdTree(bool sorted=true)
Empty constructor for KdTree.