Point Cloud Library (PCL)  1.8.1-dev
List of all members | Classes | Public Types | Public Member Functions | Protected Member Functions
pcl::octree::OctreePointCloudSearch< PointT, LeafContainerT, BranchContainerT > Class Template Reference

Octree pointcloud search class More...

#include <pcl/octree/octree_search.h>

+ Inheritance diagram for pcl::octree::OctreePointCloudSearch< PointT, LeafContainerT, BranchContainerT >:

Classes

class  prioBranchQueueEntry
 Priority queue entry for branch nodes More...
 
class  prioPointQueueEntry
 Priority queue entry for point candidates More...
 

Public Types

typedef boost::shared_ptr
< std::vector< int > > 
IndicesPtr
 
typedef boost::shared_ptr
< const std::vector< int > > 
IndicesConstPtr
 
typedef pcl::PointCloud< PointTPointCloud
 
typedef boost::shared_ptr
< PointCloud
PointCloudPtr
 
typedef boost::shared_ptr
< const PointCloud
PointCloudConstPtr
 
typedef boost::shared_ptr
< OctreePointCloudSearch
< PointT, LeafContainerT,
BranchContainerT > > 
Ptr
 
typedef boost::shared_ptr
< const OctreePointCloudSearch
< PointT, LeafContainerT,
BranchContainerT > > 
ConstPtr
 
typedef std::vector< PointT,
Eigen::aligned_allocator
< PointT > > 
AlignedPointTVector
 
typedef OctreePointCloud
< PointT, LeafContainerT,
BranchContainerT > 
OctreeT
 
typedef OctreeT::LeafNode LeafNode
 
typedef OctreeT::BranchNode BranchNode
 
- Public Types inherited from pcl::octree::OctreePointCloud< PointT, LeafContainerT, BranchContainerT >
typedef OctreeBase
< LeafContainerT,
BranchContainerT > 
Base
 
typedef OctreeBase
< LeafContainerT,
BranchContainerT >::LeafNode 
LeafNode
 
typedef OctreeBase
< LeafContainerT,
BranchContainerT >::BranchNode 
BranchNode
 
typedef
OctreeDepthFirstIterator
< OctreeBase< LeafContainerT,
BranchContainerT > > 
Iterator
 
typedef const
OctreeDepthFirstIterator
< OctreeBase< LeafContainerT,
BranchContainerT > > 
ConstIterator
 
typedef OctreeLeafNodeIterator
< OctreeBase< LeafContainerT,
BranchContainerT > > 
LeafNodeIterator
 
typedef const
OctreeLeafNodeIterator
< OctreeBase< LeafContainerT,
BranchContainerT > > 
ConstLeafNodeIterator
 
typedef
OctreeDepthFirstIterator
< OctreeBase< LeafContainerT,
BranchContainerT > > 
DepthFirstIterator
 
typedef const
OctreeDepthFirstIterator
< OctreeBase< LeafContainerT,
BranchContainerT > > 
ConstDepthFirstIterator
 
typedef
OctreeBreadthFirstIterator
< OctreeBase< LeafContainerT,
BranchContainerT > > 
BreadthFirstIterator
 
typedef const
OctreeBreadthFirstIterator
< OctreeBase< LeafContainerT,
BranchContainerT > > 
ConstBreadthFirstIterator
 
typedef boost::shared_ptr
< std::vector< int > > 
IndicesPtr
 
typedef boost::shared_ptr
< const std::vector< int > > 
IndicesConstPtr
 
typedef pcl::PointCloud< PointTPointCloud
 
typedef boost::shared_ptr
< PointCloud
PointCloudPtr
 
typedef boost::shared_ptr
< const PointCloud
PointCloudConstPtr
 
typedef OctreePointCloud
< PointT, LeafContainerT,
BranchContainerT, OctreeBase
< LeafContainerT > > 
SingleBuffer
 
typedef boost::shared_ptr
< OctreePointCloud< PointT,
LeafContainerT,
BranchContainerT, OctreeBase
< LeafContainerT,
BranchContainerT > > > 
Ptr
 
typedef boost::shared_ptr
< const OctreePointCloud
< PointT, LeafContainerT,
BranchContainerT, OctreeBase
< LeafContainerT,
BranchContainerT > > > 
ConstPtr
 
typedef std::vector< PointT,
Eigen::aligned_allocator
< PointT > > 
AlignedPointTVector
 
typedef std::vector< PointXYZ,
Eigen::aligned_allocator
< PointXYZ > > 
AlignedPointXYZVector
 
- Public Types inherited from pcl::octree::OctreeBase< LeafContainerT, BranchContainerT >
typedef OctreeBase
< LeafContainerT,
BranchContainerT > 
OctreeT
 
typedef OctreeBranchNode
< BranchContainerT > 
BranchNode
 
typedef OctreeLeafNode
< LeafContainerT > 
LeafNode
 
typedef BranchContainerT BranchContainer
 
typedef LeafContainerT LeafContainer
 
typedef
OctreeDepthFirstIterator
< OctreeT
Iterator
 
typedef const
OctreeDepthFirstIterator
< OctreeT
ConstIterator
 
typedef OctreeLeafNodeIterator
< OctreeT
LeafNodeIterator
 
typedef const
OctreeLeafNodeIterator
< OctreeT
ConstLeafNodeIterator
 
typedef
OctreeDepthFirstIterator
< OctreeT
DepthFirstIterator
 
typedef const
OctreeDepthFirstIterator
< OctreeT
ConstDepthFirstIterator
 
typedef
OctreeBreadthFirstIterator
< OctreeT
BreadthFirstIterator
 
typedef const
OctreeBreadthFirstIterator
< OctreeT
ConstBreadthFirstIterator
 

Public Member Functions

 OctreePointCloudSearch (const double resolution)
 Constructor. More...
 
virtual ~OctreePointCloudSearch ()
 Empty class destructor. More...
 
bool voxelSearch (const PointT &point, std::vector< int > &point_idx_data)
 Search for neighbors within a voxel at given point. More...
 
bool voxelSearch (const int index, std::vector< int > &point_idx_data)
 Search for neighbors within a voxel at given point referenced by a point index. More...
 
int nearestKSearch (const PointCloud &cloud, int index, int k, std::vector< int > &k_indices, std::vector< float > &k_sqr_distances)
 Search for k-nearest neighbors at the query point. More...
 
int nearestKSearch (const PointT &p_q, int k, std::vector< int > &k_indices, std::vector< float > &k_sqr_distances)
 Search for k-nearest neighbors at given query point. More...
 
int nearestKSearch (int index, int k, std::vector< int > &k_indices, std::vector< float > &k_sqr_distances)
 Search for k-nearest neighbors at query point. More...
 
void approxNearestSearch (const PointCloud &cloud, int query_index, int &result_index, float &sqr_distance)
 Search for approx. More...
 
