W3cubDocs

/PointCloudLibrary

Octree class. More...

#include <pcl/octree/octree_base.h>

Public Types

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 = const OctreeDepthFirstIterator< OctreeT >
using LeafNodeIterator = OctreeLeafNodeDepthFirstIterator< OctreeT >
using ConstLeafNodeIterator = const OctreeLeafNodeDepthFirstIterator< OctreeT >
using LeafNodeDepthFirstIterator = OctreeLeafNodeDepthFirstIterator< OctreeT >
using ConstLeafNodeDepthFirstIterator = const OctreeLeafNodeDepthFirstIterator< OctreeT >
using DepthFirstIterator = OctreeDepthFirstIterator< OctreeT >
using ConstDepthFirstIterator = const OctreeDepthFirstIterator< OctreeT >
using BreadthFirstIterator = OctreeBreadthFirstIterator< OctreeT >
using ConstBreadthFirstIterator = const OctreeBreadthFirstIterator< OctreeT >
using FixedDepthIterator = OctreeFixedDepthIterator< OctreeT >
using ConstFixedDepthIterator = const OctreeFixedDepthIterator< OctreeT >
using LeafNodeBreadthFirstIterator = OctreeLeafNodeBreadthFirstIterator< OctreeT >
using ConstLeafNodeBreadthFirstIterator = const OctreeLeafNodeBreadthFirstIterator< OctreeT >

Public Member Functions

Iterator begin (uindex_t max_depth_arg=0u)
const Iterator end ()
LeafNodeDepthFirstIterator leaf_depth_begin (uindex_t max_depth_arg=0u)
const LeafNodeDepthFirstIterator leaf_depth_end ()
DepthFirstIterator depth_begin (uindex_t max_depth_arg=0u)
const DepthFirstIterator depth_end ()
BreadthFirstIterator breadth_begin (uindex_t max_depth_arg=0u)
const BreadthFirstIterator breadth_end ()
FixedDepthIterator fixed_depth_begin (uindex_t fixed_depth_arg=0u)
const FixedDepthIterator fixed_depth_end ()
LeafNodeBreadthFirstIterator leaf_breadth_begin (uindex_t max_depth_arg=0u)
const LeafNodeBreadthFirstIterator leaf_breadth_end ()
OctreeBase ()
Empty constructor. More...
virtual ~OctreeBase ()
Empty deconstructor. More...
OctreeBase (const OctreeBase &source)
Copy constructor. More...
OctreeBase & operator= (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)
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)
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)
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...

