Point Cloud Library (PCL)
1.14.1-dev
|
Octree double buffer class More...
#include <pcl/octree/octree2buf_base.h>
Public Member Functions | |
Iterator | begin (uindex_t max_depth_arg=0) |
const Iterator | end () |
LeafNodeDepthFirstIterator | leaf_depth_begin (uindex_t max_depth_arg=0) |
const LeafNodeDepthFirstIterator | leaf_depth_end () |
DepthFirstIterator | depth_begin (uindex_t maxDepth_arg=0) |
const DepthFirstIterator | depth_end () |
BreadthFirstIterator | breadth_begin (uindex_t max_depth_arg=0) |
const BreadthFirstIterator | breadth_end () |
LeafNodeBreadthIterator | leaf_breadth_begin (uindex_t max_depth_arg=0u) |
const LeafNodeBreadthIterator | leaf_breadth_end () |
Octree2BufBase () | |
Empty constructor. More... | |
virtual | ~Octree2BufBase () |
Empty deconstructor. More... | |
Octree2BufBase (const Octree2BufBase &source) | |
Copy constructor. More... | |
Octree2BufBase & | operator= (const Octree2BufBase &source) |
Copy constructor. More... | |
void | setMaxVoxelIndex (uindex_t max_voxel_index_arg) |
Set the maximum amount of voxels per dimension. More... | |
void | setTreeDepth (uindex_t 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 |
Check 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 branches in the octree. More... | |
void | deleteTree () |
Delete the octree structure and its leaf nodes. More... | |
void | deletePreviousBuffer () |
Delete octree structure of previous buffer. More... | |
void | deleteCurrentBuffer () |
Delete the octree structure in the current buffer. More... | |
void | switchBuffers () |
Switch buffers and reset current octree structure. More... | |
void | serializeTree (std::vector< char > &binary_tree_out_arg, bool do_XOR_encoding_arg=false) |
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, bool do_XOR_encoding_arg=false) |
Serialize octree into a binary output vector describing its branch node structure and and push all DataT elements stored in the octree to a vector. More... | |
void | serializeLeafs (std::vector< LeafContainerT * > &leaf_container_vector_arg) |
Outputs a vector of all DataT elements that are stored within the octree leaf nodes. More... | |
void | serializeNewLeafs (std::vector< LeafContainerT * > &leaf_container_vector_arg) |
Outputs a vector of all DataT elements from leaf nodes, that do not exist in the previous octree buffer. More... | |
void | deserializeTree (std::vector< char > &binary_tree_in_arg, bool do_XOR_decoding_arg=false) |
Deserialize a binary octree description vector and create a corresponding octree structure. More... | |
void | deserializeTree (std::vector< char > &binary_tree_in_arg, std::vector< LeafContainerT * > &leaf_container_vector_arg, bool do_XOR_decoding_arg=false) |
Deserialize a binary octree description and create a corresponding octree structure. More... | |
Protected Member Functions | |
OctreeNode * | getRootNode () const |
Retrieve root node. More... | |
LeafContainerT * | findLeaf (const OctreeKey &key_arg) const |
Find leaf node. More... | |
LeafContainerT * | createLeaf (const OctreeKey &key_arg) |
Create a leaf node. More... | |
bool | existLeaf (const OctreeKey &key_arg) const |
Check if leaf doesn't exist in the octree. More... | |
void | removeLeaf (const OctreeKey &key_arg) |
Remove leaf node from octree. 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 for current buffer. More... | |
char | getBranchBitPattern (const BranchNode &branch_arg, unsigned char bufferSelector_arg) const |
Generate bit pattern reflecting the existence of child node pointers in specific buffer. More... | |
char | getBranchXORBitPattern (const BranchNode &branch_arg) const |
Generate XOR bit pattern reflecting differences between the two octree buffers. More... | |
bool | hasBranchChanges (const BranchNode &branch_arg) const |
Test if branch changed between previous and current buffer. More... | |
void | deleteBranchChild (BranchNode &branch_arg, unsigned char buffer_selector_arg, unsigned char child_idx_arg) |
Delete child node and all its subchilds from octree in specific buffer. More... | |
void | deleteBranchChild (BranchNode &branch_arg, unsigned char child_idx_arg) |
Delete child node and all its subchilds from octree in current buffer. More... | |
void | deleteBranch (BranchNode &branch_arg) |
Delete branch and all its subchilds from octree (both buffers) More... | |
BranchNode * | createBranchChild (BranchNode &branch_arg, unsigned char child_idx_arg) |
Fetch and add a new branch child to a branch class in current buffer. More... | |
LeafNode * | createLeafChild (BranchNode &branch_arg, unsigned char child_idx_arg) |
Fetch 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, bool branch_reset_arg=false) |
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 (BranchNode *branch_arg, OctreeKey &key_arg, std::vector< char > *binary_tree_out_arg, typename std::vector< LeafContainerT * > *leaf_container_vector_arg, bool do_XOR_encoding_arg=false, bool new_leafs_filter_arg=false) |
Recursively explore the octree and output binary octree description together with a vector of leaf node DataT content. More... | |
void | deserializeTreeRecursive (BranchNode *branch_arg, uindex_t depth_mask_arg, OctreeKey &key_arg, typename std::vector< char >::const_iterator &binary_tree_in_it_arg, typename std::vector< char >::const_iterator &binary_tree_in_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, bool branch_reset_arg=false, bool do_XOR_decoding_arg=false) |
Rebuild an octree based on binary XOR octree description and DataT objects for leaf node initialization. More... | |
virtual void | serializeTreeCallback (LeafContainerT &, const OctreeKey &) |
Callback executed for every leaf node data during serialization. More... | |
virtual void | deserializeTreeCallback (LeafContainerT &, const OctreeKey &) |
Callback executed for every leaf node data during deserialization. More... | |
void | treeCleanUpRecursive (BranchNode *branch_arg) |
Recursively explore the octree and remove unused branch and leaf nodes. More... | |
bool | octreeCanResize () |
Test if octree is able to dynamically change its depth. More... | |
void | printBinary (char data_arg) |
Prints binary representation of a byte - used for debugging. More... | |
Protected Attributes | |
std::size_t | leaf_count_ {0} |
Amount of leaf nodes More... | |
std::size_t | branch_count_ {1} |
Amount of branch nodes More... | |
BranchNode * | root_node_ |
Pointer to root branch node of octree More... | |
uindex_t | depth_mask_ {0} |
Depth mask based on octree depth More... | |
OctreeKey | max_key_ |
key range More... | |
unsigned char | buffer_selector_ {0} |
Currently active octree buffer More... | |
bool | tree_dirty_flag_ {false} |
flags indicating if unused branches and leafs might exist in previous buffer More... | |
uindex_t | octree_depth_ {0} |
Octree depth. More... | |
bool | dynamic_depth_enabled_ {false} |
Enable dynamic_depth. More... | |
Octree double buffer class
This octree implementation keeps two separate octree structures in memory which allows for differentially comparison of the octree structures (change detection, differential encoding).
Definition at line 222 of file octree2buf_base.h.
using pcl::octree::Octree2BufBase< LeafContainerT, BranchContainerT >::BranchContainer = BranchContainerT |
Definition at line 237 of file octree2buf_base.h.
using pcl::octree::Octree2BufBase< LeafContainerT, BranchContainerT >::BranchNode = BufferedBranchNode<BranchContainerT> |
Definition at line 234 of file octree2buf_base.h.
using pcl::octree::Octree2BufBase< LeafContainerT, BranchContainerT >::BreadthFirstIterator = OctreeBreadthFirstIterator<OctreeT> |
Definition at line 292 of file octree2buf_base.h.
using pcl::octree::Octree2BufBase< LeafContainerT, BranchContainerT >::ConstBreadthFirstIterator = const OctreeBreadthFirstIterator<OctreeT> |
Definition at line 293 of file octree2buf_base.h.
using pcl::octree::Octree2BufBase< LeafContainerT, BranchContainerT >::ConstDepthFirstIterator = const OctreeDepthFirstIterator<OctreeT> |
Definition at line 279 of file octree2buf_base.h.
using pcl::octree::Octree2BufBase< LeafContainerT, BranchContainerT >::ConstIterator = const OctreeDepthFirstIterator<OctreeT> |
Definition at line 242 of file octree2buf_base.h.
using pcl::octree::Octree2BufBase< LeafContainerT, BranchContainerT >::ConstLeafNodeBreadthIterator = const OctreeLeafNodeBreadthFirstIterator<OctreeT> |
Definition at line 307 of file octree2buf_base.h.
using pcl::octree::Octree2BufBase< LeafContainerT, BranchContainerT >::ConstLeafNodeDepthFirstIterator = const OctreeLeafNodeDepthFirstIterator<OctreeT> |
Definition at line 263 of file octree2buf_base.h.
using pcl::octree::Octree2BufBase< LeafContainerT, BranchContainerT >::ConstLeafNodeIterator = const OctreeLeafNodeDepthFirstIterator<OctreeT> |
Definition at line 259 of file octree2buf_base.h.
using pcl::octree::Octree2BufBase< LeafContainerT, BranchContainerT >::DepthFirstIterator = OctreeDepthFirstIterator<OctreeT> |
Definition at line 278 of file octree2buf_base.h.
using pcl::octree::Octree2BufBase< LeafContainerT, BranchContainerT >::Iterator = OctreeDepthFirstIterator<OctreeT> |
Definition at line 241 of file octree2buf_base.h.
using pcl::octree::Octree2BufBase< LeafContainerT, BranchContainerT >::LeafContainer = LeafContainerT |
Definition at line 238 of file octree2buf_base.h.
using pcl::octree::Octree2BufBase< LeafContainerT, BranchContainerT >::LeafNode = OctreeLeafNode<LeafContainerT> |
Definition at line 235 of file octree2buf_base.h.
using pcl::octree::Octree2BufBase< LeafContainerT, BranchContainerT >::LeafNodeBreadthIterator = OctreeLeafNodeBreadthFirstIterator<OctreeT> |
Definition at line 306 of file octree2buf_base.h.
using pcl::octree::Octree2BufBase< LeafContainerT, BranchContainerT >::LeafNodeDepthFirstIterator = OctreeLeafNodeDepthFirstIterator<OctreeT> |
Definition at line 262 of file octree2buf_base.h.
using pcl::octree::Octree2BufBase< LeafContainerT, BranchContainerT >::LeafNodeIterator = OctreeLeafNodeDepthFirstIterator<OctreeT> |
Definition at line 258 of file octree2buf_base.h.
using pcl::octree::Octree2BufBase< LeafContainerT, BranchContainerT >::OctreeT = Octree2BufBase<LeafContainerT, BranchContainerT> |
Definition at line 225 of file octree2buf_base.h.
pcl::octree::Octree2BufBase< LeafContainerT, BranchContainerT >::Octree2BufBase |
Empty constructor.
Definition at line 46 of file octree2buf_base.hpp.
|
virtual |
Empty deconstructor.
Definition at line 52 of file octree2buf_base.hpp.
|
inline |
Copy constructor.
Definition at line 330 of file octree2buf_base.h.
|
inline |
Definition at line 244 of file octree2buf_base.h.
|
inlineprotected |
Check if branch is pointing to a particular child node.
branch_arg | reference to octree branch class |
child_idx_arg | index to child node |
Definition at line 606 of file octree2buf_base.h.
References pcl::octree::Octree2BufBase< LeafContainerT, BranchContainerT >::buffer_selector_, and pcl::octree::BufferedBranchNode< ContainerT >::getChildPtr().
|
inline |
Definition at line 295 of file octree2buf_base.h.
|
inline |
Definition at line 300 of file octree2buf_base.h.
|
inlineprotected |
Fetch and add a new branch child to a branch class in current buffer.
branch_arg | reference to octree branch class |
child_idx_arg | index to child node |
Definition at line 791 of file octree2buf_base.h.
References pcl::octree::Octree2BufBase< LeafContainerT, BranchContainerT >::buffer_selector_, and pcl::octree::BufferedBranchNode< ContainerT >::setChildPtr().
|
inlineprotected |
Create a leaf node.
key_arg | octree key addressing a leaf node. |
Definition at line 559 of file octree2buf_base.h.
References pcl::octree::Octree2BufBase< LeafContainerT, BranchContainerT >::createLeafRecursive(), pcl::octree::Octree2BufBase< LeafContainerT, BranchContainerT >::depth_mask_, pcl::octree::OctreeLeafNode< ContainerT >::getContainerPtr(), and pcl::octree::Octree2BufBase< LeafContainerT, BranchContainerT >::root_node_.
LeafContainerT * pcl::octree::Octree2BufBase< 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).
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 123 of file octree2buf_base.hpp.
|
inlineprotected |
Fetch and add a new leaf child to a branch class.
branch_arg | reference to octree branch class |
child_idx_arg | index to child node |
Definition at line 807 of file octree2buf_base.h.
References pcl::octree::Octree2BufBase< LeafContainerT, BranchContainerT >::buffer_selector_, and pcl::octree::BufferedBranchNode< ContainerT >::setChildPtr().
|
protected |
Create a leaf node at octree key.
If leaf node does already exist, it is returned.
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 container |
parent_of_leaf_arg | return pointer to parent of leaf node |
branch_reset_arg | Reset pointer array of current branch |
Definition at line 360 of file octree2buf_base.hpp.
References pcl::octree::BRANCH_NODE, pcl::octree::OctreeKey::getChildIdxWithDepthMask(), pcl::octree::BufferedBranchNode< ContainerT >::getChildPtr(), pcl::octree::OctreeLeafNode< ContainerT >::getContainer(), pcl::octree::OctreeNode::getNodeType(), pcl::octree::BufferedBranchNode< ContainerT >::hasChild(), pcl::octree::LEAF_NODE, and pcl::octree::BufferedBranchNode< ContainerT >::setChildPtr().
Referenced by pcl::octree::Octree2BufBase< LeafContainerT, BranchContainerT >::createLeaf().
|
inlineprotected |
Delete branch and all its subchilds from octree (both buffers)
branch_arg | reference to octree branch class |
Definition at line 765 of file octree2buf_base.h.
References pcl::octree::Octree2BufBase< LeafContainerT, BranchContainerT >::deleteBranchChild(), pcl::octree::BufferedBranchNode< ContainerT >::getChildPtr(), and pcl::octree::BufferedBranchNode< ContainerT >::setChildPtr().
Referenced by pcl::octree::Octree2BufBase< LeafContainerT, BranchContainerT >::deleteBranchChild().
|
inlineprotected |
Delete child node and all its subchilds from octree in specific buffer.
branch_arg | reference to octree branch class |
buffer_selector_arg | buffer selector |
child_idx_arg | index to child node |
Definition at line 719 of file octree2buf_base.h.
References pcl::octree::BRANCH_NODE, pcl::octree::Octree2BufBase< LeafContainerT, BranchContainerT >::deleteBranch(), pcl::octree::BufferedBranchNode< ContainerT >::getChildPtr(), pcl::octree::OctreeNode::getNodeType(), pcl::octree::BufferedBranchNode< ContainerT >::hasChild(), pcl::octree::LEAF_NODE, and pcl::octree::BufferedBranchNode< ContainerT >::setChildPtr().
Referenced by pcl::octree::Octree2BufBase< LeafContainerT, BranchContainerT >::deleteBranch(), and pcl::octree::Octree2BufBase< LeafContainerT, BranchContainerT >::deleteBranchChild().
|
inlineprotected |
Delete child node and all its subchilds from octree in current buffer.
branch_arg | reference to octree branch class |
child_idx_arg | index to child node |
Definition at line 756 of file octree2buf_base.h.
References pcl::octree::Octree2BufBase< LeafContainerT, BranchContainerT >::buffer_selector_, and pcl::octree::Octree2BufBase< LeafContainerT, BranchContainerT >::deleteBranchChild().
|
inline |
Delete the octree structure in the current buffer.
Definition at line 448 of file octree2buf_base.h.
References pcl::octree::Octree2BufBase< LeafContainerT, BranchContainerT >::buffer_selector_, pcl::octree::Octree2BufBase< LeafContainerT, BranchContainerT >::leaf_count_, pcl::octree::Octree2BufBase< LeafContainerT, BranchContainerT >::root_node_, and pcl::octree::Octree2BufBase< LeafContainerT, BranchContainerT >::treeCleanUpRecursive().
|
protected |
Recursively search and delete leaf node.
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 |
Definition at line 507 of file octree2buf_base.hpp.
References pcl::octree::OctreeKey::getChildIdxWithDepthMask(), pcl::octree::BufferedBranchNode< ContainerT >::getChildPtr(), and pcl::octree::BufferedBranchNode< ContainerT >::hasChild().
Referenced by pcl::octree::Octree2BufBase< LeafContainerT, BranchContainerT >::removeLeaf().
|
inline |
Delete octree structure of previous buffer.
Definition at line 441 of file octree2buf_base.h.
References pcl::octree::Octree2BufBase< LeafContainerT, BranchContainerT >::root_node_, and pcl::octree::Octree2BufBase< LeafContainerT, BranchContainerT >::treeCleanUpRecursive().
void pcl::octree::Octree2BufBase< LeafContainerT, BranchContainerT >::deleteTree |
Delete the octree structure and its leaf nodes.
Definition at line 165 of file octree2buf_base.hpp.
|
inline |
Definition at line 281 of file octree2buf_base.h.
|
inline |
Definition at line 286 of file octree2buf_base.h.
void pcl::octree::Octree2BufBase< LeafContainerT, BranchContainerT >::deserializeTree | ( | std::vector< char > & | binary_tree_in_arg, |
bool | do_XOR_decoding_arg = false |
||
) |
Deserialize a binary octree description vector and create a corresponding octree structure.
Leaf nodes are initialized with getDataTByKey(..).
binary_tree_in_arg | reference to input vector for reading binary tree structure. |
do_XOR_decoding_arg | select if binary tree structure is based on current octree (false) of based on a XOR comparison between current and previous octree |
Definition at line 273 of file octree2buf_base.hpp.
void pcl::octree::Octree2BufBase< LeafContainerT, BranchContainerT >::deserializeTree | ( | std::vector< char > & | binary_tree_in_arg, |
std::vector< LeafContainerT * > & | leaf_container_vector_arg, | ||
bool | do_XOR_decoding_arg = false |
||
) |
Deserialize a binary octree description and create a corresponding octree structure.
Leaf nodes are initialized with DataT elements from the dataVector.
binary_tree_in_arg | reference to inpvectoream for reading binary tree structure. |
leaf_container_vector_arg | vector of pointers to all LeafContainerT objects in the octree |
do_XOR_decoding_arg | select if binary tree structure is based on current octree (false) of based on a XOR comparison between current and previous octree |
Definition at line 302 of file octree2buf_base.hpp.
|
inlineprotectedvirtual |
Callback executed for every leaf node data during deserialization.
Definition at line 931 of file octree2buf_base.h.
|
protected |
Rebuild an octree based on binary XOR octree description and DataT objects for leaf node initialization.
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_in_it_arg | iterator of binary input data |
binary_tree_in_it_end_arg | |
leaf_container_vector_it_arg | iterator pointing to leaf container pointers to be added to a leaf node |
leaf_container_vector_it_end_arg | iterator pointing to leaf container pointers pointing to last object in input container. |
branch_reset_arg | Reset pointer array of current branch |
do_XOR_decoding_arg | select if binary tree structure is based on current octree (false) of based on a XOR comparison between current and previous octree |
Definition at line 644 of file octree2buf_base.hpp.
References pcl::octree::BRANCH_NODE, pcl::octree::BufferedBranchNode< ContainerT >::getChildPtr(), pcl::octree::OctreeNode::getNodeType(), pcl::octree::BufferedBranchNode< ContainerT >::hasChild(), pcl::octree::LEAF_NODE, pcl::octree::OctreeKey::popBranch(), pcl::octree::OctreeKey::pushBranch(), and pcl::octree::BufferedBranchNode< ContainerT >::setChildPtr().
|
inline |
Definition at line 249 of file octree2buf_base.h.
|
inlineprotected |
Check if leaf doesn't exist in the octree.
key_arg | octree key addressing a leaf node. |
Definition at line 577 of file octree2buf_base.h.
References pcl::octree::Octree2BufBase< LeafContainerT, BranchContainerT >::findLeaf().
bool pcl::octree::Octree2BufBase< LeafContainerT, BranchContainerT >::existLeaf | ( | uindex_t | idx_x_arg, |
uindex_t | idx_y_arg, | ||
uindex_t | idx_z_arg | ||
) | const |
Check for the existence of leaf node at (idx_x_arg, idx_y_arg, idx_z_arg).
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 137 of file octree2buf_base.hpp.
|
inlineprotected |
Find leaf node.
key_arg | octree key addressing a leaf node. |
Definition at line 545 of file octree2buf_base.h.
References pcl::octree::Octree2BufBase< LeafContainerT, BranchContainerT >::depth_mask_, pcl::octree::Octree2BufBase< LeafContainerT, BranchContainerT >::findLeafRecursive(), and pcl::octree::Octree2BufBase< LeafContainerT, BranchContainerT >::root_node_.
LeafContainerT * pcl::octree::Octree2BufBase< 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).
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 109 of file octree2buf_base.hpp.
Referenced by pcl::octree::Octree2BufBase< LeafContainerT, BranchContainerT >::existLeaf().
|
protected |
Recursively search for a given leaf node and return a pointer.
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 container class |
Definition at line 471 of file octree2buf_base.hpp.
References pcl::octree::OctreeKey::getChildIdxWithDepthMask(), pcl::octree::BufferedBranchNode< ContainerT >::getChildPtr(), pcl::octree::OctreeLeafNode< ContainerT >::getContainerPtr(), and pcl::octree::BufferedBranchNode< ContainerT >::hasChild().
Referenced by pcl::octree::Octree2BufBase< LeafContainerT, BranchContainerT >::findLeaf().
|
inlineprotected |
Generate bit pattern reflecting the existence of child node pointers for current buffer.
branch_arg | reference to octree branch class |
Definition at line 642 of file octree2buf_base.h.
References pcl::octree::Octree2BufBase< LeafContainerT, BranchContainerT >::buffer_selector_, and pcl::octree::BufferedBranchNode< ContainerT >::getChildPtr().
|
inlineprotected |
Generate bit pattern reflecting the existence of child node pointers in specific buffer.
branch_arg | reference to octree branch class |
bufferSelector_arg | buffer selector |
Definition at line 663 of file octree2buf_base.h.
References pcl::octree::BufferedBranchNode< ContainerT >::getChildPtr().
|
inlineprotected |
Retrieve a child node pointer for child node at child_idx.
branch_arg | reference to octree branch class |
child_idx_arg | index to child node |
Definition at line 618 of file octree2buf_base.h.
References pcl::octree::Octree2BufBase< LeafContainerT, BranchContainerT >::buffer_selector_, and pcl::octree::BufferedBranchNode< ContainerT >::getChildPtr().
|
inline |
Return the amount of existing branches in the octree.
Definition at line 429 of file octree2buf_base.h.
References pcl::octree::Octree2BufBase< LeafContainerT, BranchContainerT >::branch_count_.
|
inlineprotected |
Generate XOR bit pattern reflecting differences between the two octree buffers.
branch_arg | reference to octree branch class |
Definition at line 684 of file octree2buf_base.h.
References pcl::octree::BufferedBranchNode< ContainerT >::getChildPtr().
Referenced by pcl::octree::Octree2BufBase< LeafContainerT, BranchContainerT >::hasBranchChanges().
|
inline |
Return the amount of existing leafs in the octree.
Definition at line 420 of file octree2buf_base.h.
References pcl::octree::Octree2BufBase< LeafContainerT, BranchContainerT >::leaf_count_.
|
inlineprotected |
Retrieve root node.
Definition at line 534 of file octree2buf_base.h.
References pcl::octree::Octree2BufBase< LeafContainerT, BranchContainerT >::root_node_.
|
inline |
Get the maximum depth of the octree.
Definition at line 374 of file octree2buf_base.h.
References pcl::octree::Octree2BufBase< LeafContainerT, BranchContainerT >::octree_depth_.
|
inlineprotected |
Test if branch changed between previous and current buffer.
branch_arg | reference to octree branch class |
Definition at line 708 of file octree2buf_base.h.
References pcl::octree::Octree2BufBase< LeafContainerT, BranchContainerT >::getBranchXORBitPattern().
|
inline |
Definition at line 311 of file octree2buf_base.h.
References pcl::octree::Octree2BufBase< LeafContainerT, BranchContainerT >::octree_depth_.
|
inline |
Definition at line 318 of file octree2buf_base.h.
|
inline |
Definition at line 266 of file octree2buf_base.h.
|
inline |
Definition at line 272 of file octree2buf_base.h.
|
inlineprotected |
Test if octree is able to dynamically change its depth.
This is required for adaptive bounding box adjustment.
Definition at line 949 of file octree2buf_base.h.
|
inline |
Copy constructor.
Definition at line 344 of file octree2buf_base.h.
References pcl::octree::Octree2BufBase< LeafContainerT, BranchContainerT >::branch_count_, pcl::octree::Octree2BufBase< LeafContainerT, BranchContainerT >::buffer_selector_, pcl::octree::Octree2BufBase< LeafContainerT, BranchContainerT >::depth_mask_, pcl::octree::Octree2BufBase< LeafContainerT, BranchContainerT >::dynamic_depth_enabled_, pcl::octree::Octree2BufBase< LeafContainerT, BranchContainerT >::leaf_count_, pcl::octree::Octree2BufBase< LeafContainerT, BranchContainerT >::max_key_, pcl::octree::Octree2BufBase< LeafContainerT, BranchContainerT >::octree_depth_, pcl::octree::Octree2BufBase< LeafContainerT, BranchContainerT >::root_node_, and pcl::octree::Octree2BufBase< LeafContainerT, BranchContainerT >::tree_dirty_flag_.
|
inlineprotected |
Prints binary representation of a byte - used for debugging.
data_arg | - byte to be printed to stdout |
Definition at line 958 of file octree2buf_base.h.
|
inlineprotected |
Remove leaf node from octree.
key_arg | octree key addressing a leaf node. |
Definition at line 586 of file octree2buf_base.h.
References pcl::octree::Octree2BufBase< LeafContainerT, BranchContainerT >::deleteLeafRecursive(), pcl::octree::Octree2BufBase< LeafContainerT, BranchContainerT >::depth_mask_, pcl::octree::Octree2BufBase< LeafContainerT, BranchContainerT >::max_key_, pcl::octree::Octree2BufBase< LeafContainerT, BranchContainerT >::root_node_, and pcl::octree::Octree2BufBase< LeafContainerT, BranchContainerT >::tree_dirty_flag_.
void pcl::octree::Octree2BufBase< 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).
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 151 of file octree2buf_base.hpp.
void pcl::octree::Octree2BufBase< LeafContainerT, BranchContainerT >::serializeLeafs | ( | std::vector< LeafContainerT * > & | leaf_container_vector_arg | ) |
Outputs a vector of all DataT elements that are stored within the octree leaf nodes.
leaf_container_vector_arg | vector of pointers to all LeafContainerT objects in the octree |
Definition at line 253 of file octree2buf_base.hpp.
void pcl::octree::Octree2BufBase< LeafContainerT, BranchContainerT >::serializeNewLeafs | ( | std::vector< LeafContainerT * > & | leaf_container_vector_arg | ) |
Outputs a vector of all DataT elements from leaf nodes, that do not exist in the previous octree buffer.
leaf_container_vector_arg | vector of pointers to all LeafContainerT objects in the octree |
Definition at line 341 of file octree2buf_base.hpp.
Referenced by pcl::octree::OctreePointCloudChangeDetector< PointT, LeafContainerT, BranchContainerT >::getPointIndicesFromNewVoxels().
void pcl::octree::Octree2BufBase< LeafContainerT, BranchContainerT >::serializeTree | ( | std::vector< char > & | binary_tree_out_arg, |
bool | do_XOR_encoding_arg = false |
||
) |
Serialize octree into a binary output vector describing its branch node structure.
binary_tree_out_arg | reference to output vector for writing binary tree structure. |
do_XOR_encoding_arg | select if binary tree structure should be generated based on current octree (false) of based on a XOR comparison between current and previous octree |
Definition at line 206 of file octree2buf_base.hpp.
void pcl::octree::Octree2BufBase< LeafContainerT, BranchContainerT >::serializeTree | ( | std::vector< char > & | binary_tree_out_arg, |
std::vector< LeafContainerT * > & | leaf_container_vector_arg, | ||
bool | do_XOR_encoding_arg = false |
||
) |
Serialize octree into a binary output vector describing its branch node structure and and push all DataT elements stored in the octree to a vector.
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 |
do_XOR_encoding_arg | select if binary tree structure should be generated based on current octree (false) of based on a XOR comparison between current and previous octree |
Definition at line 225 of file octree2buf_base.hpp.
|
inlineprotectedvirtual |
Callback executed for every leaf node data during serialization.
Definition at line 925 of file octree2buf_base.h.
|
protected |
Recursively explore the octree and output binary octree description together with a vector of leaf node DataT content.
branch_arg | current branch node |
key_arg | reference to an octree key |
binary_tree_out_arg | binary output vector |
leaf_container_vector_arg | vector to return pointers to all leaf container in the tree. |
do_XOR_encoding_arg | select if binary tree structure should be generated based on current octree (false) of based on a XOR comparison between current and previous octree |
new_leafs_filter_arg | execute callback only for leaf nodes that did not exist in preceding buffer |
Definition at line 559 of file octree2buf_base.hpp.
References pcl::octree::BRANCH_NODE, pcl::octree::BufferedBranchNode< ContainerT >::getChildPtr(), pcl::octree::OctreeNode::getNodeType(), pcl::octree::BufferedBranchNode< ContainerT >::hasChild(), pcl::octree::LEAF_NODE, pcl::octree::OctreeKey::popBranch(), and pcl::octree::OctreeKey::pushBranch().
|
inlineprotected |
Assign new child node to branch.
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 629 of file octree2buf_base.h.
References pcl::octree::Octree2BufBase< LeafContainerT, BranchContainerT >::buffer_selector_, and pcl::octree::BufferedBranchNode< ContainerT >::setChildPtr().
void pcl::octree::Octree2BufBase< LeafContainerT, BranchContainerT >::setMaxVoxelIndex | ( | uindex_t | max_voxel_index_arg | ) |
Set the maximum amount of voxels per dimension.
max_voxel_index_arg | maximum amount of voxels per dimension |
Definition at line 62 of file octree2buf_base.hpp.
References pcl::octree::OctreeKey::maxDepth.
void pcl::octree::Octree2BufBase< LeafContainerT, BranchContainerT >::setTreeDepth | ( | uindex_t | depth_arg | ) |
Set the maximum depth of the octree.
depth_arg | maximum depth of octree |
Definition at line 87 of file octree2buf_base.hpp.
void pcl::octree::Octree2BufBase< LeafContainerT, BranchContainerT >::switchBuffers |
Switch buffers and reset current octree structure.
Definition at line 182 of file octree2buf_base.hpp.
|
protected |
Recursively explore the octree and remove unused branch and leaf nodes.
branch_arg | current branch node |
Definition at line 792 of file octree2buf_base.hpp.
References pcl::octree::BRANCH_NODE, pcl::octree::BufferedBranchNode< ContainerT >::getChildPtr(), pcl::octree::OctreeNode::getNodeType(), pcl::octree::BufferedBranchNode< ContainerT >::hasChild(), and pcl::octree::LEAF_NODE.
Referenced by pcl::octree::Octree2BufBase< LeafContainerT, BranchContainerT >::deleteCurrentBuffer(), and pcl::octree::Octree2BufBase< LeafContainerT, BranchContainerT >::deletePreviousBuffer().
|
friend |
Definition at line 205 of file octree2buf_base.h.
|
friend |
Definition at line 205 of file octree2buf_base.h.
|
friend |
Definition at line 205 of file octree2buf_base.h.
|
friend |
Definition at line 205 of file octree2buf_base.h.
|
friend |
Definition at line 205 of file octree2buf_base.h.
|
protected |
Amount of branch nodes
Definition at line 978 of file octree2buf_base.h.
Referenced by pcl::octree::Octree2BufBase< LeafContainerT, BranchContainerT >::getBranchCount(), and pcl::octree::Octree2BufBase< LeafContainerT, BranchContainerT >::operator=().
|
protected |
Currently active octree buffer
Definition at line 990 of file octree2buf_base.h.
Referenced by pcl::octree::Octree2BufBase< LeafContainerT, BranchContainerT >::branchHasChild(), pcl::octree::Octree2BufBase< LeafContainerT, BranchContainerT >::createBranchChild(), pcl::octree::Octree2BufBase< LeafContainerT, BranchContainerT >::createLeafChild(), pcl::octree::Octree2BufBase< LeafContainerT, BranchContainerT >::deleteBranchChild(), pcl::octree::Octree2BufBase< LeafContainerT, BranchContainerT >::deleteCurrentBuffer(), pcl::octree::Octree2BufBase< LeafContainerT, BranchContainerT >::getBranchBitPattern(), pcl::octree::Octree2BufBase< LeafContainerT, BranchContainerT >::getBranchChildPtr(), pcl::octree::Octree2BufBase< LeafContainerT, BranchContainerT >::operator=(), and pcl::octree::Octree2BufBase< LeafContainerT, BranchContainerT >::setBranchChildPtr().
|
protected |
Depth mask based on octree depth
Definition at line 984 of file octree2buf_base.h.
Referenced by pcl::octree::Octree2BufBase< LeafContainerT, BranchContainerT >::createLeaf(), pcl::octree::Octree2BufBase< LeafContainerT, BranchContainerT >::findLeaf(), pcl::octree::Octree2BufBase< LeafContainerT, BranchContainerT >::operator=(), and pcl::octree::Octree2BufBase< LeafContainerT, BranchContainerT >::removeLeaf().
|
protected |
Enable dynamic_depth.
Definition at line 1001 of file octree2buf_base.h.
Referenced by pcl::octree::Octree2BufBase< LeafContainerT, BranchContainerT >::operator=().
|
protected |
Amount of leaf nodes
Definition at line 975 of file octree2buf_base.h.
Referenced by pcl::octree::Octree2BufBase< LeafContainerT, BranchContainerT >::deleteCurrentBuffer(), pcl::octree::Octree2BufBase< LeafContainerT, BranchContainerT >::getLeafCount(), and pcl::octree::Octree2BufBase< LeafContainerT, BranchContainerT >::operator=().
|
protected |
key range
Definition at line 987 of file octree2buf_base.h.
Referenced by pcl::octree::Octree2BufBase< LeafContainerT, BranchContainerT >::operator=(), and pcl::octree::Octree2BufBase< LeafContainerT, BranchContainerT >::removeLeaf().
|
protected |
Octree depth.
Definition at line 997 of file octree2buf_base.h.
Referenced by pcl::octree::Octree2BufBase< LeafContainerT, BranchContainerT >::getTreeDepth(), pcl::octree::Octree2BufBase< LeafContainerT, BranchContainerT >::leaf_breadth_begin(), and pcl::octree::Octree2BufBase< LeafContainerT, BranchContainerT >::operator=().
|
protected |
Pointer to root branch node of octree
Definition at line 981 of file octree2buf_base.h.
Referenced by pcl::octree::Octree2BufBase< LeafContainerT, BranchContainerT >::createLeaf(), pcl::octree::Octree2BufBase< LeafContainerT, BranchContainerT >::deleteCurrentBuffer(), pcl::octree::Octree2BufBase< LeafContainerT, BranchContainerT >::deletePreviousBuffer(), pcl::octree::Octree2BufBase< LeafContainerT, BranchContainerT >::findLeaf(), pcl::octree::Octree2BufBase< LeafContainerT, BranchContainerT >::getRootNode(), pcl::octree::Octree2BufBase< LeafContainerT, BranchContainerT >::operator=(), and pcl::octree::Octree2BufBase< LeafContainerT, BranchContainerT >::removeLeaf().
|
protected |
flags indicating if unused branches and leafs might exist in previous buffer
Definition at line 994 of file octree2buf_base.h.
Referenced by pcl::octree::Octree2BufBase< LeafContainerT, BranchContainerT >::operator=(), and pcl::octree::Octree2BufBase< LeafContainerT, BranchContainerT >::removeLeaf().