Loading...
Searching...
No Matches
pcl::octree::OctreePointCloudSearch< PointT, LeafContainerT, BranchContainerT > Class Template Reference
Module octree

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

using | IndicesPtr = shared_ptr<Indices>
using | IndicesConstPtr = shared_ptr<const Indices>
using | PointCloud = pcl::PointCloud<PointT>
using | PointCloudPtr = typename PointCloud::Ptr
using | PointCloudConstPtr = typename PointCloud::ConstPtr
using | Ptr
using | ConstPtr
using | AlignedPointTVector = std::vector<PointT, Eigen::aligned_allocator<PointT>>
using | OctreeT = OctreePointCloud<PointT, LeafContainerT, BranchContainerT>
using | LeafNode = typename OctreeT::LeafNode
using | BranchNode = typename OctreeT::BranchNode
Public Types inherited from pcl::octree::OctreePointCloud< PointT, OctreeContainerPointIndices, OctreeContainerEmpty >
using | Base
using | LeafNode
using | BranchNode
using | IndicesPtr
using | IndicesConstPtr
using | PointCloud
using | PointCloudPtr
using | PointCloudConstPtr
using | SingleBuffer
using | Ptr
using | ConstPtr
using | AlignedPointTVector
using | AlignedPointXYZVector
Public Types inherited from pcl::octree::OctreeBase< LeafContainerT, BranchContainerT >
using | OctreeT = OctreeBase<LeafContainerT, BranchContainerT>
using | BranchNode = OctreeBranchNode<BranchContainerT>
using | LeafNode = OctreeLeafNode<LeafContainerT>
using | BranchContainer = BranchContainerT
using | LeafContainer = LeafContainerT
using | Iterator = OctreeDepthFirstIterator<OctreeT>
using | ConstIterator = OctreeDepthFirstIterator<const OctreeT>
using | LeafNodeIterator = OctreeLeafNodeDepthFirstIterator<OctreeT>
using | ConstLeafNodeIterator = OctreeLeafNodeDepthFirstIterator<const OctreeT>
using | LeafNodeDepthFirstIterator = OctreeLeafNodeDepthFirstIterator<OctreeT>
using | ConstLeafNodeDepthFirstIterator
using | DepthFirstIterator = OctreeDepthFirstIterator<OctreeT>
using | ConstDepthFirstIterator = OctreeDepthFirstIterator<const OctreeT>
using | BreadthFirstIterator = OctreeBreadthFirstIterator<OctreeT>
using | ConstBreadthFirstIterator = OctreeBreadthFirstIterator<const OctreeT>
using | FixedDepthIterator = OctreeFixedDepthIterator<OctreeT>
using | ConstFixedDepthIterator = OctreeFixedDepthIterator<const OctreeT>
using | LeafNodeBreadthFirstIterator = OctreeLeafNodeBreadthFirstIterator<OctreeT>
using | ConstLeafNodeBreadthFirstIterator

## Public Member Functions