Protected Member Functions

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...
OctreeNode * getRootNode () 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...
OctreeNode * getBranchChildPtr (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...
BranchNode * createBranchChild (BranchNode &branch_arg, unsigned char child_idx_arg)
Create and add a new branch child to a branch class. More...
LeafNode * createLeafChild (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 ()
Test if octree is able to dynamically change its depth. More...

Protected Attributes

std::size_t leaf_count_
Amount of leaf nodes
More...
std::size_t branch_count_
Amount of branch nodes
More...
BranchNode * root_node_
Pointer to root branch node of octree
More...
uindex_t depth_mask_
Depth mask based on octree depth
More...
uindex_t octree_depth_
Octree depth. More...
bool dynamic_depth_enabled_
Enable dynamic_depth. More...
OctreeKey max_key_
key range More...

Friends

class OctreeIteratorBase< OctreeT >
class OctreeDepthFirstIterator< OctreeT >
class OctreeBreadthFirstIterator< OctreeT >
class OctreeFixedDepthIterator< OctreeT >
class OctreeLeafNodeDepthFirstIterator< OctreeT >
class OctreeLeafNodeBreadthFirstIterator< OctreeT >

Detailed Description

template<typename LeafContainerT = index_t, typename BranchContainerT = OctreeContainerEmpty>
class pcl::octree::OctreeBase< LeafContainerT, BranchContainerT >

Octree class.

Note
The tree depth defines the maximum amount of octree voxels / leaf nodes (should be initially defined).
All leaf nodes are addressed by integer indices.
The tree depth equates to the bit length of the voxel indices.
Author
Julius Kammerl (juliu.nosp@m.s@ka.nosp@m.mmerl.nosp@m..de)

Definition at line 62 of file octree_base.h.

Member Typedef Documentation

BranchContainer

template<typename LeafContainerT = index_t, typename BranchContainerT = OctreeContainerEmpty>
using pcl::octree::OctreeBase< LeafContainerT, BranchContainerT >::BranchContainer = BranchContainerT

Definition at line 69 of file octree_base.h.

BranchNode

template<typename LeafContainerT = index_t, typename BranchContainerT = OctreeContainerEmpty>
using pcl::octree::OctreeBase< LeafContainerT, BranchContainerT >::BranchNode = OctreeBranchNode<BranchContainerT>

Definition at line 66 of file octree_base.h.

BreadthFirstIterator

template<typename LeafContainerT = index_t, typename BranchContainerT = OctreeContainerEmpty>
using pcl::octree::OctreeBase< LeafContainerT, BranchContainerT >::BreadthFirstIterator = OctreeBreadthFirstIterator<OctreeT>

Definition at line 166 of file octree_base.h.

ConstBreadthFirstIterator

template<typename LeafContainerT = index_t, typename BranchContainerT = OctreeContainerEmpty>
using pcl::octree::OctreeBase< LeafContainerT, BranchContainerT >::ConstBreadthFirstIterator = const OctreeBreadthFirstIterator<OctreeT>

Definition at line 167 of file octree_base.h.

ConstDepthFirstIterator

template<typename LeafContainerT = index_t, typename BranchContainerT = OctreeContainerEmpty>
using pcl::octree::OctreeBase< LeafContainerT, BranchContainerT >::ConstDepthFirstIterator = const OctreeDepthFirstIterator<OctreeT>

Definition at line 150 of file octree_base.h.

ConstFixedDepthIterator

template<typename LeafContainerT = index_t, typename BranchContainerT = OctreeContainerEmpty>
using pcl::octree::OctreeBase< LeafContainerT, BranchContainerT >::ConstFixedDepthIterator = const OctreeFixedDepthIterator<OctreeT>

Definition at line 184 of file octree_base.h.

ConstIterator

template<typename LeafContainerT = index_t, typename BranchContainerT = OctreeContainerEmpty>
using pcl::octree::OctreeBase< LeafContainerT, BranchContainerT >::ConstIterator = const OctreeDepthFirstIterator<OctreeT>

Definition at line 109 of file octree_base.h.

ConstLeafNodeBreadthFirstIterator

template<typename LeafContainerT = index_t, typename BranchContainerT = OctreeContainerEmpty>
using pcl::octree::OctreeBase< LeafContainerT, BranchContainerT >::ConstLeafNodeBreadthFirstIterator = const OctreeLeafNodeBreadthFirstIterator<OctreeT>

Definition at line 201 of file octree_base.h.

ConstLeafNodeDepthFirstIterator

template<typename LeafContainerT = index_t, typename BranchContainerT = OctreeContainerEmpty>
using pcl::octree::OctreeBase< LeafContainerT, BranchContainerT >::ConstLeafNodeDepthFirstIterator = const OctreeLeafNodeDepthFirstIterator<OctreeT>

Definition at line 133 of file octree_base.h.

ConstLeafNodeIterator

template<typename LeafContainerT = index_t, typename BranchContainerT = OctreeContainerEmpty>
using pcl::octree::OctreeBase< LeafContainerT, BranchContainerT >::ConstLeafNodeIterator = const OctreeLeafNodeDepthFirstIterator<OctreeT>

Definition at line 128 of file octree_base.h.

DepthFirstIterator

template<typename LeafContainerT = index_t, typename BranchContainerT = OctreeContainerEmpty>
using pcl::octree::OctreeBase< LeafContainerT, BranchContainerT >::DepthFirstIterator = OctreeDepthFirstIterator<OctreeT>

Definition at line 149 of file octree_base.h.

FixedDepthIterator

template<typename LeafContainerT = index_t, typename BranchContainerT = OctreeContainerEmpty>
using pcl::octree::OctreeBase< LeafContainerT, BranchContainerT >::FixedDepthIterator = OctreeFixedDepthIterator<OctreeT>

Definition at line 183 of file octree_base.h.

Iterator

template<typename LeafContainerT = index_t, typename BranchContainerT = OctreeContainerEmpty>
using pcl::octree::OctreeBase< LeafContainerT, BranchContainerT >::Iterator = OctreeDepthFirstIterator<OctreeT>

Definition at line 108 of file octree_base.h.

LeafContainer

template<typename LeafContainerT = index_t, typename BranchContainerT = OctreeContainerEmpty>
using pcl::octree::OctreeBase< LeafContainerT, BranchContainerT >::LeafContainer = LeafContainerT

Definition at line 70 of file octree_base.h.

LeafNode

template<typename LeafContainerT = index_t, typename BranchContainerT = OctreeContainerEmpty>
using pcl::octree::OctreeBase< LeafContainerT, BranchContainerT >::LeafNode = OctreeLeafNode<LeafContainerT>

Definition at line 67 of file octree_base.h.

LeafNodeBreadthFirstIterator

template<typename LeafContainerT = index_t, typename BranchContainerT = OctreeContainerEmpty>
using pcl::octree::OctreeBase< LeafContainerT, BranchContainerT >::LeafNodeBreadthFirstIterator = OctreeLeafNodeBreadthFirstIterator<OctreeT>

Definition at line 199 of file octree_base.h.

LeafNodeDepthFirstIterator

template<typename LeafContainerT = index_t, typename BranchContainerT = OctreeContainerEmpty>
using pcl::octree::OctreeBase< LeafContainerT, BranchContainerT >::LeafNodeDepthFirstIterator = OctreeLeafNodeDepthFirstIterator<OctreeT>

Definition at line 131 of file octree_base.h.

LeafNodeIterator

template<typename LeafContainerT = index_t, typename BranchContainerT = OctreeContainerEmpty>
using pcl::octree::OctreeBase< LeafContainerT, BranchContainerT >::LeafNodeIterator = OctreeLeafNodeDepthFirstIterator<OctreeT>

Definition at line 127 of file octree_base.h.

OctreeT

template<typename LeafContainerT = index_t, typename BranchContainerT = OctreeContainerEmpty>
using pcl::octree::OctreeBase< LeafContainerT, BranchContainerT >::OctreeT = OctreeBase<LeafContainerT, BranchContainerT>

Definition at line 64 of file octree_base.h.

Constructor & Destructor Documentation

OctreeBase() [1/2]

template<typename LeafContainerT , typename BranchContainerT >
pcl::octree::OctreeBase< LeafContainerT, BranchContainerT >::OctreeBase

Empty constructor.

Definition at line 48 of file octree_base.hpp.

~OctreeBase()

template<typename LeafContainerT , typename BranchContainerT >
pcl::octree::OctreeBase< LeafContainerT, BranchContainerT >::~OctreeBase
virtual

Empty deconstructor.

Definition at line 59 of file octree_base.hpp.

OctreeBase() [2/2]

template<typename LeafContainerT = index_t, typename BranchContainerT = OctreeContainerEmpty>
pcl::octree::OctreeBase< LeafContainerT, BranchContainerT >::OctreeBase ( const OctreeBase< LeafContainerT, BranchContainerT > & source )
inline

Copy constructor.

Definition at line 223 of file octree_base.h.

Member Function Documentation

begin()

template<typename LeafContainerT = index_t, typename BranchContainerT = OctreeContainerEmpty>
Iterator pcl::octree::OctreeBase< LeafContainerT, BranchContainerT >::begin ( uindex_t max_depth_arg = 0u )
inline

Definition at line 112 of file octree_base.h.

branchHasChild()

template<typename LeafContainerT = index_t, typename BranchContainerT = OctreeContainerEmpty>
bool pcl::octree::OctreeBase< LeafContainerT, BranchContainerT >::branchHasChild ( const BranchNode & branch_arg,
unsigned char child_idx_arg
) const
inlineprotected

Check if branch is pointing to a particular child node.

Parameters
branch_arg reference to octree branch class
child_idx_arg index to child node
Returns
"true" if pointer to child node exists; "false" otherwise

Definition at line 447 of file octree_base.h.

breadth_begin()

template<typename LeafContainerT = index_t, typename BranchContainerT = OctreeContainerEmpty>
BreadthFirstIterator pcl::octree::OctreeBase< LeafContainerT, BranchContainerT >::breadth_begin ( uindex_t max_depth_arg = 0u )
inline

Definition at line 170 of file octree_base.h.

breadth_end()

template<typename LeafContainerT = index_t, typename BranchContainerT = OctreeContainerEmpty>
const BreadthFirstIterator pcl::octree::OctreeBase< LeafContainerT, BranchContainerT >::breadth_end ( )
inline

Definition at line 177 of file octree_base.h.

createBranchChild()

template<typename LeafContainerT = index_t, typename BranchContainerT = OctreeContainerEmpty>
BranchNode* pcl::octree::OctreeBase< LeafContainerT, BranchContainerT >::createBranchChild ( BranchNode & branch_arg,
unsigned char child_idx_arg
)
inlineprotected

Create and add a new branch child to a branch class.

Parameters
branch_arg reference to octree branch class
child_idx_arg index to child node
Returns
pointer of new branch child to this reference

Definition at line 545 of file octree_base.h.

createLeaf() [1/2]

template<typename LeafContainerT = index_t, typename BranchContainerT = OctreeContainerEmpty>
LeafContainerT* pcl::octree::OctreeBase< LeafContainerT, BranchContainerT >::createLeaf ( const OctreeKey & key_arg )
inlineprotected

Create a leaf node.

Parameters
key_arg octree key addressing a leaf node.
Returns
pointer to leaf node

Definition at line 385 of file octree_base.h.

createLeaf() [2/2]

template<typename LeafContainerT , typename BranchContainerT >
LeafContainerT * pcl::octree::OctreeBase< LeafContainerT, BranchContainerT >::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).

Note
If leaf node already exist, this method returns the existing node
Parameters
idx_x_arg index of leaf node in the X axis.
idx_y_arg index of leaf node in the Y axis.
idx_z_arg index of leaf node in the Z axis.
Returns
pointer to new leaf node container.

Definition at line 119 of file octree_base.hpp.

createLeafChild()

template<typename LeafContainerT = index_t, typename BranchContainerT = OctreeContainerEmpty>
LeafNode* pcl::octree::OctreeBase< LeafContainerT, BranchContainerT >::createLeafChild ( BranchNode & branch_arg,
unsigned char child_idx_arg
)
inlineprotected

Create and add a new leaf child to a branch class.

Parameters
branch_arg reference to octree branch class
child_idx_arg index to child node
Returns
pointer of new leaf child to this reference

Definition at line 559 of file octree_base.h.

createLeafRecursive()

template<typename LeafContainerT , typename BranchContainerT >
uindex_t pcl::octree::OctreeBase< LeafContainerT, BranchContainerT >::createLeafRecursive ( const OctreeKey & key_arg,
uindex_t depth_mask_arg,
BranchNode * branch_arg,
LeafNode *& return_leaf_arg,
BranchNode *& parent_of_leaf_arg
)
protected

Create a leaf node at octree key.

If leaf node does already exist, it is returned.

Parameters
key_arg reference to an octree key
depth_mask_arg depth mask used for octree key analysis and for branch depth indicator
branch_arg current branch node
return_leaf_arg return pointer to leaf node
parent_of_leaf_arg return pointer to parent of leaf node
Returns
depth mask at which leaf node was created

Definition at line 285 of file octree_base.hpp.

Referenced by pcl::octree::OctreeBase< OctreePointCloudVoxelCentroidContainer< PointT >, OctreeContainerEmpty >::createLeaf().

deleteBranch()

template<typename LeafContainerT = index_t, typename BranchContainerT = OctreeContainerEmpty>
void pcl::octree::OctreeBase< LeafContainerT, BranchContainerT >::deleteBranch ( BranchNode & branch_arg )
inlineprotected

Delete branch and all its subchilds from octree.

Parameters
branch_arg reference to octree branch class

Definition at line 532 of file octree_base.h.

Referenced by pcl::octree::OctreeBase< OctreePointCloudVoxelCentroidContainer< PointT >, OctreeContainerEmpty >::deleteBranchChild().

deleteBranchChild()

template<typename LeafContainerT = index_t, typename BranchContainerT = OctreeContainerEmpty>
void pcl::octree::OctreeBase< LeafContainerT, BranchContainerT >::deleteBranchChild ( BranchNode & branch_arg,
unsigned char child_idx_arg
)
inlineprotected

Delete child node and all its subchilds from octree.

Parameters
branch_arg reference to octree branch class
child_idx_arg index to child node

Definition at line 501 of file octree_base.h.

Referenced by pcl::octree::OctreeBase< OctreePointCloudVoxelCentroidContainer< PointT >, OctreeContainerEmpty >::deleteBranch().

deleteLeafRecursive()

template<typename LeafContainerT , typename BranchContainerT >
bool pcl::octree::OctreeBase< LeafContainerT, BranchContainerT >::deleteLeafRecursive ( const OctreeKey & key_arg,
uindex_t depth_mask_arg,
BranchNode * branch_arg
)
protected

Recursively search and delete leaf node.

Parameters
key_arg reference to an octree key
depth_mask_arg depth mask used for octree key analysis and branch depth indicator
branch_arg current branch node
Returns
"true" if branch does not contain any childs; "false" otherwise. This indicates if current branch can be deleted, too.

Definition at line 383 of file octree_base.hpp.

Referenced by pcl::octree::OctreeBase< OctreePointCloudVoxelCentroidContainer< PointT >, OctreeContainerEmpty >::removeLeaf().

deleteTree()

template<typename LeafContainerT , typename BranchContainerT >
void pcl::octree::OctreeBase< LeafContainerT, BranchContainerT >::deleteTree

Delete the octree structure and its leaf nodes.

Definition at line 161 of file octree_base.hpp.

depth_begin()

template<typename LeafContainerT = index_t, typename BranchContainerT = OctreeContainerEmpty>
DepthFirstIterator pcl::octree::OctreeBase< LeafContainerT, BranchContainerT >::depth_begin ( uindex_t max_depth_arg = 0u )
inline

Definition at line 153 of file octree_base.h.

depth_end()

template<typename LeafContainerT = index_t, typename BranchContainerT = OctreeContainerEmpty>
const DepthFirstIterator pcl::octree::OctreeBase< LeafContainerT, BranchContainerT >::depth_end ( )
inline

Definition at line 160 of file octree_base.h.

deserializeTree() [1/2]

template<typename LeafContainerT , typename BranchContainerT >
void pcl::octree::OctreeBase< LeafContainerT, BranchContainerT >::deserializeTree ( std::vector< char > & binary_tree_input_arg )

Deserialize a binary octree description vector and create a corresponding octree structure.

Leaf nodes are initialized with getDataTByKey(..).

Parameters
binary_tree_input_arg reference to input vector for reading binary tree structure.

Definition at line 228 of file octree_base.hpp.

deserializeTree() [2/2]

template<typename LeafContainerT , typename BranchContainerT >
void pcl::octree::OctreeBase< LeafContainerT, BranchContainerT >::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.

Leaf nodes are initialized with LeafContainerT elements from the dataVector.

Parameters
binary_tree_input_arg reference to input vector for reading binary tree structure.
leaf_container_vector_arg pointer to container vector.

Definition at line 252 of file octree_base.hpp.

deserializeTreeCallback()

template<typename LeafContainerT = index_t, typename BranchContainerT = OctreeContainerEmpty>
virtual void pcl::octree::OctreeBase< LeafContainerT, BranchContainerT >::deserializeTreeCallback ( LeafContainerT & ,
const OctreeKey &
)
inlineprotectedvirtual

Callback executed for every leaf node during deserialization.

Definition at line 667 of file octree_base.h.

deserializeTreeRecursive()

template<typename LeafContainerT , typename BranchContainerT >
void pcl::octree::OctreeBase< LeafContainerT, BranchContainerT >::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
)
protected