void approxNearestSearch (const PointT &p_q, int &result_index, float &sqr_distance)
 Search for approx. More...
 
void approxNearestSearch (int query_index, int &result_index, float &sqr_distance)
 Search for approx. More...
 
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)
 Search for all neighbors of query point that are within a given radius. More...
 
int radiusSearch (const PointT &p_q, const double radius, std::vector< int > &k_indices, std::vector< float > &k_sqr_distances, unsigned int max_nn=0) const
 Search for all neighbors of query point that are within a given radius. More...
 
int radiusSearch (int index, const double radius, std::vector< int > &k_indices, std::vector< float > &k_sqr_distances, unsigned int max_nn=0) const
 Search for all neighbors of query point that are within a given radius. More...
 
int getIntersectedVoxelCenters (Eigen::Vector3f origin, Eigen::Vector3f direction, AlignedPointTVector &voxel_center_list, int max_voxel_count=0) const
 Get a PointT vector of centers of all voxels that intersected by a ray (origin, direction). More...
 
int getIntersectedVoxelIndices (Eigen::Vector3f origin, Eigen::Vector3f direction, std::vector< int > &k_indices, int max_voxel_count=0) const
 Get indices of all voxels that are intersected by a ray (origin, direction). More...
 
int boxSearch (const Eigen::Vector3f &min_pt, const Eigen::Vector3f &max_pt, std::vector< int > &k_indices) const
 Search for points within rectangular search area. More...
 
- Public Member Functions inherited from pcl::octree::OctreePointCloud< PointT, LeafContainerT, BranchContainerT >
 OctreePointCloud (const double resolution_arg)
 Octree pointcloud constructor. More...
 
virtual ~OctreePointCloud ()
 Empty deconstructor. More...
 
void setInputCloud (const PointCloudConstPtr &cloud_arg, const IndicesConstPtr &indices_arg=IndicesConstPtr())
 Provide a pointer to the input data set. More...
 
IndicesConstPtr const 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 setEpsilon (double eps)
 Set the search epsilon precision (error bound) for nearest neighbors searches. More...
 
double getEpsilon () const
 Get the search epsilon precision (error bound) for nearest neighbors searches. More...
 
void setResolution (double resolution_arg)
 Set/change the octree voxel resolution. More...
 
double getResolution () const
 Get octree voxel resolution. More...
 
unsigned int getTreeDepth () const
 Get the maximum depth of the octree. More...
 
void addPointsFromInputCloud ()
 Add points from input point cloud to octree. More...
 
void addPointFromCloud (const int point_idx_arg, IndicesPtr indices_arg)
 Add point at given index from input point cloud to octree. More...
 
void addPointToCloud (const PointT &point_arg, PointCloudPtr cloud_arg)
 Add point simultaneously to octree and input point cloud. More...
 
void addPointToCloud (const PointT &point_arg, PointCloudPtr cloud_arg, IndicesPtr indices_arg)
 Add point simultaneously to octree and input point cloud. More...
 
bool isVoxelOccupiedAtPoint (const PointT &point_arg) const
 Check if voxel at given point exist. More...
 
bool isVoxelOccupiedAtPoint (const double point_x_arg, const double point_y_arg, const double point_z_arg) const
 Check if voxel at given point coordinates exist. More...
 
bool isVoxelOccupiedAtPoint (const int &point_idx_arg) const
 Check if voxel at given point from input cloud exist. More...
 
void deleteTree ()
 Delete the octree structure and its leaf nodes. More...
 
int getOccupiedVoxelCenters (AlignedPointTVector &voxel_center_list_arg) const
 Get a PointT vector of centers of all occupied voxels. More...
 
int getApproxIntersectedVoxelCentersBySegment (const Eigen::Vector3f &origin, const Eigen::Vector3f &end, AlignedPointTVector &voxel_center_list, float precision=0.2)
 Get a PointT vector of centers of voxels intersected by a line segment. More...
 
void deleteVoxelAtPoint (const PointT &point_arg)
 Delete leaf node / voxel at given point. More...
 
void deleteVoxelAtPoint (const int &point_idx_arg)
 Delete leaf node / voxel at given point from input cloud. More...
 
void defineBoundingBox ()
 Investigate dimensions of pointcloud data set and define corresponding bounding box for octree. More...
 
void defineBoundingBox (const double min_x_arg, const double min_y_arg, const double min_z_arg, const double max_x_arg, const double max_y_arg, const double max_z_arg)
 Define bounding box for octree. More...
 
void defineBoundingBox (const double max_x_arg, const double max_y_arg, const double max_z_arg)
 Define bounding box for octree. More...
 
void defineBoundingBox (const double cubeLen_arg)
 Define bounding box cube for octree. More...
 
void getBoundingBox (double &min_x_arg, double &min_y_arg, double &min_z_arg, double &max_x_arg, double &max_y_arg, double &max_z_arg) const
 Get bounding box for octree. More...
 
double getVoxelSquaredDiameter (unsigned int tree_depth_arg) const
 Calculates the squared diameter of a voxel at given tree depth. More...
 
double getVoxelSquaredDiameter () const
 Calculates the squared diameter of a voxel at leaf depth. More...
 
double getVoxelSquaredSideLen (unsigned int tree_depth_arg) const
 Calculates the squared voxel cube side length at given tree depth. More...
 
double getVoxelSquaredSideLen () const
 Calculates the squared voxel cube side length at leaf level. More...
 
void getVoxelBounds (const OctreeIteratorBase< OctreeBase< LeafContainerT, BranchContainerT > > &iterator, Eigen::Vector3f &min_pt, Eigen::Vector3f &max_pt) const
 Generate bounds of the current voxel of an octree iterator. More...
 
void enableDynamicDepth (size_t maxObjsPerLeaf)
 Enable dynamic octree structure. More...
 
- Public Member Functions inherited from pcl::octree::OctreeBase< LeafContainerT, BranchContainerT >
Iterator begin (unsigned int max_depth_arg=0)
 
const Iterator end ()
 
LeafNodeIterator leaf_begin (unsigned int max_depth_arg=0)
 
const LeafNodeIterator leaf_end ()
 
DepthFirstIterator depth_begin (unsigned int max_depth_arg=0)
 
const DepthFirstIterator depth_end ()
 
BreadthFirstIterator breadth_begin (unsigned int max_depth_arg=0)
 
const BreadthFirstIterator breadth_end ()
 
 OctreeBase ()
 Empty constructor. More...
 
virtual ~OctreeBase ()
 Empty deconstructor. More...
 
 OctreeBase (const OctreeBase &source)
 Copy constructor. More...
 
OctreeBaseoperator= (const OctreeBase &source)
 Copy operator. More...
 
void setMaxVoxelIndex (unsigned int max_voxel_index_arg)
 Set the maximum amount of voxels per dimension. More...
 
