Point Cloud Library (PCL)
1.7.1
|
Octree pointcloud search class More...
#include <pcl/octree/octree_search.h>
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< PointT > | PointCloud |
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 |
![]() | |
typedef OctreeT | Base |
typedef OctreeT::LeafNode | LeafNode |
typedef OctreeT::BranchNode | BranchNode |
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 |
typedef boost::shared_ptr < std::vector< int > > | IndicesPtr |
typedef boost::shared_ptr < const std::vector< int > > | IndicesConstPtr |
typedef pcl::PointCloud< PointT > | PointCloud |
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, OctreeT > > | Ptr |
typedef boost::shared_ptr < const OctreePointCloud < PointT, LeafContainerT, BranchContainerT, OctreeT > > | ConstPtr |
typedef std::vector< PointT, Eigen::aligned_allocator < PointT > > | AlignedPointTVector |
typedef std::vector< PointXYZ, Eigen::aligned_allocator < PointXYZ > > | AlignedPointXYZVector |
Public Member Functions | |
OctreePointCloudSearch (const double resolution) | |
Constructor. More... | |
virtual | ~OctreePointCloudSearch () |
Empty class constructor. 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... | |
![]() | |
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 (OctreeIteratorBase< OctreeT > &iterator, Eigen::Vector3f &min_pt, Eigen::Vector3f &max_pt) |
Generate bounds of the current voxel of an octree iterator. More... | |
void | enableDynamicDepth (size_t maxObjsPerLeaf) |
Enable dynamic 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... | |
![]() | |
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 PointT & | getPointByIndex (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... | |
Additional Inherited Members | |
![]() | |
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... | |
Octree pointcloud search class
Definition at line 58 of file octree_search.h.
typedef std::vector<PointT, Eigen::aligned_allocator<PointT> > pcl::octree::OctreePointCloudSearch< PointT, LeafContainerT, BranchContainerT >::AlignedPointTVector |
Definition at line 74 of file octree_search.h.
typedef OctreeT::BranchNode pcl::octree::OctreePointCloudSearch< PointT, LeafContainerT, BranchContainerT >::BranchNode |
Definition at line 78 of file octree_search.h.
typedef boost::shared_ptr<const OctreePointCloudSearch<PointT, LeafContainerT, BranchContainerT> > pcl::octree::OctreePointCloudSearch< PointT, LeafContainerT, BranchContainerT >::ConstPtr |
Definition at line 71 of file octree_search.h.
typedef boost::shared_ptr<const std::vector<int> > pcl::octree::OctreePointCloudSearch< PointT, LeafContainerT, BranchContainerT >::IndicesConstPtr |
Definition at line 63 of file octree_search.h.
typedef boost::shared_ptr<std::vector<int> > pcl::octree::OctreePointCloudSearch< PointT, LeafContainerT, BranchContainerT >::IndicesPtr |
Definition at line 62 of file octree_search.h.
typedef OctreeT::LeafNode pcl::octree::OctreePointCloudSearch< PointT, LeafContainerT, BranchContainerT >::LeafNode |
Definition at line 77 of file octree_search.h.
typedef OctreePointCloud<PointT, LeafContainerT, BranchContainerT> pcl::octree::OctreePointCloudSearch< PointT, LeafContainerT, BranchContainerT >::OctreeT |
Definition at line 76 of file octree_search.h.
typedef pcl::PointCloud<PointT> pcl::octree::OctreePointCloudSearch< PointT, LeafContainerT, BranchContainerT >::PointCloud |
Definition at line 65 of file octree_search.h.
typedef boost::shared_ptr<const PointCloud> pcl::octree::OctreePointCloudSearch< PointT, LeafContainerT, BranchContainerT >::PointCloudConstPtr |
Definition at line 67 of file octree_search.h.
typedef boost::shared_ptr<PointCloud> pcl::octree::OctreePointCloudSearch< PointT, LeafContainerT, BranchContainerT >::PointCloudPtr |
Definition at line 66 of file octree_search.h.
typedef boost::shared_ptr<OctreePointCloudSearch<PointT, LeafContainerT, BranchContainerT> > pcl::octree::OctreePointCloudSearch< PointT, LeafContainerT, BranchContainerT >::Ptr |
Definition at line 70 of file octree_search.h.
|
inline |
Constructor.
[in] | resolution | octree resolution at lowest octree level |
Definition at line 83 of file octree_search.h.
|
inlinevirtual |
Empty class constructor.
Definition at line 90 of file octree_search.h.
|
inline |
Search for approx.
nearest neighbor at the query point.
[in] | cloud | the point cloud data |
[in] | query_index | the index in cloud representing the query point |
[out] | result_index | the resultant index of the neighbor point |
[out] | sqr_distance | the resultant squared distance to the neighboring point |
Definition at line 157 of file octree_search.h.
References pcl::PointCloud< PointT >::points.
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.
[in] | p_q | the given query point |
[out] | result_index | the resultant index of the neighbor point |
[out] | sqr_distance | the resultant squared distance to the neighboring point |
Definition at line 137 of file octree_search.hpp.
References pcl::isFinite(), pcl::octree::OctreeKey::x, pcl::octree::OctreeKey::y, and pcl::octree::OctreeKey::z.
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.
[in] | query_index | index 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_index | the resultant index of the neighbor point |
[out] | sqr_distance | the resultant squared distance to the neighboring point |
Definition at line 154 of file octree_search.hpp.
|
protected |
Recursive search method that explores the octree and finds the approximate nearest neighbor.
[in] | point | query point |
[in] | node | current octree node to be explored |
[in] | key | octree key addressing a leaf node. |
[in] | tree_depth | current depth/level in the octree |
[out] | result_index | result index is written to this reference |
[out] | sqr_distance | squared distance to search |
Definition at line 408 of file octree_search.hpp.
References pcl::octree::OctreeKey::x, pcl::octree::OctreeKey::y, and pcl::octree::OctreeKey::z.
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.
[in] | min_pt | lower corner of search area |
[in] | max_pt | upper corner of search area |
[out] | k_indices | the resultant point indices |
Definition at line 196 of file octree_search.hpp.
References pcl::octree::OctreeKey::x, pcl::octree::OctreeKey::y, and pcl::octree::OctreeKey::z.
|
protected |
Recursive search method that explores the octree and finds points within a rectangular search area.
[in] | min_pt | lower corner of search area |
[in] | max_pt | upper corner of search area |
[in] | node | current octree node to be explored |
[in] | key | octree key addressing a leaf node. |
[in] | tree_depth | current depth/level in the octree |
[out] | k_indices | the resultant point indices |
Definition at line 512 of file octree_search.hpp.
References pcl::octree::OctreeKey::x, pcl::octree::OctreeKey::y, and pcl::octree::OctreeKey::z.
|
inlineprotected |
Find first child node ray will enter.
[in] | min_x | octree nodes X coordinate of lower bounding box corner |
[in] | min_y | octree nodes Y coordinate of lower bounding box corner |
[in] | min_z | octree nodes Z coordinate of lower bounding box corner |
[in] | mid_x | octree nodes X coordinate of bounding box mid line |
[in] | mid_y | octree nodes Y coordinate of bounding box mid line |
[in] | mid_z | octree nodes Z coordinate of bounding box mid line |
Definition at line 520 of file octree_search.h.
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).
[in] | origin | ray origin |
[in] | direction | ray direction vector |
[out] | voxel_center_list | results are written to this vector of PointT elements |
[in] | max_voxel_count | stop raycasting when this many voxels intersected (0: disable) |
Definition at line 589 of file octree_search.hpp.
References pcl::octree::OctreeKey::x, pcl::octree::OctreeKey::y, and pcl::octree::OctreeKey::z.
|
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
[in] | min_x | octree nodes X coordinate of lower bounding box corner |
[in] | min_y | octree nodes Y coordinate of lower bounding box corner |
[in] | min_z | octree nodes Z coordinate of lower bounding box corner |
[in] | max_x | octree nodes X coordinate of upper bounding box corner |
[in] | max_y | octree nodes Y coordinate of upper bounding box corner |
[in] | max_z | octree nodes Z coordinate of upper bounding box corner |
[in] | a | |
[in] | node | current octree node to be explored |
[in] | key | octree key addressing a leaf node. |
[out] | voxel_center_list | results are written to this vector of PointT elements |
[in] | max_voxel_count | stop raycasting when this many voxels intersected (0: disable) |
Definition at line 637 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.
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).
[in] | origin | ray origin |
[in] | direction | ray direction vector |
[out] | k_indices | resulting point indices from intersected voxels |
[in] | max_voxel_count | stop raycasting when this many voxels intersected (0: disable) |
Definition at line 614 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().
|
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
[in] | min_x | octree nodes X coordinate of lower bounding box corner |
[in] | min_y | octree nodes Y coordinate of lower bounding box corner |
[in] | min_z | octree nodes Z coordinate of lower bounding box corner |
[in] | max_x | octree nodes X coordinate of upper bounding box corner |
[in] | max_y | octree nodes Y coordinate of upper bounding box corner |
[in] | max_z | octree nodes Z coordinate of upper bounding box corner |
[in] | a | |
[in] | node | current octree node to be explored |
[in] | key | octree key addressing a leaf node. |
[out] | k_indices | resulting indices |
[in] | max_voxel_count | stop raycasting when this many voxels intersected (0: disable) |
Definition at line 755 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.
|
protected |
Recursive search method that explores the octree and finds the K nearest neighbors.
[in] | point | query point |
[in] | K | amount of nearest neighbors to be found |
[in] | node | current octree node to be explored |
[in] | key | octree key addressing a leaf node. |
[in] | tree_depth | current depth/level in the octree |
[in] | squared_search_radius | squared search radius distance |
[out] | point_candidates | priority queue of nearest neigbor point candidates |
Definition at line 214 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.
|
protected |
Recursive search method that explores the octree and finds neighbors within a given radius.
[in] | point | query point |
[in] | radiusSquared | squared search radius |
[in] | node | current octree node to be explored |
[in] | key | octree key addressing a leaf node. |
[in] | tree_depth | current depth/level in the octree |
[out] | k_indices | vector of indices found to be neighbors of query point |
[out] | k_sqr_distances | squared distances of neighbors to query point |
[in] | max_nn | maximum of neighbors to be found |
Definition at line 323 of file octree_search.hpp.
References pcl::octree::OctreeKey::x, pcl::octree::OctreeKey::y, and pcl::octree::OctreeKey::z.
|
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.
[in] | x | current nodes X coordinate of upper bounding box corner |
[in] | y | current nodes Y coordinate of upper bounding box corner |
[in] | z | current nodes Z coordinate of upper bounding box corner |
[in] | a | next node if exit Plane YZ |
[in] | b | next node if exit Plane XZ |
[in] | c | next node if exit Plane XY |
Definition at line 579 of file octree_search.h.
|
inlineprotected |
Initialize raytracing algorithm.
origin | ||
direction | ||
[in] | min_x | octree nodes X coordinate of lower bounding box corner |
[in] | min_y | octree nodes Y coordinate of lower bounding box corner |
[in] | min_z | octree nodes Z coordinate of lower bounding box corner |
[in] | max_x | octree nodes X coordinate of upper bounding box corner |
[in] | max_y | octree nodes Y coordinate of upper bounding box corner |
[in] | max_z | octree nodes Z coordinate of upper bounding box corner |
a |
Definition at line 466 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_.
|
inline |
Search for k-nearest neighbors at the query point.
[in] | cloud | the point cloud data |
[in] | index | the index in cloud representing the 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!) |
Definition at line 120 of file octree_search.h.
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.
[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!) |
Definition at line 84 of file octree_search.hpp.
References pcl::isFinite(), pcl::octree::OctreeKey::x, pcl::octree::OctreeKey::y, and pcl::octree::OctreeKey::z.
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.
[in] | index | index 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] | 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!) |
Definition at line 127 of file octree_search.hpp.
|
protected |
Helper function to calculate the squared distance between two points.
[in] | point_a | point A |
[in] | point_b | point B |
Definition at line 504 of file octree_search.hpp.
|
inline |
Search for all neighbors of query point that are within a given radius.
[in] | cloud | the point cloud data |
[in] | index | the index in cloud representing the 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 |
Definition at line 190 of file octree_search.h.
References pcl::PointCloud< PointT >::points.
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.
[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 |
Definition at line 164 of file octree_search.hpp.
References pcl::isFinite(), pcl::octree::OctreeKey::x, pcl::octree::OctreeKey::y, and pcl::octree::OctreeKey::z.
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.
[in] | index | index 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] | radius | 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 |
Definition at line 184 of file octree_search.hpp.
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.
[in] | point | point addressing a leaf node voxel |
[out] | point_idx_data | the resultant indices of the neighboring voxel points |
Definition at line 52 of file octree_search.hpp.
References pcl::isFinite().
Referenced by pcl::GFPFHEstimation< PointInT, PointLT, PointOutT >::computeFeature().
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.
[in] | index | the index in input cloud defining the query point |
[out] | point_idx_data | the resultant indices of the neighboring voxel points |
Definition at line 75 of file octree_search.hpp.