Recursive method for deserializing octree structure.

Parameters
branch_arg current branch node
depth_mask_arg depth mask used for octree key analysis and branch depth indicator
key_arg reference to an octree key
binary_tree_input_it_arg iterator to binary input vector
binary_tree_input_it_end_arg end iterator of binary input vector
leaf_container_vector_it_arg iterator pointing to current LeafContainerT object to be added to a leaf node
leaf_container_vector_it_end_arg iterator pointing to last object in LeafContainerT input vector.

Definition at line 492 of file octree_base.hpp.

end()

template<typename LeafContainerT = index_t, typename BranchContainerT = OctreeContainerEmpty>
const Iterator pcl::octree::OctreeBase< LeafContainerT, BranchContainerT >::end ( )
inline

Definition at line 118 of file octree_base.h.

existLeaf() [1/2]

template<typename LeafContainerT = index_t, typename BranchContainerT = OctreeContainerEmpty>
bool pcl::octree::OctreeBase< LeafContainerT, BranchContainerT >::existLeaf ( const OctreeKey & key_arg ) const
inlineprotected

Check for existence of a leaf node in the octree.

Parameters
key_arg octree key addressing a leaf node.
Returns
"true" if leaf node is found; "false" otherwise

Definition at line 415 of file octree_base.h.