void setTreeDepth (unsigned int max_depth_arg)
 Set the maximum depth of the octree. More...
 
unsigned int getTreeDepth () const
 Get the maximum depth of the octree. More...
 
LeafContainerT * createLeaf (unsigned int idx_x_arg, unsigned int idx_y_arg, unsigned int idx_z_arg)
 Create new leaf node at (idx_x_arg, idx_y_arg, idx_z_arg). More...
 
LeafContainerT * findLeaf (unsigned int idx_x_arg, unsigned int idx_y_arg, unsigned int idx_z_arg)
 Find leaf node at (idx_x_arg, idx_y_arg, idx_z_arg). More...
 
bool existLeaf (unsigned int idx_x_arg, unsigned int idx_y_arg, unsigned int idx_z_arg) const
 idx_x_arg for the existence of leaf node at (idx_x_arg, idx_y_arg, idx_z_arg). More...
 
void removeLeaf (unsigned int idx_x_arg, unsigned int idx_y_arg, unsigned int idx_z_arg)
 Remove leaf node at (idx_x_arg, idx_y_arg, idx_z_arg). More...
 
std::size_t getLeafCount () const
 Return the amount of existing leafs in the octree. More...
 
std::size_t getBranchCount () const
 Return the amount of existing branch nodes in the octree. More...
 
void deleteTree ()
 Delete the octree structure and its leaf nodes. More...
 
void serializeTree (std::vector< char > &binary_tree_out_arg)
 Serialize octree into a binary output vector describing its branch node structure. More...
 
void serializeTree (std::vector< char > &binary_tree_out_arg, std::vector< LeafContainerT * > &leaf_container_vector_arg)
 Serialize octree into a binary output vector describing its branch node structure and push all LeafContainerT elements stored in the octree to a vector. More...
 
void serializeLeafs (std::vector< LeafContainerT * > &leaf_container_vector_arg)
 Outputs a vector of all LeafContainerT elements that are stored within the octree leaf nodes. More...
 
void deserializeTree (std::vector< char > &binary_tree_input_arg)
 Deserialize a binary octree description vector and create a corresponding octree structure. More...
 
void deserializeTree (std::vector< char > &binary_tree_input_arg, std::vector< LeafContainerT * > &leaf_container_vector_arg)
 Deserialize a binary octree description and create a corresponding octree structure. More...
 

Protected Member Functions

float pointSquaredDist (const PointT &point_a, const PointT &point_b) const
 Helper function to calculate the squared distance between two points. More...
 
void getNeighborsWithinRadiusRecursive (const PointT &point, const double radiusSquared, const BranchNode *node, const OctreeKey &key, unsigned int tree_depth, std::vector< int > &k_indices, std::vector< float > &k_sqr_distances, unsigned int max_nn) const
 Recursive search method that explores the octree and finds neighbors within a given radius. More...
 
double getKNearestNeighborRecursive (const PointT &point, unsigned int K, const BranchNode *node, const OctreeKey &key, unsigned int tree_depth, const double squared_search_radius, std::vector< prioPointQueueEntry > &point_candidates) const
 Recursive search method that explores the octree and finds the K nearest neighbors. More...
 
void approxNearestSearchRecursive (const PointT &point, const BranchNode *node, const OctreeKey &key, unsigned int tree_depth, int &result_index, float &sqr_distance)
 Recursive search method that explores the octree and finds the approximate nearest neighbor. More...
 
int getIntersectedVoxelCentersRecursive (double min_x, double min_y, double min_z, double max_x, double max_y, double max_z, unsigned char a, const OctreeNode *node, const OctreeKey &key, AlignedPointTVector &voxel_center_list, int max_voxel_count) const
 Recursively search the tree for all intersected leaf nodes and return a vector of voxel centers. More...
 
void boxSearchRecursive (const Eigen::Vector3f &min_pt, const Eigen::Vector3f &max_pt, const BranchNode *node, const OctreeKey &key, unsigned int tree_depth, std::vector< int > &k_indices) const
 Recursive search method that explores the octree and finds points within a rectangular search area. More...
 
int getIntersectedVoxelIndicesRecursive (double min_x, double min_y, double min_z, double max_x, double max_y, double max_z, unsigned char a, const OctreeNode *node, const OctreeKey &key, std::vector< int > &k_indices, int max_voxel_count) const
 Recursively search the tree for all intersected leaf nodes and return a vector of indices. More...
 
void initIntersectedVoxel (Eigen::Vector3f &origin, Eigen::Vector3f &direction, double &min_x, double &min_y, double &min_z, double &max_x, double &max_y, double &max_z, unsigned char &a) const
 Initialize raytracing algorithm. More...
 
int getFirstIntersectedNode (double min_x, double min_y, double min_z, double mid_x, double mid_y, double mid_z) const
 Find first child node ray will enter. More...
 
int getNextIntersectedNode (double x, double y, double z, int a, int b, int c) const
 Get the next visited node given the current node upper bounding box corner. More...
 
- Protected Member Functions inherited from pcl::octree::OctreePointCloud< PointT, LeafContainerT, BranchContainerT >
virtual void addPointIdx (const int point_idx_arg)
 Add point at index from input pointcloud dataset to octree. More...
 
void expandLeafNode (LeafNode *leaf_node, BranchNode *parent_branch, unsigned char child_idx, unsigned int depth_mask)
 Add point at index from input pointcloud dataset to octree. More...
 
const PointTgetPointByIndex (const unsigned int index_arg) const
 Get point at index from input pointcloud dataset. More...
 
LeafContainerT * findLeafAtPoint (const PointT &point_arg) const
 Find octree leaf node at a given point. More...
 
void getKeyBitSize ()
 Define octree key setting and octree depth based on defined bounding box. More...
 
void adoptBoundingBoxToPoint (const PointT &point_idx_arg)
 Grow the bounding box/octree until point fits. More...
 
bool isPointWithinBoundingBox (const PointT &point_idx_arg) const
 Checks if given point is within the bounding box of the octree. More...
 
void genOctreeKeyforPoint (const PointT &point_arg, OctreeKey &key_arg) const
 Generate octree key for voxel at a given point. More...
 
void genOctreeKeyforPoint (const double point_x_arg, const double point_y_arg, const double point_z_arg, OctreeKey &key_arg) const
 Generate octree key for voxel at a given point. More...
 
virtual bool genOctreeKeyForDataT (const int &data_arg, OctreeKey &key_arg) const
 Virtual method for generating octree key for a given point index. More...
 
void genLeafNodeCenterFromOctreeKey (const OctreeKey &key_arg, PointT &point_arg) const
 Generate a point at center of leaf node voxel. More...
 
void genVoxelCenterFromOctreeKey (const OctreeKey &key_arg, unsigned int tree_depth_arg, PointT &point_arg) const
 Generate a point at center of octree voxel at given tree level. More...
 
