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

Octree pointcloud density class More...

#include <pcl/octree/octree_pointcloud_density.h>

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

Public Member Functions

 OctreePointCloudDensity (const double resolution_arg)
 OctreePointCloudDensity class constructor. More...
 
 ~OctreePointCloudDensity () override=default
 Empty class deconstructor. More...
 
uindex_t getVoxelDensityAtPoint (const PointT &point_arg) const
 Get the amount of points within a leaf node voxel which is addressed by a point. More...
 
- Public Member Functions inherited from pcl::octree::OctreePointCloud< PointT, OctreePointCloudDensityContainer, OctreeContainerEmpty >
 OctreePointCloud (const double resolution_arg)
 Octree pointcloud constructor. 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...
 
uindex_t getTreeDepth () const
 Get the maximum depth of the octree. More...
 
void addPointsFromInputCloud ()
 Add points from input point cloud to octree. More...
 
void addPointFromCloud (uindex_t 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 index_t &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...
 
uindex_t getOccupiedVoxelCenters (AlignedPointTVector &voxel_center_list_arg) const
 Get a PointT vector of centers of all occupied voxels. More...
 
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. More...
 
void deleteVoxelAtPoint (const PointT &point_arg)
 Delete leaf node / voxel at given point. More...
 
void deleteVoxelAtPoint (const index_t &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 (uindex_t 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 (uindex_t tree_depth_arg) const
 Calculates the squared voxel cube side length at given tree depth. More...
 
double getVoxelSquaredSideLen () const
 Calculates the squared voxel cube side length at leaf level. More...
 
void getVoxelBounds (const OctreeIteratorBase< OctreeBase< OctreePointCloudDensityContainer, OctreeContainerEmpty > > &iterator, Eigen::Vector3f &min_pt, Eigen::Vector3f &max_pt) const
 Generate bounds of the current voxel of an octree iterator. More...
 
void enableDynamicDepth (std::size_t maxObjsPerLeaf)
 Enable dynamic octree structure. More...
 
- 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. More...
 
virtual ~OctreeBase ()
 Empty deconstructor. More...
 
 OctreeBase (const OctreeBase &source)
 Copy constructor. More...
 
OctreeBaseoperator= (const OctreeBase &source)
 Copy operator. More...
 
void setMaxVoxelIndex (uindex_t max_voxel_index_arg)
 Set the maximum amount of voxels per dimension. More...
 
void setTreeDepth (uindex_t max_depth_arg)
 Set the maximum depth of the octree. More...
 
uindex_t getTreeDepth () const
 Get the maximum depth of the octree. More...
 
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). More...
 
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). More...
 
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). More...
 
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). More...
 
std::size_t getLeafCount () const
 Return the amount of existing leafs in the octree. More...
 
std::size_t getBranchCount () const
 Return the amount of existing branch nodes in the octree. More...
 
void deleteTree ()
 Delete the octree structure and its leaf nodes. More...
 
void serializeTree (std::vector< char > &binary_tree_out_arg) const
 Serialize octree into a binary output vector describing its branch node structure. More...
 
void serializeTree (std::vector< char > &binary_tree_out_arg, std::vector< LeafContainerT * > &leaf_container_vector_arg) 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. More...
 
void serializeLeafs (std::vector< LeafContainerT * > &leaf_container_vector_arg)
 Outputs a vector of all LeafContainerT elements that are stored within the octree leaf nodes. More...
 
void deserializeTree (std::vector< char > &binary_tree_input_arg)
 Deserialize a binary octree description vector and create a corresponding octree structure. More...
 
void deserializeTree (std::vector< char > &binary_tree_input_arg, std::vector< LeafContainerT * > &leaf_container_vector_arg)
 Deserialize a binary octree description and create a corresponding octree structure. More...
 

Additional Inherited Members

- Public Types inherited from pcl::octree::OctreePointCloud< PointT, OctreePointCloudDensityContainer, OctreeContainerEmpty >
using Base = OctreeBase< OctreePointCloudDensityContainer, OctreeContainerEmpty >
 
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, OctreePointCloudDensityContainer, OctreeContainerEmpty, OctreeBase< OctreePointCloudDensityContainer > >
 
using Ptr = shared_ptr< OctreePointCloud< PointT, OctreePointCloudDensityContainer, OctreeContainerEmpty, OctreeBase< OctreePointCloudDensityContainer, OctreeContainerEmpty > > >
 
using ConstPtr = shared_ptr< const OctreePointCloud< PointT, OctreePointCloudDensityContainer, OctreeContainerEmpty, OctreeBase< OctreePointCloudDensityContainer, OctreeContainerEmpty > > >
 
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, OctreePointCloudDensityContainer, OctreeContainerEmpty >
virtual void addPointIdx (uindex_t 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, uindex_t depth_mask)
 Add point at index from input pointcloud dataset to octree. More...
 