existLeaf() [2/2]

template<typename LeafContainerT , typename BranchContainerT >
bool pcl::octree::OctreeBase< LeafContainerT, BranchContainerT >::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).

Parameters
idx_x_arg index of leaf node in the X axis.
idx_y_arg index of leaf node in the Y axis.
idx_z_arg index of leaf node in the Z axis.
Returns
"true" if leaf node search is successful, otherwise it returns "false".

Definition at line 133 of file octree_base.hpp.

findLeaf() [1/2]

template<typename LeafContainerT = index_t, typename BranchContainerT = OctreeContainerEmpty>
LeafContainerT* pcl::octree::OctreeBase< LeafContainerT, BranchContainerT >::findLeaf ( const OctreeKey & key_arg ) const
inlineprotected

Find leaf node.

Parameters
key_arg octree key addressing a leaf node.
Returns
pointer to leaf node. If leaf node is not found, this pointer returns 0.

Definition at line 403 of file octree_base.h.

findLeaf() [2/2]

template<typename LeafContainerT , typename BranchContainerT >
LeafContainerT * pcl::octree::OctreeBase< LeafContainerT, BranchContainerT >::findLeaf ( uindex_t idx_x_arg,
uindex_t idx_y_arg,
uindex_t idx_z_arg
)

Find leaf node at (idx_x_arg, idx_y_arg, idx_z_arg).