| OctreePointCloudSearch (const double resolution)
| Constructor.
bool | voxelSearch (const PointT &point, Indices &point_idx_data)
| Search for neighbors within a voxel at given point.
bool | voxelSearch (uindex_t index, Indices &point_idx_data)
| Search for neighbors within a voxel at given point referenced by a point index.
uindex_t | nearestKSearch (const PointCloud &cloud, uindex_t index, uindex_t k, Indices &k_indices, std::vector< float > &k_sqr_distances)
| Search for k-nearest neighbors at the query point.
uindex_t | nearestKSearch (const PointT &p_q, uindex_t k, Indices &k_indices, std::vector< float > &k_sqr_distances)
| Search for k-nearest neighbors at given query point.
uindex_t | nearestKSearch (uindex_t index, uindex_t k, Indices &k_indices, std::vector< float > &k_sqr_distances)
| Search for k-nearest neighbors at query point.
void | approxNearestSearch (const PointCloud &cloud, uindex_t query_index, index_t &result_index, float &sqr_distance)
| Search for approx.
void | approxNearestSearch (const PointT &p_q, index_t &result_index, float &sqr_distance)
| Search for approx.
void | approxNearestSearch (uindex_t query_index, index_t &result_index, float &sqr_distance)
| Search for approx.
uindex_t | radiusSearch (const PointCloud &cloud, uindex_t index, double radius, Indices &k_indices, std::vector< float > &k_sqr_distances, index_t max_nn=0)
| Search for all neighbors of query point that are within a given radius.
uindex_t | radiusSearch (const PointT &p_q, const double radius, Indices &k_indices, std::vector< float > &k_sqr_distances, uindex_t max_nn=0) const
| Search for all neighbors of query point that are within a given radius.
uindex_t | radiusSearch (uindex_t index, const double radius, Indices &k_indices, std::vector< float > &k_sqr_distances, uindex_t max_nn=0) const
| Search for all neighbors of query point that are within a given radius.
uindex_t | getIntersectedVoxelCenters (Eigen::Vector3f origin, Eigen::Vector3f direction, AlignedPointTVector &voxel_center_list, uindex_t max_voxel_count=0) const
| Get a PointT vector of centers of all voxels that intersected by a ray (origin, direction).
uindex_t | getIntersectedVoxelIndices (Eigen::Vector3f origin, Eigen::Vector3f direction, Indices &k_indices, uindex_t max_voxel_count=0) const
| Get indices of all voxels that are intersected by a ray (origin, direction).
uindex_t | boxSearch (const Eigen::Vector3f &min_pt, const Eigen::Vector3f &max_pt, Indices &k_indices) const
| Search for points within rectangular search area Points exactly on the edges of the search rectangle are included.
Public Member Functions inherited from pcl::octree::OctreePointCloud< PointT, OctreeContainerPointIndices, OctreeContainerEmpty >
| OctreePointCloud (const double resolution_arg)
| Octree pointcloud constructor.
void | setInputCloud (const PointCloudConstPtr &cloud_arg, const IndicesConstPtr &indices_arg=IndicesConstPtr())
| Provide a pointer to the input data set.
IndicesConstPtr const | getIndices () const
| Get a pointer to the vector of indices used.
PointCloudConstPtr | getInputCloud () const
| Get a pointer to the input point cloud dataset.
void | setEpsilon (double eps)
| Set the search epsilon precision (error bound) for nearest neighbors searches.
double | getEpsilon () const
| Get the search epsilon precision (error bound) for nearest neighbors searches.
void | setResolution (double resolution_arg)
| Set/change the octree voxel resolution.
double | getResolution () const
| Get octree voxel resolution.
uindex_t | getTreeDepth () const
| Get the maximum depth of the octree.
void | addPointsFromInputCloud ()
| Add points from input point cloud to octree.
void | addPointFromCloud (uindex_t point_idx_arg, IndicesPtr indices_arg)
| Add point at given index from input point cloud to octree.
void | addPointToCloud (const PointT &point_arg, PointCloudPtr cloud_arg)
| Add point simultaneously to octree and input point cloud.
bool | isVoxelOccupiedAtPoint (const PointT &point_arg) const
| Check if voxel at given point exist.
void | deleteTree ()
| Delete the octree structure and its leaf nodes.
uindex_t | getOccupiedVoxelCenters (AlignedPointTVector &voxel_center_list_arg) const
| Get a PointT vector of centers of all occupied voxels.
uindex_t | 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.
void | deleteVoxelAtPoint (const PointT &point_arg)
| Delete leaf node / voxel at given point.
void | defineBoundingBox ()
| Investigate dimensions of pointcloud data set and define corresponding bounding box for octree.
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.
double | getVoxelSquaredDiameter (uindex_t tree_depth_arg) const
| Calculates the squared diameter of a voxel at given tree depth.
double | getVoxelSquaredSideLen (uindex_t tree_depth_arg) const
| Calculates the squared voxel cube side length at given tree depth.
void | getVoxelBounds (const OctreeIteratorBase< OctreeBase< OctreeContainerPointIndices, OctreeContainerEmpty > > &iterator, Eigen::Vector3f &min_pt, Eigen::Vector3f &max_pt) const
| Generate bounds of the current voxel of an octree iterator.
void | enableDynamicDepth (std::size_t maxObjsPerLeaf)
| Enable dynamic octree structure.
Public Member Functions inherited from pcl::octree::OctreeBase< LeafContainerT, BranchContainerT >
Iterator | begin (uindex_t max_depth_arg=0u)
ConstIterator | begin (uindex_t max_depth_arg=0u) const
ConstIterator | cbegin (uindex_t max_depth_arg=0u) const
const Iterator | end ()
const ConstIterator | end () const
const ConstIterator | cend () const
LeafNodeDepthFirstIterator | leaf_depth_begin (uindex_t max_depth_arg=0u)
ConstLeafNodeDepthFirstIterator | leaf_depth_begin (uindex_t max_depth_arg=0u) const
const LeafNodeDepthFirstIterator | leaf_depth_end ()
const ConstLeafNodeDepthFirstIterator | leaf_depth_end () const
DepthFirstIterator | depth_begin (uindex_t max_depth_arg=0u)
ConstDepthFirstIterator | depth_begin (uindex_t max_depth_arg=0u) const
const DepthFirstIterator | depth_end ()
const ConstDepthFirstIterator | depth_end () const
BreadthFirstIterator | breadth_begin (uindex_t max_depth_arg=0u)
ConstBreadthFirstIterator | breadth_begin (uindex_t max_depth_arg=0u) const
const BreadthFirstIterator | breadth_end ()
const ConstBreadthFirstIterator | breadth_end () const
FixedDepthIterator | fixed_depth_begin (uindex_t fixed_depth_arg=0u)
ConstFixedDepthIterator | fixed_depth_begin (uindex_t fixed_depth_arg=0u) const
const FixedDepthIterator | fixed_depth_end ()
const ConstFixedDepthIterator | fixed_depth_end () const
LeafNodeBreadthFirstIterator | leaf_breadth_begin (uindex_t max_depth_arg=0u)
ConstLeafNodeBreadthFirstIterator | leaf_breadth_begin (uindex_t max_depth_arg=0u) const
const LeafNodeBreadthFirstIterator | leaf_breadth_end ()
const ConstLeafNodeBreadthFirstIterator | leaf_breadth_end () const
| OctreeBase ()
| Empty constructor.
virtual | ~OctreeBase ()
| Empty deconstructor.
| OctreeBase (const OctreeBase &source)
| Copy constructor.
OctreeBase & | operator= (const OctreeBase &source)
| Copy operator.
void | setMaxVoxelIndex (uindex_t max_voxel_index_arg)
| Set the maximum amount of voxels per dimension.
void | setTreeDepth (uindex_t max_depth_arg)
| Set the maximum depth of the octree.
uindex_t | getTreeDepth () const
| Get the maximum depth of the octree.
LeafContainerT * | createLeaf (uindex_t idx_x_arg, uindex_t idx_y_arg, uindex_t idx_z_arg)
| Create new leaf node at (idx_x_arg, idx_y_arg, idx_z_arg).
LeafContainerT * | findLeaf (uindex_t idx_x_arg, uindex_t idx_y_arg, uindex_t idx_z_arg) const
| Find leaf node at (idx_x_arg, idx_y_arg, idx_z_arg).
bool | existLeaf (uindex_t idx_x_arg, uindex_t idx_y_arg, uindex_t idx_z_arg) const
| idx_x_arg for the existence of leaf node at (idx_x_arg, idx_y_arg, idx_z_arg).
void | removeLeaf (uindex_t idx_x_arg, uindex_t idx_y_arg, uindex_t idx_z_arg)
| Remove leaf node at (idx_x_arg, idx_y_arg, idx_z_arg).
std::size_t | getLeafCount () const
| Return the amount of existing leafs in the octree.
std::size_t | getBranchCount () const
| Return the amount of existing branch nodes in the octree.
void | deleteTree ()
| Delete the octree structure and its leaf nodes.
void | serializeTree (std::vector< char > &binary_tree_out_arg) const
| Serialize octree into a binary output vector describing its branch node structure.
void | serializeTree (std::vector< char > &binary_tree_out_arg, std::vector< LeafContainerT * > &leaf_container_vector_arg) const
| Serialize octree into a binary output vector describing its branch node structure and push all LeafContainerT elements stored in the octree to a vector.
void | serializeLeafs (std::vector< LeafContainerT * > &leaf_container_vector_arg)
| Outputs a vector of all LeafContainerT elements that are stored within the octree leaf nodes.
void | deserializeTree (std::vector< char > &binary_tree_input_arg)
| Deserialize a binary octree description vector and create a corresponding octree structure.
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.