void genVoxelBoundsFromOctreeKey (const OctreeKey &key_arg, unsigned int tree_depth_arg, Eigen::Vector3f &min_pt, Eigen::Vector3f &max_pt) const
 Generate bounds of an octree voxel using octree key and tree depth arguments. More...
 
int getOccupiedVoxelCentersRecursive (const BranchNode *node_arg, const OctreeKey &key_arg, AlignedPointTVector &voxel_center_list_arg) const
 Recursively search the tree for all leaf nodes and return a vector of voxel centers. More...
 
- Protected Member Functions inherited from pcl::octree::OctreeBase< LeafContainerT, BranchContainerT >
LeafContainerT * createLeaf (const OctreeKey &key_arg)
 Create a leaf node. More...
 
LeafContainerT * findLeaf (const OctreeKey &key_arg) const
 Find leaf node. More...
 
bool existLeaf (const OctreeKey &key_arg) const
 Check for existance of a leaf node in the octree. More...
 
void removeLeaf (const OctreeKey &key_arg)
 Remove leaf node from octree. More...
 
OctreeNodegetRootNode () const
 Retrieve root node. More...
 
bool branchHasChild (const BranchNode &branch_arg, unsigned char child_idx_arg) const
 Check if branch is pointing to a particular child node. More...
 
OctreeNodegetBranchChildPtr (const BranchNode &branch_arg, unsigned char child_idx_arg) const
 Retrieve a child node pointer for child node at child_idx. More...
 
void setBranchChildPtr (BranchNode &branch_arg, unsigned char child_idx_arg, OctreeNode *new_child_arg)
 Assign new child node to branch. More...
 
char getBranchBitPattern (const BranchNode &branch_arg) const
 Generate bit pattern reflecting the existence of child node pointers. More...
 
void deleteBranchChild (BranchNode &branch_arg, unsigned char child_idx_arg)
 Delete child node and all its subchilds from octree. More...
 
void deleteBranch (BranchNode &branch_arg)
 Delete branch and all its subchilds from octree. More...
 
BranchNodecreateBranchChild (BranchNode &branch_arg, unsigned char child_idx_arg)
 Create and add a new branch child to a branch class. More...
 
LeafNodecreateLeafChild (BranchNode &branch_arg, unsigned char child_idx_arg)
 Create and add a new leaf child to a branch class. More...
 
unsigned int createLeafRecursive (const OctreeKey &key_arg, unsigned int depth_mask_arg, BranchNode *branch_arg, LeafNode *&return_leaf_arg, BranchNode *&parent_of_leaf_arg)
 Create a leaf node at octree key. More...
 
void findLeafRecursive (const OctreeKey &key_arg, unsigned int depth_mask_arg, BranchNode *branch_arg, LeafContainerT *&result_arg) const
 Recursively search for a given leaf node and return a pointer. More...
 
bool deleteLeafRecursive (const OctreeKey &key_arg, unsigned int depth_mask_arg, BranchNode *branch_arg)
 Recursively search and delete leaf node. More...
 
void serializeTreeRecursive (const BranchNode *branch_arg, OctreeKey &key_arg, std::vector< char > *binary_tree_out_arg, typename std::vector< LeafContainerT * > *leaf_container_vector_arg) const
 Recursively explore the octree and output binary octree description together with a vector of leaf node LeafContainerTs. More...
 
void deserializeTreeRecursive (BranchNode *branch_arg, unsigned int depth_mask_arg, OctreeKey &key_arg, typename std::vector< char >::const_iterator &binary_tree_input_it_arg, typename std::vector< char >::const_iterator &binary_tree_input_it_end_arg, typename std::vector< LeafContainerT * >::const_iterator *leaf_container_vector_it_arg, typename std::vector< LeafContainerT * >::const_iterator *leaf_container_vector_it_end_arg)
 Recursive method for deserializing octree structure. More...
 
virtual void serializeTreeCallback (LeafContainerT &, const OctreeKey &) const
 Callback executed for every leaf node during serialization. More...
 
virtual void deserializeTreeCallback (LeafContainerT &, const OctreeKey &)
 Callback executed for every leaf node during deserialization. More...
 
double Log2 (double n_arg)
 Helper function to calculate the binary logarithm. More...
 
bool octreeCanResize ()
 Test if octree is able to dynamically change its depth. More...
 

Additional Inherited Members

- Protected Attributes inherited from pcl::octree::OctreePointCloud< PointT, LeafContainerT, BranchContainerT >
PointCloudConstPtr input_
 Pointer to input point cloud dataset. More...
 
IndicesConstPtr indices_
 A pointer to the vector of point indices to use. More...
 
double epsilon_
 Epsilon precision (error bound) for nearest neighbors searches. More...
 
double resolution_
 Octree resolution. More...
 
double min_x_
 
double max_x_
 
double min_y_
 
double max_y_
 
double min_z_
 
double max_z_
 
bool bounding_box_defined_
 Flag indicating if octree has defined bounding box. More...
 
std::size_t max_objs_per_leaf_
 Amount of DataT objects per leafNode before expanding branch. More...
 
- Protected Attributes inherited from pcl::octree::OctreeBase< LeafContainerT, BranchContainerT >
std::size_t leaf_count_
 Amount of leaf nodes. More...
 
std::size_t branch_count_
 Amount of branch nodes. More...
 
BranchNoderoot_node_
 Pointer to root branch node of octree. More...
 
unsigned int depth_mask_
 Depth mask based on octree depth. More...
 
unsigned int octree_depth_
 Octree depth. More...
 
bool dynamic_depth_enabled_
 Enable dynamic_depth. More...
 
OctreeKey max_key_
 key range More...
 

Detailed Description

template<typename PointT, typename LeafContainerT = OctreeContainerPointIndices, typename BranchContainerT = OctreeContainerEmpty>
class pcl::octree::OctreePointCloudSearch< PointT, LeafContainerT, BranchContainerT >

Octree pointcloud search class

Note
This class provides several methods for spatial neighbor search based on octree structure
typename: PointT: type of point used in pointcloud
Author
Julius Kammerl (juliu.nosp@m.s@ka.nosp@m.mmerl.nosp@m..de)

Definition at line 57 of file octree_search.h.

Member Typedef Documentation

template<typename PointT, typename LeafContainerT = OctreeContainerPointIndices, typename BranchContainerT = OctreeContainerEmpty>
typedef std::vector<PointT, Eigen::aligned_allocator<PointT> > pcl::octree::OctreePointCloudSearch< PointT, LeafContainerT, BranchContainerT >::AlignedPointTVector

Definition at line 73 of file octree_search.h.