Note
If leaf node already exist, this method returns the existing node
Parameters
idx_x_arg index of leaf node in the X axis.
idx_y_arg index of leaf node in the Y axis.
idx_z_arg index of leaf node in the Z axis.
Returns
pointer to leaf node container if found, null pointer otherwise.

Definition at line 105 of file octree_base.hpp.

Referenced by pcl::octree::OctreeBase< OctreePointCloudVoxelCentroidContainer< PointT >, OctreeContainerEmpty >::existLeaf().

findLeafRecursive()

template<typename LeafContainerT , typename BranchContainerT >
void pcl::octree::OctreeBase< LeafContainerT, BranchContainerT >::findLeafRecursive ( const OctreeKey & key_arg,
uindex_t depth_mask_arg,
BranchNode * branch_arg,
LeafContainerT *& result_arg
) const
protected

Recursively search for a given leaf node and return a pointer.

Note
If leaf node does not exist, a 0 pointer is returned.
Parameters
key_arg reference to an octree key
depth_mask_arg depth mask used for octree key analysis and for branch depth indicator
branch_arg current branch node
result_arg pointer to leaf node class

Definition at line 345 of file octree_base.hpp.

Referenced by pcl::octree::OctreeBase< OctreePointCloudVoxelCentroidContainer< PointT >, OctreeContainerEmpty >::findLeaf().

