Point Cloud Library (PCL)  1.11.0
 All Classes Namespaces Functions Variables Typedefs Enumerations Enumerator Friends Modules Pages
List of all members | Public Types | Public Member Functions
pcl::octree::OctreePointCloudVoxelCentroid< PointT, LeafContainerT, BranchContainerT > Class Template Reference

Octree pointcloud voxel centroid class More...

#include <pcl/octree/octree_pointcloud_voxelcentroid.h>

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

Public Types

using Ptr = shared_ptr< OctreePointCloudVoxelCentroid< PointT, LeafContainerT >>
 
using ConstPtr = shared_ptr< const OctreePointCloudVoxelCentroid< PointT, LeafContainerT >>
 
using OctreeT = OctreePointCloud< PointT, LeafContainerT, BranchContainerT >
 
using LeafNode = typename OctreeT::LeafNode
 
using BranchNode = typename OctreeT::BranchNode
 
- Public Types inherited from pcl::octree::OctreePointCloud< PointT, LeafContainerT, BranchContainerT >
using Base = OctreeT
 
using LeafNode = typename OctreeT::LeafNode
 
using BranchNode = typename OctreeT::BranchNode
 
using IndicesPtr = shared_ptr< std::vector< int >>
 
using IndicesConstPtr = shared_ptr< const std::vector< int >>
 
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 Member Functions

 OctreePointCloudVoxelCentroid (const double resolution_arg)
 OctreePointCloudVoxelCentroids class constructor. More...
 
 ~OctreePointCloudVoxelCentroid ()
 Empty class deconstructor. More...
 
void addPointIdx (const int pointIdx_arg) override
 Add DataT object to leaf node at octree key. More...
 
bool getVoxelCentroidAtPoint (const PointT &point_arg, PointT &voxel_centroid_arg) const
 Get centroid for a single voxel addressed by a PointT point. More...
 
bool getVoxelCentroidAtPoint (const int &point_idx_arg, PointT &voxel_centroid_arg) const
 Get centroid for a single voxel addressed by a PointT point from input cloud. More...
 
std::size_t getVoxelCentroids (typename OctreePointCloud< PointT, LeafContainerT, BranchContainerT >::AlignedPointTVector &voxel_centroid_list_arg) const
 Get PointT vector of centroids for all occupied voxels. More...
 
void getVoxelCentroidsRecursive (const BranchNode *branch_arg, OctreeKey &key_arg, typename OctreePointCloud< PointT, LeafContainerT, BranchContainerT >::AlignedPointTVector &voxel_centroid_list_arg) const
 Recursively explore the octree and output a PointT vector of centroids for all occupied voxels. More...
 
- Public Member Functions inherited from pcl::octree::OctreePointCloud< PointT, LeafContainerT, BranchContainerT >
 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...
 
unsigned int getTreeDepth () const
 Get the maximum depth of the octree. More...
 
void addPointsFromInputCloud ()
 Add points from input point cloud to octree. More...
 
void addPointFromCloud (const int point_idx_arg, IndicesPtr indices_arg)
 Add point at given index from input point cloud to octree. More...
 
void addPointToCloud (const PointT &point_arg, PointCloudPtr cloud_arg)
 Add point simultaneously to octree and input point cloud. More...
 
void addPointToCloud (const PointT &point_arg, PointCloudPtr cloud_arg, IndicesPtr indices_arg)
 Add point simultaneously to octree and input point cloud. More...
 
bool isVoxelOccupiedAtPoint (const PointT &point_arg) const
 Check if voxel at given point exist. More...
 
bool isVoxelOccupiedAtPoint (const double point_x_arg, const double point_y_arg, const double point_z_arg) const
 Check if voxel at given point coordinates exist. More...
 
bool isVoxelOccupiedAtPoint (const int &point_idx_arg) const
 Check if voxel at given point from input cloud exist. More...
 
void deleteTree ()
 Delete the octree structure and its leaf nodes. More...
 
int getOccupiedVoxelCenters (AlignedPointTVector &voxel_center_list_arg) const
 Get a PointT vector of centers of all occupied voxels. More...
 
