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

Octree pointcloud density class More...

`#include <pcl/octree/octree_pointcloud_density.h>`

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

## Public Member Functions

| OctreePointCloudDensity (const double resolution_arg)
| OctreePointCloudDensity class constructor.
| ~OctreePointCloudDensity () override=default
| Empty class deconstructor.
uindex_t | getVoxelDensityAtPoint (const PointT &point_arg) const
| Get the amount of points within a leaf node voxel which is addressed by a point.
Public Member Functions inherited from pcl::octree::OctreePointCloud< PointT, LeafContainerT, BranchContainerT, OctreeT >
| 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.
void | addPointToCloud (const PointT &point_arg, PointCloudPtr cloud_arg, IndicesPtr indices_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.
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.
bool | isVoxelOccupiedAtPoint (const index_t &point_idx_arg) const
| Check if voxel at given point from input cloud exist.
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 | deleteVoxelAtPoint (const index_t &point_idx_arg)
| Delete leaf node / voxel at given point from input cloud.
void | defineBoundingBox ()
| Investigate dimensions of pointcloud data set and define corresponding bounding box for octree.
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.
void | defineBoundingBox (const double max_x_arg, const double max_y_arg, const double max_z_arg)
| Define bounding box for octree.
void | defineBoundingBox (const double cubeLen_arg)
| Define bounding box cube 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 | getVoxelSquaredDiameter () const
| Calculates the squared diameter of a voxel at leaf depth.
double | getVoxelSquaredSideLen (uindex_t tree_depth_arg) const
| Calculates the squared voxel cube side length at given tree depth.
double | getVoxelSquaredSideLen () const
| Calculates the squared voxel cube side length at leaf level.
void | getVoxelBounds (const OctreeIteratorBase< OctreeT > &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.

## Additional Inherited Members

Public Types inherited from pcl::octree::OctreePointCloud< PointT, LeafContainerT, BranchContainerT, OctreeT >
using | Base = OctreeT
using | LeafNode = typename OctreeT::LeafNode
using | BranchNode = typename OctreeT::BranchNode
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 | SingleBuffer = OctreePointCloud< PointT, LeafContainerT, BranchContainerT, OctreeBase< LeafContainerT > >
using | Ptr = shared_ptr< OctreePointCloud< PointT, LeafContainerT, BranchContainerT, OctreeT > >
using | ConstPtr = shared_ptr< const OctreePointCloud< PointT, LeafContainerT, BranchContainerT, OctreeT > >
using | AlignedPointTVector = std::vector< PointT, Eigen::aligned_allocator< PointT > >
using | AlignedPointXYZVector = std::vector< PointXYZ, Eigen::aligned_allocator< PointXYZ > >
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 = OctreeLeafNodeDepthFirstIterator< const OctreeT >
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 = OctreeLeafNodeBreadthFirstIterator< const OctreeT >
Protected Member Functions inherited from pcl::octree::OctreePointCloud< PointT, LeafContainerT, BranchContainerT, OctreeT >
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.
LeafContainerT * | 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.
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.
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.
Protected Attributes inherited from pcl::octree::OctreePointCloud< PointT, LeafContainerT, BranchContainerT, OctreeT >
PointCloudConstPtr | input_
| Pointer to input point cloud dataset.
IndicesConstPtr | indices_
| A pointer to the vector of point indices to use.
double | epsilon_ {0.0}
| Epsilon precision (error bound) for nearest neighbors searches.
double | resolution_
| Octree resolution.
double | min_x_ {0.0}
double | max_x_
double | min_y_ {0.0}
double | max_y_
double | min_z_ {0.0}
double | max_z_
bool | bounding_box_defined_ {false}
| Flag indicating if octree has defined bounding box.
std::size_t | max_objs_per_leaf_ {0}
| 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 = OctreePointCloudDensityContainer, typename BranchContainerT = OctreeContainerEmpty>
class pcl::octree::OctreePointCloudDensity< PointT, LeafContainerT, BranchContainerT >

Octree pointcloud density class

Note
  This class generate an octrees from a point cloud (zero-copy). Only the amount of points that fall into the leaf node voxel are stored.
  The octree pointcloud is initialized with its voxel resolution. Its bounding box is automatically adjusted or can be predefined.

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 117 of file octree_pointcloud_density.h.

## Constructor & Destructor Documentation

## OctreePointCloudDensity()

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

pcl::octree::OctreePointCloudDensity< PointT, LeafContainerT, BranchContainerT >::OctreePointCloudDensity | ( | const double | resolution_arg | ) |

inline

OctreePointCloudDensity class constructor.

Parameters

  resolution_arg | octree resolution at lowest octree level

Definition at line 123 of file octree_pointcloud_density.h.

## ~OctreePointCloudDensity()

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

pcl::octree::OctreePointCloudDensity< PointT, LeafContainerT, BranchContainerT >::~OctreePointCloudDensity | ( |  | ) |

override default

Empty class deconstructor.

## Member Function Documentation

## getVoxelDensityAtPoint()

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

uindex_t pcl::octree::OctreePointCloudDensity< PointT, LeafContainerT, BranchContainerT >::getVoxelDensityAtPoint | ( | const PointT & | point_arg | ) | const

inline

Get the amount of points within a leaf node voxel which is addressed by a point.

Parameters

  [in] | point_arg | a point addressing a voxel

Returns
  amount of points that fall within leaf node voxel

Definition at line 137 of file octree_pointcloud_density.h.

References pcl::octree::OctreePointCloud< PointT, LeafContainerT, BranchContainerT, OctreeT >::findLeafAtPoint(), and pcl::octree::OctreePointCloudDensityContainer::getPointCounter().

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

- pcl/octree/octree_pointcloud_density.h