fixed_depth_begin()

template<typename LeafContainerT = index_t, typename BranchContainerT = OctreeContainerEmpty>
FixedDepthIterator pcl::octree::OctreeBase< LeafContainerT, BranchContainerT >::fixed_depth_begin ( uindex_t fixed_depth_arg = 0u )
inline

Definition at line 187 of file octree_base.h.

fixed_depth_end()

template<typename LeafContainerT = index_t, typename BranchContainerT = OctreeContainerEmpty>
const FixedDepthIterator pcl::octree::OctreeBase< LeafContainerT, BranchContainerT >::fixed_depth_end ( )
inline

Definition at line 193 of file octree_base.h.

getBranchBitPattern()

template<typename LeafContainerT = index_t, typename BranchContainerT = OctreeContainerEmpty>
char pcl::octree::OctreeBase< LeafContainerT, BranchContainerT >::getBranchBitPattern ( const BranchNode & branch_arg ) const
inlineprotected

Generate bit pattern reflecting the existence of child node pointers.

Parameters
branch_arg reference to octree branch class
Returns
a single byte with 8 bits of child node information

Definition at line 482 of file octree_base.h.

getBranchChildPtr()

template<typename LeafContainerT = index_t, typename BranchContainerT = OctreeContainerEmpty>
OctreeNode* pcl::octree::OctreeBase< LeafContainerT, BranchContainerT >::getBranchChildPtr ( const BranchNode & branch_arg,
unsigned char child_idx_arg
) const
inlineprotected

Retrieve a child node pointer for child node at child_idx.

Parameters
branch_arg reference to octree branch class
child_idx_arg index to child node
Returns
pointer to octree child node class

Definition at line 459 of file octree_base.h.

getBranchCount()

template<typename LeafContainerT = index_t, typename BranchContainerT = OctreeContainerEmpty>
std::size_t pcl::octree::OctreeBase< LeafContainerT, BranchContainerT >::getBranchCount ( ) const
inline

Return the amount of existing branch nodes in the octree.

Returns
amount of branch nodes.

Definition at line 320 of file octree_base.h.

getLeafCount()

template<typename LeafContainerT = index_t, typename BranchContainerT = OctreeContainerEmpty>
std::size_t pcl::octree::OctreeBase< LeafContainerT, BranchContainerT >::getLeafCount ( ) const
inline

Return the amount of existing leafs in the octree.

Returns
amount of registered leaf nodes.

Definition at line 311 of file octree_base.h.

getRootNode()

template<typename LeafContainerT = index_t, typename BranchContainerT = OctreeContainerEmpty>
OctreeNode* pcl::octree::OctreeBase< LeafContainerT, BranchContainerT >::getRootNode ( ) const
inlineprotected

Retrieve root node.

Definition at line 436 of file octree_base.h.

getTreeDepth()

template<typename LeafContainerT = index_t, typename BranchContainerT = OctreeContainerEmpty>
uindex_t pcl::octree::OctreeBase< LeafContainerT, BranchContainerT >::getTreeDepth ( ) const
inline

Get the maximum depth of the octree.

Returns
depth_arg: maximum depth of octree

Definition at line 264 of file octree_base.h.

leaf_breadth_begin()

template<typename LeafContainerT = index_t, typename BranchContainerT = OctreeContainerEmpty>
LeafNodeBreadthFirstIterator pcl::octree::OctreeBase< LeafContainerT, BranchContainerT >::leaf_breadth_begin ( uindex_t max_depth_arg = 0u )
inline

Definition at line 204 of file octree_base.h.

leaf_breadth_end()

template<typename LeafContainerT = index_t, typename BranchContainerT = OctreeContainerEmpty>
const LeafNodeBreadthFirstIterator pcl::octree::OctreeBase< LeafContainerT, BranchContainerT >::leaf_breadth_end ( )
inline

Definition at line 211 of file octree_base.h.

leaf_depth_begin()