int getApproxIntersectedVoxelCentersBySegment (const Eigen::Vector3f &origin, const Eigen::Vector3f &end, AlignedPointTVector &voxel_center_list, float precision=0.2)
 Get a PointT vector of centers of voxels intersected by a line segment. More...
 
void deleteVoxelAtPoint (const PointT &point_arg)
 Delete leaf node / voxel at given point. More...
 
void deleteVoxelAtPoint (const int &point_idx_arg)
 Delete leaf node / voxel at given point from input cloud. More...
 
void defineBoundingBox ()
 Investigate dimensions of pointcloud data set and define corresponding bounding box for octree. More...
 
void defineBoundingBox (const double min_x_arg, const double min_y_arg, const double min_z_arg, const double max_x_arg, const double max_y_arg, const double max_z_arg)
 Define bounding box for octree. More...
 
void defineBoundingBox (const double max_x_arg, const double max_y_arg, const double max_z_arg)
 Define bounding box for octree. More...
 
void defineBoundingBox (const double cubeLen_arg)
 Define bounding box cube for octree. More...
 
void getBoundingBox (double &min_x_arg, double &min_y_arg, double &min_z_arg, double &max_x_arg, double &max_y_arg, double &max_z_arg) const
 Get bounding box for octree. More...
 
double getVoxelSquaredDiameter (unsigned int tree_depth_arg) const
 Calculates the squared diameter of a voxel at given tree depth. More...
 
double getVoxelSquaredDiameter () const
 Calculates the squared diameter of a voxel at leaf depth. More...
 
double getVoxelSquaredSideLen (unsigned int tree_depth_arg) const
 Calculates the squared voxel cube side length at given tree depth. More...
 
double getVoxelSquaredSideLen () const
 Calculates the squared voxel cube side length at leaf level. More...
 