## Protected Member Functions

float | pointSquaredDist (const PointT &point_a, const PointT &point_b) const
| Helper function to calculate the squared distance between two points.
void | getNeighborsWithinRadiusRecursive (const PointT &point, const double radiusSquared, const BranchNode *node, const OctreeKey &key, uindex_t tree_depth, Indices &k_indices, std::vector< float > &k_sqr_distances, uindex_t max_nn) const
| Recursive search method that explores the octree and finds neighbors within a given radius.
double | getKNearestNeighborRecursive (const PointT &point, uindex_t K, const BranchNode *node, const OctreeKey &key, uindex_t 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.
void | approxNearestSearchRecursive (const PointT &point, const BranchNode *node, const OctreeKey &key, uindex_t tree_depth, index_t &result_index, float &sqr_distance)
| Recursive search method that explores the octree and finds the approximate nearest neighbor.
uindex_t | 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, uindex_t max_voxel_count) const
| Recursively search the tree for all intersected leaf nodes and return a vector of voxel centers.
void | boxSearchRecursive (const Eigen::Vector3f &min_pt, const Eigen::Vector3f &max_pt, const BranchNode *node, const OctreeKey &key, uindex_t tree_depth, Indices &k_indices) const
| Recursive search method that explores the octree and finds points within a rectangular search area.
uindex_t | 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, Indices &k_indices, uindex_t max_voxel_count) const
| Recursively search the tree for all intersected leaf nodes and return a vector of indices.
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.
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.
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.
Protected Member Functions inherited from pcl::octree::OctreePointCloud< PointT, OctreeContainerPointIndices, OctreeContainerEmpty >
virtual void | addPointIdx (uindex_t point_idx_arg)
| Add point at index from input pointcloud dataset to octree.
void | expandLeafNode (LeafNode *leaf_node, BranchNode *parent_branch, unsigned char child_idx, uindex_t depth_mask)
| Add point at index from input pointcloud dataset to octree.
const PointT & | getPointByIndex (uindex_t index_arg) const
| Get point at index from input pointcloud dataset.
OctreeContainerPointIndices * | findLeafAtPoint (const PointT &point_arg) const
| Find octree leaf node at a given point.
void | getKeyBitSize ()
| Define octree key setting and octree depth based on defined bounding box.
void | adoptBoundingBoxToPoint (const PointT &point_idx_arg)
| Grow the bounding box/octree until point fits.
bool | isPointWithinBoundingBox (const PointT &point_idx_arg) const
| Checks if given point is within the bounding box of the octree.
void | genOctreeKeyforPoint (const PointT &point_arg, OctreeKey &key_arg) const
| Generate octree key for voxel at a given point.
virtual bool | genOctreeKeyForDataT (const index_t &data_arg, OctreeKey &key_arg) const
| Virtual method for generating octree key for a given point index.
void | genLeafNodeCenterFromOctreeKey (const OctreeKey &key_arg, PointT &point_arg) const
| Generate a point at center of leaf node voxel.
void | genVoxelCenterFromOctreeKey (const OctreeKey &key_arg, uindex_t tree_depth_arg, PointT &point_arg) const
| Generate a point at center of octree voxel at given tree level.
void | genVoxelBoundsFromOctreeKey (const OctreeKey &key_arg, uindex_t 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.
uindex_t | 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.
Protected Member Functions inherited from pcl::octree::OctreeBase< LeafContainerT, BranchContainerT >
LeafContainerT * | createLeaf (const OctreeKey &key_arg)
| Create a leaf node.
LeafContainerT * | findLeaf (const OctreeKey &key_arg) const
| Find leaf node.
bool | existLeaf (const OctreeKey &key_arg) const
| Check for existence of a leaf node in the octree.
void | removeLeaf (const OctreeKey &key_arg)
| Remove leaf node from octree.
OctreeNode * | getRootNode () const
| Retrieve root node.
bool | branchHasChild (const BranchNode &branch_arg, unsigned char child_idx_arg) const
| Check if branch is pointing to a particular child node.
OctreeNode * | getBranchChildPtr (const BranchNode &branch_arg, unsigned char child_idx_arg) const
| Retrieve a child node pointer for child node at child_idx.
void | setBranchChildPtr (BranchNode &branch_arg, unsigned char child_idx_arg, OctreeNode *new_child_arg)
| Assign new child node to branch.
char | getBranchBitPattern (const BranchNode &branch_arg) const
| Generate bit pattern reflecting the existence of child node pointers.
void | deleteBranchChild (BranchNode &branch_arg, unsigned char child_idx_arg)
| Delete child node and all its subchilds from octree.
void | deleteBranch (BranchNode &branch_arg)
| Delete branch and all its subchilds from octree.
BranchNode * | createBranchChild (BranchNode &branch_arg, unsigned char child_idx_arg)
| Create and add a new branch child to a branch class.
LeafNode * | createLeafChild (BranchNode &branch_arg, unsigned char child_idx_arg)
| Create and add a new leaf child to a branch class.
uindex_t | createLeafRecursive (const OctreeKey &key_arg, uindex_t depth_mask_arg, BranchNode *branch_arg, LeafNode *&return_leaf_arg, BranchNode *&parent_of_leaf_arg)
| Create a leaf node at octree key.
void | findLeafRecursive (const OctreeKey &key_arg, uindex_t depth_mask_arg, BranchNode *branch_arg, LeafContainerT *&result_arg) const
| Recursively search for a given leaf node and return a pointer.
bool | deleteLeafRecursive (const OctreeKey &key_arg, uindex_t depth_mask_arg, BranchNode *branch_arg)
| Recursively search and delete leaf node.
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.

void

deserializeTreeRecursive (BranchNode *branch_arg, uindex_t 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.
virtual void | serializeTreeCallback (LeafContainerT &, const OctreeKey &) const
| Callback executed for every leaf node during serialization.
virtual void | deserializeTreeCallback (LeafContainerT &, const OctreeKey &)
| Callback executed for every leaf node during deserialization.
bool | octreeCanResize () const
| Test if octree is able to dynamically change its depth.

## Additional Inherited Members

Protected Attributes inherited from pcl::octree::OctreePointCloud< PointT, OctreeContainerPointIndices, OctreeContainerEmpty >
PointCloudConstPtr | input_
| Pointer to input point cloud dataset.
IndicesConstPtr | indices_
| A pointer to the vector of point indices to use.
double | epsilon_
| Epsilon precision (error bound) for nearest neighbors searches.
double | resolution_
| Octree resolution.
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.
std::size_t | max_objs_per_leaf_
| Amount of DataT objects per leafNode before expanding branch.
Protected Attributes inherited from pcl::octree::OctreeBase< LeafContainerT, BranchContainerT >
std::size_t | leaf_count_ {0}
| Amount of leaf nodes.
std::size_t | branch_count_ {1}
| Amount of branch nodes.
BranchNode * | root_node_
| Pointer to root branch node of octree.
uindex_t | depth_mask_ {0}
| Depth mask based on octree depth.
uindex_t | octree_depth_ {0}
| Octree depth.
bool | dynamic_depth_enabled_ {false}
| Enable dynamic_depth.
OctreeKey | max_key_
| key range

## 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

Template Parameters

  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

## AlignedPointTVector

template<typename PointT, typename LeafContainerT = OctreeContainerPointIndices, typename BranchContainerT = OctreeContainerEmpty>

using pcl::octree::OctreePointCloudSearch< PointT, LeafContainerT, BranchContainerT >::AlignedPointTVector = std::vector<PointT, Eigen::aligned_allocator<PointT>>

Definition at line 75 of file octree_search.h.

## BranchNode

template<typename PointT, typename LeafContainerT = OctreeContainerPointIndices, typename BranchContainerT = OctreeContainerEmpty>

using pcl::octree::OctreePointCloudSearch< PointT, LeafContainerT, BranchContainerT >::BranchNode = typename OctreeT::BranchNode

Definition at line 79 of file octree_search.h.

## ConstPtr

template<typename PointT, typename LeafContainerT = OctreeContainerPointIndices, typename BranchContainerT = OctreeContainerEmpty>

using pcl::octree::OctreePointCloudSearch< PointT, LeafContainerT, BranchContainerT >::ConstPtr

Initial value:
shared_ptr<
const OctreePointCloudSearch<PointT, LeafContainerT, BranchContainerT>>
pcl::octree::OctreePointCloudSearch::OctreePointCloudSearch
OctreePointCloudSearch(const double resolution)
Constructor.
Definition octree_search.h:84

Definition at line 71 of file octree_search.h.

## IndicesConstPtr

template<typename PointT, typename LeafContainerT = OctreeContainerPointIndices, typename BranchContainerT = OctreeContainerEmpty>

using pcl::octree::OctreePointCloudSearch< PointT, LeafContainerT, BranchContainerT >::IndicesConstPtr = shared_ptr<const Indices>

Definition at line 62 of file octree_search.h.

## IndicesPtr

template<typename PointT, typename LeafContainerT = OctreeContainerPointIndices, typename BranchContainerT = OctreeContainerEmpty>

using pcl::octree::OctreePointCloudSearch< PointT, LeafContainerT, BranchContainerT >::IndicesPtr = shared_ptr<Indices>

Definition at line 61 of file octree_search.h.

## LeafNode

template<typename PointT, typename LeafContainerT = OctreeContainerPointIndices, typename BranchContainerT = OctreeContainerEmpty>

using pcl::octree::OctreePointCloudSearch< PointT, LeafContainerT, BranchContainerT >::LeafNode = typename OctreeT::LeafNode

Definition at line 78 of file octree_search.h.

## OctreeT

template<typename PointT, typename LeafContainerT = OctreeContainerPointIndices, typename BranchContainerT = OctreeContainerEmpty>

using pcl::octree::OctreePointCloudSearch< PointT, LeafContainerT, BranchContainerT >::OctreeT = OctreePointCloud<PointT, LeafContainerT, BranchContainerT>

Definition at line 77 of file octree_search.h.

## PointCloud

template<typename PointT, typename LeafContainerT = OctreeContainerPointIndices, typename BranchContainerT = OctreeContainerEmpty>

using pcl::octree::OctreePointCloudSearch< PointT, LeafContainerT, BranchContainerT >::PointCloud = pcl::PointCloud<PointT>

Definition at line 64 of file octree_search.h.

## PointCloudConstPtr

template<typename PointT, typename LeafContainerT = OctreeContainerPointIndices, typename BranchContainerT = OctreeContainerEmpty>

using pcl::octree::OctreePointCloudSearch< PointT, LeafContainerT, BranchContainerT >::PointCloudConstPtr = typename PointCloud::ConstPtr

Definition at line 66 of file octree_search.h.

## PointCloudPtr

template<typename PointT, typename LeafContainerT = OctreeContainerPointIndices, typename BranchContainerT = OctreeContainerEmpty>

using pcl::octree::OctreePointCloudSearch< PointT, LeafContainerT, BranchContainerT >::PointCloudPtr = typename PointCloud::Ptr

Definition at line 65 of file octree_search.h.

## Ptr

template<typename PointT, typename LeafContainerT = OctreeContainerPointIndices, typename BranchContainerT = OctreeContainerEmpty>

using pcl::octree::OctreePointCloudSearch< PointT, LeafContainerT, BranchContainerT >::Ptr

Initial value:
shared_ptr<OctreePointCloudSearch<PointT, LeafContainerT, BranchContainerT>>

Definition at line 69 of file octree_search.h.

## Constructor & Destructor Documentation

## OctreePointCloudSearch()

template<typename PointT, typename LeafContainerT = OctreeContainerPointIndices, typename BranchContainerT = OctreeContainerEmpty>

pcl::octree::OctreePointCloudSearch< PointT, LeafContainerT, BranchContainerT >::OctreePointCloudSearch | ( | const double | resolution | ) |

inline

Constructor.

Parameters

  [in] | resolution | octree resolution at lowest octree level

Definition at line 84 of file octree_search.h.

## Member Function Documentation

## approxNearestSearch() [1/3]

template<typename PointT, typename LeafContainerT = OctreeContainerPointIndices, typename BranchContainerT = OctreeContainerEmpty>

void pcl::octree::OctreePointCloudSearch< PointT, LeafContainerT, BranchContainerT >::approxNearestSearch | ( | const PointCloud & | cloud,
|  | uindex_t | query_index,
|  | index_t & | result_index,
|  | float & | sqr_distance )

inline

Search for approx.

nearest neighbor at the query point.

Parameters

  [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 164 of file octree_search.h.

Referenced by approxNearestSearch(), and pcl::octree::OctreePointCloudSearch< PointInT >::approxNearestSearch().

## approxNearestSearch() [2/3]

template<typename PointT, typename LeafContainerT, typename BranchContainerT>

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

Search for approx.

nearest neighbor at the query point.

Parameters

  [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 135 of file octree_search.hpp.

References approxNearestSearchRecursive(), pcl::isFinite(), pcl::octree::OctreeBase< LeafContainerT, BranchContainerT >::leaf_count_, pcl::octree::OctreeBase< LeafContainerT, BranchContainerT >::root_node_, pcl::octree::OctreeKey::x, pcl::octree::OctreeKey::y, and pcl::octree::OctreeKey::z.

## approxNearestSearch() [3/3]

template<typename PointT, typename LeafContainerT, typename BranchContainerT>

void pcl::octree::OctreePointCloudSearch< PointT, LeafContainerT, BranchContainerT >::approxNearestSearch | ( | uindex_t | query_index,
|  | index_t & | result_index,
|  | float & | sqr_distance )

Search for approx.

nearest neighbor at the query point.

Parameters

  [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 153 of file octree_search.hpp.

References approxNearestSearch(), and pcl::octree::OctreePointCloud< PointT, OctreeContainerPointIndices, OctreeContainerEmpty >::getPointByIndex().

## approxNearestSearchRecursive()

template<typename PointT, typename LeafContainerT, typename BranchContainerT>

void pcl::octree::OctreePointCloudSearch< PointT, LeafContainerT, BranchContainerT >::approxNearestSearchRecursive | ( | const PointT & | point,
|  | const BranchNode * | node,
|  | const OctreeKey & | key,
|  | uindex_t | tree_depth,
|  | index_t & | result_index,
|  | float & | sqr_distance )

protected

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

Parameters

  [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 427 of file octree_search.hpp.

References pcl::octree::OctreeBase< LeafContainerT, BranchContainerT >::branchHasChild().

Referenced by approxNearestSearch().

## boxSearch()

template<typename PointT, typename LeafContainerT, typename BranchContainerT>

uindex_t pcl::octree::OctreePointCloudSearch< PointT, LeafContainerT, BranchContainerT >::boxSearch | ( | const Eigen::Vector3f & | min_pt,
|  | const Eigen::Vector3f & | max_pt,
|  | Indices & | k_indices ) const

Search for points within rectangular search area Points exactly on the edges of the search rectangle are included.

Parameters

  [in] | min_pt | lower corner of search area
  [in] | max_pt | upper corner of search area
  [out] | k_indices | the resultant point indices

Returns
  number of points found within search area

Definition at line 206 of file octree_search.hpp.

References boxSearchRecursive(), pcl::octree::OctreeBase< LeafContainerT, BranchContainerT >::root_node_, pcl::octree::OctreeKey::x, pcl::octree::OctreeKey::y, and pcl::octree::OctreeKey::z.

Referenced by pcl::applyMorphologicalOperator().

## boxSearchRecursive()

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,
|  | uindex_t | tree_depth,
|  | Indices & | k_indices ) const

protected

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

Parameters

  [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 524 of file octree_search.hpp.

References boxSearchRecursive(), pcl::octree::BRANCH_NODE, pcl::octree::OctreePointCloud< PointT, OctreeContainerPointIndices, OctreeContainerEmpty >::genVoxelBoundsFromOctreeKey(), pcl::octree::OctreeBase< LeafContainerT, BranchContainerT >::getBranchChildPtr(), pcl::octree::OctreeNode::getNodeType(), pcl::octree::OctreePointCloud< PointT, OctreeContainerPointIndices, OctreeContainerEmpty >::getPointByIndex(), pcl::octree::OctreeKey::x, pcl::octree::OctreeKey::y, and pcl::octree::OctreeKey::z.

Referenced by boxSearch(), and boxSearchRecursive().

## getFirstIntersectedNode()

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

inline protected

Find first child node ray will enter.

Parameters

  [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

Returns
  the first child node ray will enter

Definition at line 583 of file octree_search.h.

Referenced by getIntersectedVoxelCentersRecursive(), and getIntersectedVoxelIndicesRecursive().

## getIntersectedVoxelCenters()

template<typename PointT, typename LeafContainerT, typename BranchContainerT>

uindex_t pcl::octree::OctreePointCloudSearch< PointT, LeafContainerT, BranchContainerT >::getIntersectedVoxelCenters | ( | Eigen::Vector3f | origin,
|  | Eigen::Vector3f | direction,
|  | AlignedPointTVector & | voxel_center_list,
|  | uindex_t | max_voxel_count = 0 ) const

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

Parameters

  [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)

Returns
  number of intersected voxels

Definition at line 599 of file octree_search.hpp.

References getIntersectedVoxelCentersRecursive(), initIntersectedVoxel(), pcl::octree::OctreeBase< LeafContainerT, BranchContainerT >::root_node_, pcl::octree::OctreeKey::x, pcl::octree::OctreeKey::y, and pcl::octree::OctreeKey::z.

## getIntersectedVoxelCentersRecursive()

template<typename PointT, typename LeafContainerT, typename BranchContainerT>

uindex_t 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,
|  | uindex_t | 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_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 | number used for voxel child index remapping
  [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)

Returns
  number of voxels found

Definition at line 669 of file octree_search.hpp.

References pcl::octree::OctreePointCloud< PointT, OctreeContainerPointIndices, OctreeContainerEmpty >::genLeafNodeCenterFromOctreeKey(), pcl::octree::OctreeBase< LeafContainerT, BranchContainerT >::getBranchChildPtr(), getFirstIntersectedNode(), getIntersectedVoxelCentersRecursive(), getNextIntersectedNode(), pcl::octree::OctreeNode::getNodeType(), pcl::octree::LEAF_NODE, pcl::octree::OctreeKey::x, pcl::octree::OctreeKey::y, and pcl::octree::OctreeKey::z.

Referenced by getIntersectedVoxelCenters(), and getIntersectedVoxelCentersRecursive().

## getIntersectedVoxelIndices()

template<typename PointT, typename LeafContainerT, typename BranchContainerT>

uindex_t pcl::octree::OctreePointCloudSearch< PointT, LeafContainerT, BranchContainerT >::getIntersectedVoxelIndices | ( | Eigen::Vector3f | origin,
|  | Eigen::Vector3f | direction,
|  | Indices & | k_indices,
|  | uindex_t | max_voxel_count = 0 ) const

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

Parameters

  [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)

Returns
  number of intersected voxels

Definition at line 635 of file octree_search.hpp.

References getIntersectedVoxelIndicesRecursive(), initIntersectedVoxel(), pcl::octree::OctreeBase< LeafContainerT, BranchContainerT >::root_node_, pcl::octree::OctreeKey::x, pcl::octree::OctreeKey::y, and pcl::octree::OctreeKey::z.

## getIntersectedVoxelIndicesRecursive()

template<typename PointT, typename LeafContainerT, typename BranchContainerT>

uindex_t 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,
|  | Indices & | k_indices,
|  | uindex_t | 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_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 | number used for voxel child index remapping
  [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)

Returns
  number of voxels found

Definition at line 865 of file octree_search.hpp.

References pcl::octree::OctreeBase< LeafContainerT, BranchContainerT >::getBranchChildPtr(), getFirstIntersectedNode(), getIntersectedVoxelIndicesRecursive(), getNextIntersectedNode(), pcl::octree::OctreeNode::getNodeType(), pcl::octree::LEAF_NODE, pcl::octree::OctreeKey::x, pcl::octree::OctreeKey::y, and pcl::octree::OctreeKey::z.

Referenced by getIntersectedVoxelIndices(), and getIntersectedVoxelIndicesRecursive().

## getKNearestNeighborRecursive()

template<typename PointT, typename LeafContainerT, typename BranchContainerT>

double pcl::octree::OctreePointCloudSearch< PointT, LeafContainerT, BranchContainerT >::getKNearestNeighborRecursive | ( | const PointT & | point,
|  | uindex_t | K,
|  | const BranchNode * | node,
|  | const OctreeKey & | key,
|  | uindex_t | 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] | 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 neighbor point candidates

Returns
  squared search radius based on current point candidate set found

Definition at line 224 of file octree_search.hpp.

References pcl::octree::OctreeBase< LeafContainerT, BranchContainerT >::branchHasChild(), pcl::octree::OctreePointCloud< PointT, OctreeContainerPointIndices, OctreeContainerEmpty >::genVoxelCenterFromOctreeKey(), pcl::octree::OctreePointCloud< PointT, OctreeContainerPointIndices, OctreeContainerEmpty >::getVoxelSquaredDiameter(), pcl::K, pcl::octree::OctreeKey::x, pcl::octree::OctreeKey::y, and pcl::octree::OctreeKey::z.

## getNeighborsWithinRadiusRecursive()

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,
|  | uindex_t | tree_depth,
|  | Indices & | k_indices,
|  | std::vector< float > & | k_sqr_distances,
|  | uindex_t | max_nn ) const

protected

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

Parameters

  [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 341 of file octree_search.hpp.

References pcl::octree::OctreeBase< LeafContainerT, BranchContainerT >::branchHasChild(), pcl::octree::OctreeBase< LeafContainerT, BranchContainerT >::getBranchChildPtr(), pcl::octree::OctreeKey::x, pcl::octree::OctreeKey::y, and pcl::octree::OctreeKey::z.

Referenced by radiusSearch().

## getNextIntersectedNode()

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

inline protected

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] | 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

Returns
  the next child node ray will enter or 8 if exiting

Definition at line 641 of file octree_search.h.

Referenced by getIntersectedVoxelCentersRecursive(), and getIntersectedVoxelIndicesRecursive().

## initIntersectedVoxel()

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

inline protected

Initialize raytracing algorithm.

Parameters

  [in] | origin | ray origin
  [in] | direction | ray direction vector
  [out] | min_x | octree nodes X coordinate of lower bounding box corner
  [out] | min_y | octree nodes Y coordinate of lower bounding box corner
  [out] | min_z | octree nodes Z coordinate of lower bounding box corner
  [out] | max_x | octree nodes X coordinate of upper bounding box corner
  [out] | max_y | octree nodes Y coordinate of upper bounding box corner
  [out] | max_z | octree nodes Z coordinate of upper bounding box corner
  [out] | a | number used for voxel child index remapping

Definition at line 524 of file octree_search.h.

Referenced by getIntersectedVoxelCenters(), and getIntersectedVoxelIndices().

## nearestKSearch() [1/3]

template<typename PointT, typename LeafContainerT = OctreeContainerPointIndices, typename BranchContainerT = OctreeContainerEmpty>

uindex_t pcl::octree::OctreePointCloudSearch< PointT, LeafContainerT, BranchContainerT >::nearestKSearch | ( | const PointCloud & | cloud,
|  | uindex_t | index,
|  | uindex_t | k,
|  | Indices & | k_indices,
|  | std::vector< float > & | k_sqr_distances )

inline

Search for k-nearest neighbors at the query point.

Parameters

  [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!)

Returns
  number of neighbors found

Definition at line 116 of file octree_search.h.

Referenced by nearestKSearch(), and pcl::octree::OctreePointCloudSearch< PointInT >::nearestKSearch().

## nearestKSearch() [2/3]

template<typename PointT, typename LeafContainerT, typename BranchContainerT>

uindex_t pcl::octree::OctreePointCloudSearch< PointT, LeafContainerT, BranchContainerT >::nearestKSearch | ( | const PointT & | p_q,
|  | uindex_t | k,
|  | Indices & | k_indices,
|  | std::vector< float > & | k_sqr_distances )

Search for k-nearest neighbors at given query point.

Parameters

  [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!)

Returns
  number of neighbors found

Definition at line 82 of file octree_search.hpp.

References pcl::isFinite(), and pcl::octree::OctreeBase< LeafContainerT, BranchContainerT >::leaf_count_.

## nearestKSearch() [3/3]

template<typename PointT, typename LeafContainerT, typename BranchContainerT>

uindex_t pcl::octree::OctreePointCloudSearch< PointT, LeafContainerT, BranchContainerT >::nearestKSearch | ( | uindex_t | index,
|  | uindex_t | k,
|  | Indices & | k_indices,
|  | std::vector< float > & | k_sqr_distances )

Search for k-nearest neighbors at query point.

Parameters

  [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!)

Returns
  number of neighbors found

Definition at line 126 of file octree_search.hpp.

References pcl::octree::OctreePointCloud< PointT, OctreeContainerPointIndices, OctreeContainerEmpty >::getPointByIndex(), and nearestKSearch().

## pointSquaredDist()

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_a | point A
  [in] | point_b | point B

Returns
  squared distance between point A and point B

Definition at line 516 of file octree_search.hpp.

## radiusSearch() [1/3]

template<typename PointT, typename LeafContainerT = OctreeContainerPointIndices, typename BranchContainerT = OctreeContainerEmpty>

uindex_t pcl::octree::OctreePointCloudSearch< PointT, LeafContainerT, BranchContainerT >::radiusSearch | ( | const PointCloud & | cloud,
|  | uindex_t | index,
|  | double | radius,
|  | Indices & | k_indices,
|  | std::vector< float > & | k_sqr_distances,
|  | index_t | max_nn = 0 )

inline

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

Parameters

  [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

Returns
  number of neighbors found in radius

Definition at line 201 of file octree_search.h.

Referenced by radiusSearch(), and pcl::octree::OctreePointCloudSearch< PointInT >::radiusSearch().

## radiusSearch() [2/3]

template<typename PointT, typename LeafContainerT, typename BranchContainerT>

uindex_t pcl::octree::OctreePointCloudSearch< PointT, LeafContainerT, BranchContainerT >::radiusSearch | ( | const PointT & | p_q,
|  | const double | radius,
|  | Indices & | k_indices,
|  | std::vector< float > & | k_sqr_distances,
|  | uindex_t | max_nn = 0 ) const

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

Parameters

  [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

Returns
  number of neighbors found in radius

Definition at line 163 of file octree_search.hpp.

References getNeighborsWithinRadiusRecursive(), pcl::isFinite(), pcl::octree::OctreeBase< LeafContainerT, BranchContainerT >::root_node_, pcl::octree::OctreeKey::x, pcl::octree::OctreeKey::y, and pcl::octree::OctreeKey::z.

## radiusSearch() [3/3]

template<typename PointT, typename LeafContainerT, typename BranchContainerT>

uindex_t pcl::octree::OctreePointCloudSearch< PointT, LeafContainerT, BranchContainerT >::radiusSearch | ( | uindex_t | index,
|  | const double | radius,
|  | Indices & | k_indices,
|  | std::vector< float > & | k_sqr_distances,
|  | uindex_t | max_nn = 0 ) const

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

Parameters

  [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

Returns
  number of neighbors found in radius

Definition at line 192 of file octree_search.hpp.

References pcl::octree::OctreePointCloud< PointT, OctreeContainerPointIndices, OctreeContainerEmpty >::getPointByIndex(), and radiusSearch().

## voxelSearch() [1/2]

template<typename PointT, typename LeafContainerT, typename BranchContainerT>

bool pcl::octree::OctreePointCloudSearch< PointT, LeafContainerT, BranchContainerT >::voxelSearch | ( | const PointT & | point,
|  | Indices & | point_idx_data )

Search for neighbors within a voxel at given point.

Parameters

  [in] | point | point addressing a leaf node voxel
  [out] | point_idx_data | the resultant indices of the neighboring voxel points

Returns
  "true" if leaf node exist; "false" otherwise

Definition at line 50 of file octree_search.hpp.

References pcl::octree::OctreeBase< LeafContainerT, BranchContainerT >::findLeaf(), pcl::octree::OctreePointCloud< PointT, OctreeContainerPointIndices, OctreeContainerEmpty >::genOctreeKeyforPoint(), and pcl::isFinite().

Referenced by voxelSearch().

## voxelSearch() [2/2]

template<typename PointT, typename LeafContainerT, typename BranchContainerT>

bool pcl::octree::OctreePointCloudSearch< PointT, LeafContainerT, BranchContainerT >::voxelSearch | ( | uindex_t | index,
|  | Indices & | point_idx_data )

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

Parameters

  [in] | index | the index in input cloud defining the query point
  [out] | point_idx_data | the resultant indices of the neighboring voxel points

Returns
  "true" if leaf node exist; "false" otherwise

Definition at line 73 of file octree_search.hpp.

References pcl::octree::OctreePointCloud< PointT, OctreeContainerPointIndices, OctreeContainerEmpty >::getPointByIndex(), and voxelSearch().

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

- pcl/octree/octree_search.h
- pcl/octree/impl/octree_search.hpp