template<typename LeafContainerT = index_t, typename BranchContainerT = OctreeContainerEmpty>
LeafNodeDepthFirstIterator pcl::octree::OctreeBase< LeafContainerT, BranchContainerT >::leaf_depth_begin ( uindex_t max_depth_arg = 0u )
inline

Definition at line 136 of file octree_base.h.

leaf_depth_end()

template<typename LeafContainerT = index_t, typename BranchContainerT = OctreeContainerEmpty>
const LeafNodeDepthFirstIterator pcl::octree::OctreeBase< LeafContainerT, BranchContainerT >::leaf_depth_end ( )
inline

Definition at line 143 of file octree_base.h.

octreeCanResize()

template<typename LeafContainerT = index_t, typename BranchContainerT = OctreeContainerEmpty>
bool pcl::octree::OctreeBase< LeafContainerT, BranchContainerT >::octreeCanResize ( )
inlineprotected

Test if octree is able to dynamically change its depth.

This is required for adaptive bounding box adjustment.

Returns
"true"

Definition at line 679 of file octree_base.h.

operator=()

template<typename LeafContainerT = index_t, typename BranchContainerT = OctreeContainerEmpty>
OctreeBase& pcl::octree::OctreeBase< LeafContainerT, BranchContainerT >::operator= ( const OctreeBase< LeafContainerT, BranchContainerT > & source )
inline

Copy operator.

Definition at line 235 of file octree_base.h.

removeLeaf() [1/2]

template<typename LeafContainerT = index_t, typename BranchContainerT = OctreeContainerEmpty>
void pcl::octree::OctreeBase< LeafContainerT, BranchContainerT >::removeLeaf ( const OctreeKey & key_arg )
inlineprotected

Remove leaf node from octree.

Parameters
key_arg octree key addressing a leaf node.

Definition at line 424 of file octree_base.h.

removeLeaf() [2/2]

template<typename LeafContainerT , typename BranchContainerT >
void pcl::octree::OctreeBase< LeafContainerT, BranchContainerT >::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).

Parameters
idx_x_arg index of leaf node in the X axis.
idx_y_arg index of leaf node in the Y axis.
idx_z_arg index of leaf node in the Z axis.

Definition at line 147 of file octree_base.hpp.

serializeLeafs()

template<typename LeafContainerT , typename BranchContainerT >
void pcl::octree::OctreeBase< LeafContainerT, BranchContainerT >::serializeLeafs ( std::vector< LeafContainerT * > & leaf_container_vector_arg )

Outputs a vector of all LeafContainerT elements that are stored within the octree leaf nodes.

Parameters
leaf_container_vector_arg pointers to LeafContainerT vector that receives a copy of all LeafContainerT objects in the octree.

Definition at line 212 of file octree_base.hpp.

serializeTree() [1/2]

template<typename LeafContainerT , typename BranchContainerT >
void pcl::octree::OctreeBase< LeafContainerT, BranchContainerT >::serializeTree ( std::vector< char > & binary_tree_out_arg )

Serialize octree into a binary output vector describing its branch node structure.

Parameters
binary_tree_out_arg reference to output vector for writing binary tree structure.

Definition at line 175 of file octree_base.hpp.

serializeTree() [2/2]

template<typename LeafContainerT , typename BranchContainerT >
void pcl::octree::OctreeBase< LeafContainerT, BranchContainerT >::serializeTree ( std::vector< char > & binary_tree_out_arg,
std::vector< LeafContainerT * > & leaf_container_vector_arg
)

Serialize octree into a binary output vector describing its branch node structure and push all LeafContainerT elements stored in the octree to a vector.

Parameters
binary_tree_out_arg reference to output vector for writing binary tree structure.
leaf_container_vector_arg pointer to all LeafContainerT objects in the octree

Definition at line 191 of file octree_base.hpp.

serializeTreeCallback()

template<typename LeafContainerT = index_t, typename BranchContainerT = OctreeContainerEmpty>
virtual void pcl::octree::OctreeBase< LeafContainerT, BranchContainerT >::serializeTreeCallback ( LeafContainerT & ,
const OctreeKey &
) const
inlineprotectedvirtual

Callback executed for every leaf node during serialization.

Definition at line 661 of file octree_base.h.

serializeTreeRecursive()

template<typename LeafContainerT , typename BranchContainerT >
void pcl::octree::OctreeBase< LeafContainerT, BranchContainerT >::serializeTreeRecursive ( const BranchNode * branch_arg,
OctreeKey & key_arg,
std::vector< char > * binary_tree_out_arg,
typename std::vector< LeafContainerT * > * leaf_container_vector_arg
) const
protected

Recursively explore the octree and output binary octree description together with a vector of leaf node LeafContainerTs.