template<typename PointT, typename LeafContainerT = OctreeContainerPointIndices, typename BranchContainerT = OctreeContainerEmpty>
typedef OctreeT::BranchNode pcl::octree::OctreePointCloudSearch< PointT, LeafContainerT, BranchContainerT >::BranchNode

Definition at line 77 of file octree_search.h.

template<typename PointT, typename LeafContainerT = OctreeContainerPointIndices, typename BranchContainerT = OctreeContainerEmpty>
typedef boost::shared_ptr<const OctreePointCloudSearch<PointT, LeafContainerT, BranchContainerT> > pcl::octree::OctreePointCloudSearch< PointT, LeafContainerT, BranchContainerT >::ConstPtr

Definition at line 70 of file octree_search.h.

template<typename PointT, typename LeafContainerT = OctreeContainerPointIndices, typename BranchContainerT = OctreeContainerEmpty>
typedef boost::shared_ptr<const std::vector<int> > pcl::octree::OctreePointCloudSearch< PointT, LeafContainerT, BranchContainerT >::IndicesConstPtr

Definition at line 62 of file octree_search.h.

template<typename PointT, typename LeafContainerT = OctreeContainerPointIndices, typename BranchContainerT = OctreeContainerEmpty>
typedef boost::shared_ptr<std::vector<int> > pcl::octree::OctreePointCloudSearch< PointT, LeafContainerT, BranchContainerT >::IndicesPtr

Definition at line 61 of file octree_search.h.

template<typename PointT, typename LeafContainerT = OctreeContainerPointIndices, typename BranchContainerT = OctreeContainerEmpty>
typedef OctreeT::LeafNode pcl::octree::OctreePointCloudSearch< PointT, LeafContainerT, BranchContainerT >::LeafNode

Definition at line 76 of file octree_search.h.

template<typename PointT, typename LeafContainerT = OctreeContainerPointIndices, typename BranchContainerT = OctreeContainerEmpty>
typedef OctreePointCloud<PointT, LeafContainerT, BranchContainerT> pcl::octree::OctreePointCloudSearch< PointT, LeafContainerT, BranchContainerT >::OctreeT

Definition at line 75 of file octree_search.h.

template<typename PointT, typename LeafContainerT = OctreeContainerPointIndices, typename BranchContainerT = OctreeContainerEmpty>
typedef pcl::PointCloud<PointT> pcl::octree::OctreePointCloudSearch< PointT, LeafContainerT, BranchContainerT >::PointCloud

Definition at line 64 of file octree_search.h.

template<typename PointT, typename LeafContainerT = OctreeContainerPointIndices, typename BranchContainerT = OctreeContainerEmpty>
typedef boost::shared_ptr<const PointCloud> pcl::octree::OctreePointCloudSearch< PointT, LeafContainerT, BranchContainerT >::PointCloudConstPtr

Definition at line 66 of file octree_search.h.

template<typename PointT, typename LeafContainerT = OctreeContainerPointIndices, typename BranchContainerT = OctreeContainerEmpty>
typedef boost::shared_ptr<PointCloud> pcl::octree::OctreePointCloudSearch< PointT, LeafContainerT, BranchContainerT >::PointCloudPtr

Definition at line 65 of file octree_search.h.

template<typename PointT, typename LeafContainerT = OctreeContainerPointIndices, typename BranchContainerT = OctreeContainerEmpty>
typedef boost::shared_ptr<OctreePointCloudSearch<PointT, LeafContainerT, BranchContainerT> > pcl::octree::OctreePointCloudSearch< PointT, LeafContainerT, BranchContainerT >::Ptr

Definition at line 69 of file octree_search.h.

Constructor & Destructor Documentation

template<typename PointT, typename LeafContainerT = OctreeContainerPointIndices, typename BranchContainerT = OctreeContainerEmpty>
pcl::octree::OctreePointCloudSearch< PointT, LeafContainerT, BranchContainerT >::OctreePointCloudSearch ( const double  resolution)
inline

Constructor.

Parameters
[in]resolutionoctree resolution at lowest octree level

Definition at line 82 of file octree_search.h.

template<typename PointT, typename LeafContainerT = OctreeContainerPointIndices, typename BranchContainerT = OctreeContainerEmpty>
virtual pcl::octree::OctreePointCloudSearch< PointT, LeafContainerT, BranchContainerT >::~OctreePointCloudSearch ( )
inlinevirtual

Empty class destructor.

Definition at line 89 of file octree_search.h.

Member Function Documentation

template<typename PointT, typename LeafContainerT = OctreeContainerPointIndices, typename BranchContainerT = OctreeContainerEmpty>
void pcl::octree::OctreePointCloudSearch< PointT, LeafContainerT, BranchContainerT >::approxNearestSearch ( const PointCloud cloud,
int  query_index,
int &  result_index,
float &  sqr_distance 
)
inline

Search for approx.

nearest neighbor at the query point.

Parameters
[in]cloudthe point cloud data
[in]query_indexthe index in cloud representing the query point
[out]result_indexthe resultant index of the neighbor point
[out]sqr_distancethe resultant squared distance to the neighboring point
Returns
number of neighbors found

Definition at line 156 of file octree_search.h.

References pcl::PointCloud< T >::points.

template<typename PointT , typename LeafContainerT , typename BranchContainerT >
void pcl::octree::OctreePointCloudSearch< PointT, LeafContainerT, BranchContainerT >::approxNearestSearch ( const PointT p_q,
int &  result_index,
float &  sqr_distance 
)

Search for approx.

nearest neighbor at the query point.

Parameters
[in]p_qthe given query point
[out]result_indexthe resultant index of the neighbor point
[out]sqr_distancethe resultant squared distance to the neighboring point

Definition at line 131 of file octree_search.hpp.

References pcl::isFinite(), pcl::octree::OctreeKey::x, pcl::octree::OctreeKey::y, and pcl::octree::OctreeKey::z.

template<typename PointT , typename LeafContainerT , typename BranchContainerT >
void pcl::octree::OctreePointCloudSearch< PointT, LeafContainerT, BranchContainerT >::approxNearestSearch ( int  query_index,
int &  result_index,
float &  sqr_distance 
)

Search for approx.

nearest neighbor at the query point.

Parameters
[in]query_indexindex representing the query point in the dataset given by setInputCloud. If indices were given in setInputCloud, index will be the position in the indices vector.
[out]result_indexthe resultant index of the neighbor point
[out]sqr_distancethe resultant squared distance to the neighboring point
Returns
number of neighbors found

Definition at line 148 of file octree_search.hpp.

template<typename PointT , typename LeafContainerT , typename BranchContainerT >
void pcl::octree::OctreePointCloudSearch< PointT, LeafContainerT, BranchContainerT >::approxNearestSearchRecursive ( const PointT point,
const BranchNode node,
const OctreeKey key,
unsigned int  tree_depth,
int &  result_index,
float &  sqr_distance 
)
protected