const PointTgetPointByIndex (uindex_t index_arg) const
 Get point at index from input pointcloud dataset. More...
 
OctreePointCloudDensityContainerfindLeafAtPoint (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 index_t &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, uindex_t 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, 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. More...
 
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. More...
 
- Protected Member Functions inherited from pcl::octree::OctreeBase< LeafContainerT, BranchContainerT >
LeafContainerT * createLeaf (const OctreeKey &key_arg)
 Create a leaf node. More...
 
LeafContainerT * findLeaf (const OctreeKey &key_arg) const
 Find leaf node. More...
 
bool existLeaf (const OctreeKey &key_arg) const
 Check for existence of a leaf node in the octree. More...
 
void removeLeaf (const OctreeKey &key_arg)
 Remove leaf node from octree. More...
 
OctreeNodegetRootNode () const
 Retrieve root node. More...
 
bool branchHasChild (const BranchNode &branch_arg, unsigned char child_idx_arg) const
 Check if branch is pointing to a particular child node. More...
 
OctreeNodegetBranchChildPtr (const BranchNode &branch_arg, unsigned char child_idx_arg) const
 Retrieve a child node pointer for child node at child_idx. More...
 
void setBranchChildPtr (BranchNode &branch_arg, unsigned char child_idx_arg, OctreeNode *new_child_arg)
 Assign new child node to branch. More...
 
char getBranchBitPattern (const BranchNode &branch_arg) const
 Generate bit pattern reflecting the existence of child node pointers. More...
 
void deleteBranchChild (BranchNode &branch_arg, unsigned char child_idx_arg)
 Delete child node and all its subchilds from octree. More...
 
void deleteBranch (BranchNode &branch_arg)
 Delete branch and all its subchilds from octree. More...
 
BranchNodecreateBranchChild (BranchNode &branch_arg, unsigned char child_idx_arg)
 Create and add a new branch child to a branch class. More...
 
LeafNodecreateLeafChild (BranchNode &branch_arg, unsigned char child_idx_arg)
 Create and add a new leaf child to a branch class. More...
 
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. More...
 
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. More...
 
bool deleteLeafRecursive (const OctreeKey &key_arg, uindex_t depth_mask_arg, BranchNode *branch_arg)
 Recursively search and delete leaf node. More...
 
void serializeTreeRecursive (const BranchNode *branch_arg, OctreeKey &key_arg, std::vector< char > *binary_tree_out_arg, typename std::vector< LeafContainerT * > *leaf_container_vector_arg) const
 Recursively explore the octree and output binary octree description together with a vector of leaf node LeafContainerTs. More...
 
void deserializeTreeRecursive (BranchNode *branch_arg, 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. More...
 
virtual void serializeTreeCallback (LeafContainerT &, const OctreeKey &) const
 Callback executed for every leaf node during serialization. More...
 
virtual void deserializeTreeCallback (LeafContainerT &, const OctreeKey &)
 Callback executed for every leaf node during deserialization. More...
 
bool octreeCanResize () const
 Test if octree is able to dynamically change its depth. More...
 
- Protected Attributes inherited from pcl::octree::OctreePointCloud< PointT, OctreePointCloudDensityContainer, OctreeContainerEmpty >
PointCloudConstPtr input_
 Pointer to input point cloud dataset. More...
 
IndicesConstPtr indices_
 A pointer to the vector of point indices to use. More...
 
double epsilon_
 Epsilon precision (error bound) for nearest neighbors searches. More...
 
double resolution_
 Octree resolution. More...
 
double min_x_
 
double max_x_
 
double min_y_
 
double max_y_
 
double min_z_
 
double max_z_
 
bool bounding_box_defined_
 Flag indicating if octree has defined bounding box. More...
 
std::size_t max_objs_per_leaf_
 Amount of DataT objects per leafNode before expanding branch. More...
 
- Protected Attributes inherited from pcl::octree::OctreeBase< LeafContainerT, BranchContainerT >
std::size_t leaf_count_ {0}
 Amount of leaf nodes
More...
 
std::size_t branch_count_ {1}
 Amount of branch nodes
More...
 
BranchNoderoot_node_
 Pointer to root branch node of octree
More...
 
uindex_t depth_mask_ {0}
 Depth mask based on octree depth
More...
 
uindex_t octree_depth_ {0}
 Octree depth. More...
 
bool dynamic_depth_enabled_ {false}
 Enable dynamic_depth. More...
 
OctreeKey max_key_
 key range More...
 

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
PointTtype 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_argoctree 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 ( )
overridedefault

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_arga 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, OctreePointCloudDensityContainer, OctreeContainerEmpty >::findLeafAtPoint(), and pcl::octree::OctreePointCloudDensityContainer::getPointCounter().


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