Parameters
branch_arg current branch node
key_arg reference to an octree key
binary_tree_out_arg binary output vector
leaf_container_vector_arg writes LeafContainerT pointers to this LeafContainerT* vector.

Definition at line 435 of file octree_base.hpp.

setBranchChildPtr()

template<typename LeafContainerT = index_t, typename BranchContainerT = OctreeContainerEmpty>
void pcl::octree::OctreeBase< LeafContainerT, BranchContainerT >::setBranchChildPtr ( BranchNode & branch_arg,
unsigned char child_idx_arg,
OctreeNode * new_child_arg
)
inlineprotected

Assign new child node to branch.

Parameters
branch_arg reference to octree branch class
child_idx_arg index to child node
new_child_arg pointer to new child node

Definition at line 470 of file octree_base.h.

setMaxVoxelIndex()

template<typename LeafContainerT , typename BranchContainerT >
void pcl::octree::OctreeBase< LeafContainerT, BranchContainerT >::setMaxVoxelIndex ( uindex_t max_voxel_index_arg )

Set the maximum amount of voxels per dimension.

Parameters
[in] max_voxel_index_arg maximum amount of voxels per dimension

Definition at line 69 of file octree_base.hpp.

setTreeDepth()

template<typename LeafContainerT , typename BranchContainerT >
void pcl::octree::OctreeBase< LeafContainerT, BranchContainerT >::setTreeDepth ( uindex_t max_depth_arg )

Set the maximum depth of the octree.

Parameters
max_depth_arg maximum depth of octree

Definition at line 88 of file octree_base.hpp.

Friends And Related Function Documentation

OctreeBreadthFirstIterator< OctreeT >

template<typename LeafContainerT = index_t, typename BranchContainerT = OctreeContainerEmpty>
friend class OctreeBreadthFirstIterator< OctreeT >
friend

Definition at line 102 of file octree_base.h.

OctreeDepthFirstIterator< OctreeT >

template<typename LeafContainerT = index_t, typename BranchContainerT = OctreeContainerEmpty>
friend class OctreeDepthFirstIterator< OctreeT >
friend

Definition at line 101 of file octree_base.h.

OctreeFixedDepthIterator< OctreeT >

template<typename LeafContainerT = index_t, typename BranchContainerT = OctreeContainerEmpty>
friend class OctreeFixedDepthIterator< OctreeT >
friend

Definition at line 103 of file octree_base.h.

OctreeIteratorBase< OctreeT >

template<typename LeafContainerT = index_t, typename BranchContainerT = OctreeContainerEmpty>
friend class OctreeIteratorBase< OctreeT >
friend

Definition at line 100 of file octree_base.h.

OctreeLeafNodeBreadthFirstIterator< OctreeT >

template<typename LeafContainerT = index_t, typename BranchContainerT = OctreeContainerEmpty>
friend class OctreeLeafNodeBreadthFirstIterator< OctreeT >
friend

Definition at line 105 of file octree_base.h.

OctreeLeafNodeDepthFirstIterator< OctreeT >

template<typename LeafContainerT = index_t, typename BranchContainerT = OctreeContainerEmpty>
friend class OctreeLeafNodeDepthFirstIterator< OctreeT >
friend

Definition at line 104 of file octree_base.h.

Member Data Documentation

branch_count_

template<typename LeafContainerT = index_t, typename BranchContainerT = OctreeContainerEmpty>
std::size_t pcl::octree::OctreeBase< LeafContainerT, BranchContainerT >::branch_count_
protected

depth_mask_

dynamic_depth_enabled_

template<typename LeafContainerT = index_t, typename BranchContainerT = OctreeContainerEmpty>
bool pcl::octree::OctreeBase< LeafContainerT, BranchContainerT >::dynamic_depth_enabled_
protected

Enable dynamic_depth.

Definition at line 93 of file octree_base.h.

leaf_count_

template<typename LeafContainerT = index_t, typename BranchContainerT = OctreeContainerEmpty>
std::size_t pcl::octree::OctreeBase< LeafContainerT, BranchContainerT >::leaf_count_
protected

max_key_

template<typename LeafContainerT = index_t, typename BranchContainerT = OctreeContainerEmpty>
OctreeKey pcl::octree::OctreeBase< LeafContainerT, BranchContainerT >::max_key_
protected

octree_depth_

template<typename LeafContainerT = index_t, typename BranchContainerT = OctreeContainerEmpty>
uindex_t pcl::octree::OctreeBase< LeafContainerT, BranchContainerT >::octree_depth_
protected

root_node_


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

© 2009–2012, Willow Garage, Inc.
© 2012–, Open Perception, Inc.
Licensed under the BSD License.
https://pointclouds.org/documentation/classpcl_1_1octree_1_1_octree_base.html