Recursive search method that explores the octree and finds the approximate nearest neighbor.

Parameters
[in]pointquery point
[in]nodecurrent octree node to be explored
[in]keyoctree key addressing a leaf node.
[in]tree_depthcurrent depth/level in the octree
[out]result_indexresult index is written to this reference
[out]sqr_distancesquared distance to search

Definition at line 402 of file octree_search.hpp.

References pcl::octree::OctreeKey::x, pcl::octree::OctreeKey::y, and pcl::octree::OctreeKey::z.

template<typename PointT , typename LeafContainerT , typename BranchContainerT >
int pcl::octree::OctreePointCloudSearch< PointT, LeafContainerT, BranchContainerT >::boxSearch ( const Eigen::Vector3f &  min_pt,
const Eigen::Vector3f &  max_pt,
std::vector< int > &  k_indices 
) const

Search for points within rectangular search area.

Parameters
[in]min_ptlower corner of search area
[in]max_ptupper corner of search area
[out]k_indicesthe resultant point indices
Returns
number of points found within search area

Definition at line 190 of file octree_search.hpp.

References pcl::octree::OctreeKey::x, pcl::octree::OctreeKey::y, and pcl::octree::OctreeKey::z.

template<typename PointT , typename LeafContainerT , typename BranchContainerT >
void pcl::octree::OctreePointCloudSearch< PointT, LeafContainerT, BranchContainerT >::boxSearchRecursive ( const Eigen::Vector3f &  min_pt,
const Eigen::Vector3f &  max_pt,
const BranchNode node,
const OctreeKey key,
unsigned int  tree_depth,
std::vector< int > &  k_indices 
) const
protected

Recursive search method that explores the octree and finds points within a rectangular search area.

Parameters
[in]min_ptlower corner of search area
[in]max_ptupper corner of search area
[in]nodecurrent octree node to be explored
[in]keyoctree key addressing a leaf node.
[in]tree_depthcurrent depth/level in the octree
[out]k_indicesthe resultant point indices

Definition at line 506 of file octree_search.hpp.

References pcl::octree::OctreeKey::x, pcl::octree::OctreeKey::y, and pcl::octree::OctreeKey::z.

template<typename PointT, typename LeafContainerT = OctreeContainerPointIndices, typename BranchContainerT = OctreeContainerEmpty>
int pcl::octree::OctreePointCloudSearch< PointT, LeafContainerT, BranchContainerT >::getFirstIntersectedNode ( double  min_x,
double  min_y,
double  min_z,
double  mid_x,
double  mid_y,
double  mid_z 
) const
inlineprotected

Find first child node ray will enter.

Parameters
[in]min_xoctree nodes X coordinate of lower bounding box corner
[in]min_yoctree nodes Y coordinate of lower bounding box corner
[in]min_zoctree nodes Z coordinate of lower bounding box corner
[in]mid_xoctree nodes X coordinate of bounding box mid line
[in]mid_yoctree nodes Y coordinate of bounding box mid line
[in]mid_zoctree nodes Z coordinate of bounding box mid line
Returns
the first child node ray will enter

Definition at line 519 of file octree_search.h.

template<typename PointT , typename LeafContainerT , typename BranchContainerT >
int pcl::octree::OctreePointCloudSearch< PointT, LeafContainerT, BranchContainerT >::getIntersectedVoxelCenters ( Eigen::Vector3f  origin,
Eigen::Vector3f  direction,
AlignedPointTVector voxel_center_list,
int  max_voxel_count = 0 
) const

Get a PointT vector of centers of all voxels that intersected by a ray (origin, direction).

Parameters
[in]originray origin
[in]directionray direction vector
[out]voxel_center_listresults are written to this vector of PointT elements
[in]max_voxel_countstop raycasting when this many voxels intersected (0: disable)
Returns
number of intersected voxels

Definition at line 583 of file octree_search.hpp.

References pcl::octree::OctreeKey::x, pcl::octree::OctreeKey::y, and pcl::octree::OctreeKey::z.

template<typename PointT , typename LeafContainerT , typename BranchContainerT >
int pcl::octree::OctreePointCloudSearch< PointT, LeafContainerT, BranchContainerT >::getIntersectedVoxelCentersRecursive ( double  min_x,
double  min_y,
double  min_z,
double  max_x,
double  max_y,
double  max_z,
unsigned char  a,
const OctreeNode node,
const OctreeKey key,
AlignedPointTVector voxel_center_list,
int  max_voxel_count 
) const
protected

Recursively search the tree for all intersected leaf nodes and return a vector of voxel centers.

This algorithm is based off the paper An Efficient Parametric Algorithm for Octree Traversal: http://wscg.zcu.cz/wscg2000/Papers_2000/X31.pdf

Parameters
[in]min_xoctree nodes X coordinate of lower bounding box corner
[in]min_yoctree nodes Y coordinate of lower bounding box corner
[in]min_zoctree nodes Z coordinate of lower bounding box corner
[in]max_xoctree nodes X coordinate of upper bounding box corner
[in]max_yoctree nodes Y coordinate of upper bounding box corner
[in]max_zoctree nodes Z coordinate of upper bounding box corner
[in]a
[in]nodecurrent octree node to be explored
[in]keyoctree key addressing a leaf node.
[out]voxel_center_listresults are written to this vector of PointT elements
[in]max_voxel_countstop raycasting when this many voxels intersected (0: disable)
Returns
number of voxels found

Definition at line 631 of file octree_search.hpp.

References pcl::octree::OctreeNode::getNodeType(), pcl::octree::LEAF_NODE, pcl::octree::OctreeKey::x, pcl::octree::OctreeKey::y, and pcl::octree::OctreeKey::z.

template<typename PointT , typename LeafContainerT , typename BranchContainerT >
int pcl::octree::OctreePointCloudSearch< PointT, LeafContainerT, BranchContainerT >::getIntersectedVoxelIndices ( Eigen::Vector3f  origin,
Eigen::Vector3f  direction,
std::vector< int > &  k_indices,
int  max_voxel_count = 0 
) const

Get indices of all voxels that are intersected by a ray (origin, direction).

Parameters
[in]originray origin
[in]directionray direction vector
[out]k_indicesresulting point indices from intersected voxels
[in]max_voxel_countstop raycasting when this many voxels intersected (0: disable)
Returns
number of intersected voxels

Definition at line 608 of file octree_search.hpp.

References pcl::octree::OctreeKey::x, pcl::octree::OctreeKey::y, and pcl::octree::OctreeKey::z.

Referenced by pcl::TextureMapping< PointInT >::showOcclusions().