void getVoxelBounds (const OctreeIteratorBase< OctreeT > &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...
 

Additional Inherited Members

- Protected Member Functions inherited from pcl::octree::OctreePointCloud< PointT, LeafContainerT, BranchContainerT >
void expandLeafNode (LeafNode *leaf_node, BranchNode *parent_branch, unsigned char child_idx, unsigned int depth_mask)
 Add point at index from input pointcloud dataset to octree. More...
 
const PointTgetPointByIndex (const unsigned int index_arg) const
 Get point at index from input pointcloud dataset. More...
 
LeafContainerT * findLeafAtPoint (const PointT &point_arg) const
 Find octree leaf node at a given point. More...
 
void getKeyBitSize ()
 Define octree key setting and octree depth based on defined bounding box. More...
 
void adoptBoundingBoxToPoint (const PointT &point_idx_arg)
 Grow the bounding box/octree until point fits. More...
 
bool isPointWithinBoundingBox (const PointT &point_idx_arg) const
 Checks if given point is within the bounding box of the octree. More...
 
void genOctreeKeyforPoint (const PointT &point_arg, OctreeKey &key_arg) const
 Generate octree key for voxel at a given point. More...
 
void genOctreeKeyforPoint (const double point_x_arg, const double point_y_arg, const double point_z_arg, OctreeKey &key_arg) const
 Generate octree key for voxel at a given point. More...
 
virtual bool genOctreeKeyForDataT (const int &data_arg, OctreeKey &key_arg) const
 Virtual method for generating octree key for a given point index. More...
 
void genLeafNodeCenterFromOctreeKey (const OctreeKey &key_arg, PointT &point_arg) const
 Generate a point at center of leaf node voxel. More...
 
void genVoxelCenterFromOctreeKey (const OctreeKey &key_arg, unsigned int tree_depth_arg, PointT &point_arg) const
 Generate a point at center of octree voxel at given tree level. More...
 
void genVoxelBoundsFromOctreeKey (const OctreeKey &key_arg, unsigned int tree_depth_arg, Eigen::Vector3f &min_pt, Eigen::Vector3f &max_pt) const
 Generate bounds of an octree voxel using octree key and tree depth arguments. More...
 
int getOccupiedVoxelCentersRecursive (const BranchNode *node_arg, const OctreeKey &key_arg, AlignedPointTVector &voxel_center_list_arg) const
 Recursively search the tree for all leaf nodes and return a vector of voxel centers. More...
 
- Protected Attributes inherited from pcl::octree::OctreePointCloud< PointT, LeafContainerT, BranchContainerT >
PointCloudConstPtr input_
 Pointer to input point cloud dataset. More...
 
IndicesConstPtr indices_
 A pointer to the vector of point indices to use. More...
 
double epsilon_
 Epsilon precision (error bound) for nearest neighbors searches. More...
 
double resolution_
 Octree resolution. More...
 
double min_x_
 
double max_x_
 
double min_y_
 
double max_y_
 
double min_z_
 
double max_z_
 
bool bounding_box_defined_
 Flag indicating if octree has defined bounding box. More...
 
std::size_t max_objs_per_leaf_
 Amount of DataT objects per leafNode before expanding branch. More...
 

Detailed Description

template<typename PointT, typename LeafContainerT = OctreePointCloudVoxelCentroidContainer<PointT>, typename BranchContainerT = OctreeContainerEmpty>
class pcl::octree::OctreePointCloudVoxelCentroid< PointT, LeafContainerT, BranchContainerT >

Octree pointcloud voxel centroid class

Note
This class generate an octrees from a point cloud (zero-copy). It provides a vector of centroids for all occupied voxels.
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 133 of file octree_pointcloud_voxelcentroid.h.

Member Typedef Documentation

template<typename PointT , typename LeafContainerT = OctreePointCloudVoxelCentroidContainer<PointT>, typename BranchContainerT = OctreeContainerEmpty>
using pcl::octree::OctreePointCloudVoxelCentroid< PointT, LeafContainerT, BranchContainerT >::BranchNode = typename OctreeT::BranchNode

Definition at line 142 of file octree_pointcloud_voxelcentroid.h.

template<typename PointT , typename LeafContainerT = OctreePointCloudVoxelCentroidContainer<PointT>, typename BranchContainerT = OctreeContainerEmpty>
using pcl::octree::OctreePointCloudVoxelCentroid< PointT, LeafContainerT, BranchContainerT >::ConstPtr = shared_ptr<const OctreePointCloudVoxelCentroid<PointT, LeafContainerT>>

Definition at line 138 of file octree_pointcloud_voxelcentroid.h.

template<typename PointT , typename LeafContainerT = OctreePointCloudVoxelCentroidContainer<PointT>, typename BranchContainerT = OctreeContainerEmpty>
using pcl::octree::OctreePointCloudVoxelCentroid< PointT, LeafContainerT, BranchContainerT >::LeafNode = typename OctreeT::LeafNode

Definition at line 141 of file octree_pointcloud_voxelcentroid.h.

template<typename PointT , typename LeafContainerT = OctreePointCloudVoxelCentroidContainer<PointT>, typename BranchContainerT = OctreeContainerEmpty>
using pcl::octree::OctreePointCloudVoxelCentroid< PointT, LeafContainerT, BranchContainerT >::OctreeT = OctreePointCloud<PointT, LeafContainerT, BranchContainerT>

Definition at line 140 of file octree_pointcloud_voxelcentroid.h.

template<typename PointT , typename LeafContainerT = OctreePointCloudVoxelCentroidContainer<PointT>, typename BranchContainerT = OctreeContainerEmpty>
using pcl::octree::OctreePointCloudVoxelCentroid< PointT, LeafContainerT, BranchContainerT >::Ptr = shared_ptr<OctreePointCloudVoxelCentroid<PointT, LeafContainerT>>

Definition at line 136 of file octree_pointcloud_voxelcentroid.h.

Constructor & Destructor Documentation

template<typename PointT , typename LeafContainerT = OctreePointCloudVoxelCentroidContainer<PointT>, typename BranchContainerT = OctreeContainerEmpty>
pcl::octree::OctreePointCloudVoxelCentroid< PointT, LeafContainerT, BranchContainerT >::OctreePointCloudVoxelCentroid ( const double  resolution_arg)
inline

OctreePointCloudVoxelCentroids class constructor.

Parameters
[in]resolution_argoctree resolution at lowest octree level

Definition at line 147 of file octree_pointcloud_voxelcentroid.h.

template<typename PointT , typename LeafContainerT = OctreePointCloudVoxelCentroidContainer<PointT>, typename BranchContainerT = OctreeContainerEmpty>
pcl::octree::OctreePointCloudVoxelCentroid< PointT, LeafContainerT, BranchContainerT >::~OctreePointCloudVoxelCentroid ( )
inline

Empty class deconstructor.

Definition at line 153 of file octree_pointcloud_voxelcentroid.h.

Member Function Documentation

template<typename PointT , typename LeafContainerT = OctreePointCloudVoxelCentroidContainer<PointT>, typename BranchContainerT = OctreeContainerEmpty>
void pcl::octree::OctreePointCloudVoxelCentroid< PointT, LeafContainerT, BranchContainerT >::addPointIdx ( const int  pointIdx_arg)
inlineoverridevirtual

Add DataT object to leaf node at octree key.

Parameters
pointIdx_arg

Reimplemented from pcl::octree::OctreePointCloud< PointT, LeafContainerT, BranchContainerT >.

Definition at line 159 of file octree_pointcloud_voxelcentroid.h.

template<typename PointT , typename LeafContainerT , typename BranchContainerT >
bool pcl::octree::OctreePointCloudVoxelCentroid< PointT, LeafContainerT, BranchContainerT >::getVoxelCentroidAtPoint ( const PointT point_arg,
PointT voxel_centroid_arg 
) const

Get centroid for a single voxel addressed by a PointT point.

Parameters
[in]point_argpoint addressing a voxel in octree
[out]voxel_centroid_argcentroid is written to this PointT reference
Returns
"true" if voxel is found; "false" otherwise

Definition at line 56 of file octree_pointcloud_voxelcentroid.hpp.

template<typename PointT , typename LeafContainerT = OctreePointCloudVoxelCentroidContainer<PointT>, typename BranchContainerT = OctreeContainerEmpty>
bool pcl::octree::OctreePointCloudVoxelCentroid< PointT, LeafContainerT, BranchContainerT >::getVoxelCentroidAtPoint ( const int &  point_idx_arg,
PointT voxel_centroid_arg 
) const
inline

Get centroid for a single voxel addressed by a PointT point from input cloud.

Parameters
[in]point_idx_argpoint index from input cloud addressing a voxel in octree
[out]voxel_centroid_argcentroid is written to this PointT reference
Returns
"true" if voxel is found; "false" otherwise

Definition at line 193 of file octree_pointcloud_voxelcentroid.h.

template<typename PointT , typename LeafContainerT , typename BranchContainerT >
std::size_t pcl::octree::OctreePointCloudVoxelCentroid< PointT, LeafContainerT, BranchContainerT >::getVoxelCentroids ( typename OctreePointCloud< PointT, LeafContainerT, BranchContainerT >::AlignedPointTVector voxel_centroid_list_arg) const

Get PointT vector of centroids for all occupied voxels.

Parameters
[out]voxel_centroid_list_argresults are written to this vector of PointT elements
Returns
number of occupied voxels

Definition at line 75 of file octree_pointcloud_voxelcentroid.hpp.

template<typename PointT , typename LeafContainerT , typename BranchContainerT >
void pcl::octree::OctreePointCloudVoxelCentroid< PointT, LeafContainerT, BranchContainerT >::getVoxelCentroidsRecursive ( const BranchNode branch_arg,
OctreeKey key_arg,
typename OctreePointCloud< PointT, LeafContainerT, BranchContainerT >::AlignedPointTVector voxel_centroid_list_arg 
) const

Recursively explore the octree and output a PointT vector of centroids for all occupied voxels.

Parameters
[in]branch_argcurrent branch node
[in]key_argcurrent key
[out]voxel_centroid_list_argresults are written to this vector of PointT elements

Definition at line 95 of file octree_pointcloud_voxelcentroid.hpp.

References pcl::octree::BRANCH_NODE, pcl::octree::OctreeNode::getNodeType(), pcl::octree::LEAF_NODE, pcl::octree::OctreeKey::popBranch(), and pcl::octree::OctreeKey::pushBranch().


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