template<typename PointT , typename LeafContainerT , typename BranchContainerT >
int pcl::octree::OctreePointCloudSearch< PointT, LeafContainerT, BranchContainerT >::getIntersectedVoxelIndicesRecursive ( double  min_x,
double  min_y,
double  min_z,
double  max_x,
double  max_y,
double  max_z,
unsigned char  a,
const OctreeNode node,
const OctreeKey key,
std::vector< int > &  k_indices,
int  max_voxel_count 
) const
protected

Recursively search the tree for all intersected leaf nodes and return a vector of indices.

This algorithm is based off the paper An Efficient Parametric Algorithm for Octree Traversal: http://wscg.zcu.cz/wscg2000/Papers_2000/X31.pdf

Parameters
[in]min_xoctree nodes X coordinate of lower bounding box corner
[in]min_yoctree nodes Y coordinate of lower bounding box corner
[in]min_zoctree nodes Z coordinate of lower bounding box corner
[in]max_xoctree nodes X coordinate of upper bounding box corner
[in]max_yoctree nodes Y coordinate of upper bounding box corner
[in]max_zoctree nodes Z coordinate of upper bounding box corner
[in]a
[in]nodecurrent octree node to be explored
[in]keyoctree key addressing a leaf node.
[out]k_indicesresulting indices
[in]max_voxel_countstop raycasting when this many voxels intersected (0: disable)
Returns
number of voxels found

Definition at line 749 of file octree_search.hpp.

References pcl::octree::OctreeNode::getNodeType(), pcl::octree::LEAF_NODE, pcl::octree::OctreeKey::x, pcl::octree::OctreeKey::y, and pcl::octree::OctreeKey::z.

template<typename PointT , typename LeafContainerT , typename BranchContainerT >
double pcl::octree::OctreePointCloudSearch< PointT, LeafContainerT, BranchContainerT >::getKNearestNeighborRecursive ( const PointT point,
unsigned int  K,
const BranchNode node,
const OctreeKey key,
unsigned int  tree_depth,
const double  squared_search_radius,
std::vector< prioPointQueueEntry > &  point_candidates 
) const
protected

Recursive search method that explores the octree and finds the K nearest neighbors.

Parameters
[in]pointquery point
[in]Kamount of nearest neighbors to be found
[in]nodecurrent octree node to be explored
[in]keyoctree key addressing a leaf node.
[in]tree_depthcurrent depth/level in the octree
[in]squared_search_radiussquared search radius distance
[out]point_candidatespriority queue of nearest neigbor point candidates
Returns
squared search radius based on current point candidate set found

Definition at line 208 of file octree_search.hpp.

References pcl::K, pcl::octree::OctreePointCloudSearch< PointT, LeafContainerT, BranchContainerT >::prioPointQueueEntry::point_distance_, pcl::octree::OctreePointCloudSearch< PointT, LeafContainerT, BranchContainerT >::prioPointQueueEntry::point_idx_, pcl::octree::OctreeKey::x, pcl::octree::OctreeKey::y, and pcl::octree::OctreeKey::z.

template<typename PointT , typename LeafContainerT , typename BranchContainerT >
void pcl::octree::OctreePointCloudSearch< PointT, LeafContainerT, BranchContainerT >::getNeighborsWithinRadiusRecursive ( const PointT point,
const double  radiusSquared,
const BranchNode node,
const OctreeKey key,
unsigned int  tree_depth,
std::vector< int > &  k_indices,
std::vector< float > &  k_sqr_distances,
unsigned int  max_nn 
) const
protected

Recursive search method that explores the octree and finds neighbors within a given radius.

Parameters
[in]pointquery point
[in]radiusSquaredsquared search radius
[in]nodecurrent octree node to be explored
[in]keyoctree key addressing a leaf node.
[in]tree_depthcurrent depth/level in the octree
[out]k_indicesvector of indices found to be neighbors of query point
[out]k_sqr_distancessquared distances of neighbors to query point
[in]max_nnmaximum of neighbors to be found

Definition at line 317 of file octree_search.hpp.

References pcl::octree::OctreeKey::x, pcl::octree::OctreeKey::y, and pcl::octree::OctreeKey::z.

template<typename PointT, typename LeafContainerT = OctreeContainerPointIndices, typename BranchContainerT = OctreeContainerEmpty>
int pcl::octree::OctreePointCloudSearch< PointT, LeafContainerT, BranchContainerT >::getNextIntersectedNode ( double  x,
double  y,
double  z,
int  a,
int  b,
int  c 
) const
inlineprotected

Get the next visited node given the current node upper bounding box corner.

This function accepts three float values, and three int values. The function returns the ith integer where the ith float value is the minimum of the three float values.

Parameters
[in]xcurrent nodes X coordinate of upper bounding box corner
[in]ycurrent nodes Y coordinate of upper bounding box corner
[in]zcurrent nodes Z coordinate of upper bounding box corner
[in]anext node if exit Plane YZ
[in]bnext node if exit Plane XZ
[in]cnext node if exit Plane XY
Returns
the next child node ray will enter or 8 if exiting

Definition at line 578 of file octree_search.h.

template<typename PointT, typename LeafContainerT = OctreeContainerPointIndices, typename BranchContainerT = OctreeContainerEmpty>
void pcl::octree::OctreePointCloudSearch< PointT, LeafContainerT, BranchContainerT >::initIntersectedVoxel ( Eigen::Vector3f &  origin,
Eigen::Vector3f &  direction,
double &  min_x,
double &  min_y,
double &  min_z,
double &  max_x,
double &  max_y,
double &  max_z,
unsigned char &  a 
) const
inlineprotected

Initialize raytracing algorithm.

Parameters
origin
direction
[in]min_xoctree nodes X coordinate of lower bounding box corner
[in]min_yoctree nodes Y coordinate of lower bounding box corner
[in]min_zoctree nodes Z coordinate of lower bounding box corner
[in]max_xoctree nodes X coordinate of upper bounding box corner
[in]max_yoctree nodes Y coordinate of upper bounding box corner
[in]max_zoctree nodes Z coordinate of upper bounding box corner
a

Definition at line 465 of file octree_search.h.

References pcl::octree::OctreePointCloud< PointT, LeafContainerT, BranchContainerT >::max_x_, pcl::octree::OctreePointCloud< PointT, LeafContainerT, BranchContainerT >::max_y_, pcl::octree::OctreePointCloud< PointT, LeafContainerT, BranchContainerT >::max_z_, pcl::octree::OctreePointCloud< PointT, LeafContainerT, BranchContainerT >::min_x_, pcl::octree::OctreePointCloud< PointT, LeafContainerT, BranchContainerT >::min_y_, and pcl::octree::OctreePointCloud< PointT, LeafContainerT, BranchContainerT >::min_z_.

template<typename PointT, typename LeafContainerT = OctreeContainerPointIndices, typename BranchContainerT = OctreeContainerEmpty>
int pcl::octree::OctreePointCloudSearch< PointT, LeafContainerT, BranchContainerT >::nearestKSearch ( const PointCloud cloud,
int  index,
int  k,
std::vector< int > &  k_indices,
std::vector< float > &  k_sqr_distances 
)
inline

Search for k-nearest neighbors at the query point.

Parameters
[in]cloudthe point cloud data
[in]indexthe index in cloud representing the query point
[in]kthe number of neighbors to search for
[out]k_indicesthe resultant indices of the neighboring points (must be resized to k a priori!)
[out]k_sqr_distancesthe resultant squared distances to the neighboring points (must be resized to k a priori!)
Returns
number of neighbors found

Definition at line 119 of file octree_search.h.

template<typename PointT , typename LeafContainerT , typename BranchContainerT >
int pcl::octree::OctreePointCloudSearch< PointT, LeafContainerT, BranchContainerT >::nearestKSearch ( const PointT p_q,
int  k,
std::vector< int > &  k_indices,
std::vector< float > &  k_sqr_distances 
)

Search for k-nearest neighbors at given query point.

Parameters
[in]p_qthe given query point
[in]kthe number of neighbors to search for
[out]k_indicesthe resultant indices of the neighboring points (must be resized to k a priori!)
[out]k_sqr_distancesthe resultant squared distances to the neighboring points (must be resized to k a priori!)
Returns
number of neighbors found

Definition at line 78 of file octree_search.hpp.

References pcl::isFinite(), pcl::octree::OctreeKey::x, pcl::octree::OctreeKey::y, and pcl::octree::OctreeKey::z.

template<typename PointT , typename LeafContainerT , typename BranchContainerT >
int pcl::octree::OctreePointCloudSearch< PointT, LeafContainerT, BranchContainerT >::nearestKSearch ( int  index,
int  k,
std::vector< int > &  k_indices,
std::vector< float > &  k_sqr_distances 
)

Search for k-nearest neighbors at query point.

Parameters
[in]indexindex representing the query point in the dataset given by setInputCloud. If indices were given in setInputCloud, index will be the position in the indices vector.
[in]kthe number of neighbors to search for
[out]k_indicesthe resultant indices of the neighboring points (must be resized to k a priori!)
[out]k_sqr_distancesthe resultant squared distances to the neighboring points (must be resized to k a priori!)
Returns
number of neighbors found

Definition at line 121 of file octree_search.hpp.

template<typename PointT , typename LeafContainerT , typename BranchContainerT >
float pcl::octree::OctreePointCloudSearch< PointT, LeafContainerT, BranchContainerT >::pointSquaredDist ( const PointT point_a,
const PointT point_b 
) const
protected

Helper function to calculate the squared distance between two points.

Parameters
[in]point_apoint A
[in]point_bpoint B
Returns
squared distance between point A and point B

Definition at line 498 of file octree_search.hpp.

template<typename PointT, typename LeafContainerT = OctreeContainerPointIndices, typename BranchContainerT = OctreeContainerEmpty>
int pcl::octree::OctreePointCloudSearch< PointT, LeafContainerT, BranchContainerT >::radiusSearch ( const PointCloud cloud,
int  index,
double  radius,
std::vector< int > &  k_indices,
std::vector< float > &  k_sqr_distances,
unsigned int  max_nn = 0 
)
inline

Search for all neighbors of query point that are within a given radius.

Parameters
[in]cloudthe point cloud data
[in]indexthe index in cloud representing the query point
[in]radiusthe radius of the sphere bounding all of p_q's neighbors
[out]k_indicesthe resultant indices of the neighboring points
[out]k_sqr_distancesthe resultant squared distances to the neighboring points
[in]max_nnif given, bounds the maximum returned neighbors to this value
Returns
number of neighbors found in radius

Definition at line 189 of file octree_search.h.

References pcl::PointCloud< T >::points.

template<typename PointT , typename LeafContainerT , typename BranchContainerT >
int pcl::octree::OctreePointCloudSearch< PointT, LeafContainerT, BranchContainerT >::radiusSearch ( const PointT p_q,
const double  radius,
std::vector< int > &  k_indices,
std::vector< float > &  k_sqr_distances,
unsigned int  max_nn = 0 
) const

Search for all neighbors of query point that are within a given radius.

Parameters
[in]p_qthe given query point
[in]radiusthe radius of the sphere bounding all of p_q's neighbors
[out]k_indicesthe resultant indices of the neighboring points
[out]k_sqr_distancesthe resultant squared distances to the neighboring points
[in]max_nnif given, bounds the maximum returned neighbors to this value
Returns
number of neighbors found in radius

Definition at line 158 of file octree_search.hpp.

References pcl::isFinite(), pcl::octree::OctreeKey::x, pcl::octree::OctreeKey::y, and pcl::octree::OctreeKey::z.

template<typename PointT , typename LeafContainerT , typename BranchContainerT >
int pcl::octree::OctreePointCloudSearch< PointT, LeafContainerT, BranchContainerT >::radiusSearch ( int  index,
const double  radius,
std::vector< int > &  k_indices,
std::vector< float > &  k_sqr_distances,
unsigned int  max_nn = 0 
) const

Search for all neighbors of query point that are within a given radius.

Parameters
[in]indexindex representing the query point in the dataset given by setInputCloud. If indices were given in setInputCloud, index will be the position in the indices vector
[in]radiusradius of the sphere bounding all of p_q's neighbors
[out]k_indicesthe resultant indices of the neighboring points
[out]k_sqr_distancesthe resultant squared distances to the neighboring points
[in]max_nnif given, bounds the maximum returned neighbors to this value
Returns
number of neighbors found in radius

Definition at line 178 of file octree_search.hpp.

template<typename PointT , typename LeafContainerT , typename BranchContainerT >
bool pcl::octree::OctreePointCloudSearch< PointT, LeafContainerT, BranchContainerT >::voxelSearch ( const PointT point,
std::vector< int > &  point_idx_data 
)

Search for neighbors within a voxel at given point.

Parameters
[in]pointpoint addressing a leaf node voxel
[out]point_idx_datathe resultant indices of the neighboring voxel points
Returns
"true" if leaf node exist; "false" otherwise

Definition at line 46 of file octree_search.hpp.

References pcl::isFinite().

Referenced by pcl::GFPFHEstimation< PointInT, PointLT, PointOutT >::computeFeature().

template<typename PointT , typename LeafContainerT , typename BranchContainerT >
bool pcl::octree::OctreePointCloudSearch< PointT, LeafContainerT, BranchContainerT >::voxelSearch ( const int  index,
std::vector< int > &  point_idx_data 
)

Search for neighbors within a voxel at given point referenced by a point index.

Parameters
[in]indexthe index in input cloud defining the query point
[out]point_idx_datathe resultant indices of the neighboring voxel points
Returns
"true" if leaf node exist; "false" otherwise

Definition at line 69 of file octree_search.hpp.


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