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_ |
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... |
|
OctreeKey | max_key_ |
key range More... |
|
unsigned char | buffer_selector_ |
Currently active octree buffer More... |
|
bool | tree_dirty_flag_ |
flags indicating if unused branches and leafs might exist in previous buffer More... |
|
uindex_t | octree_depth_ |
Octree depth. More... |
|
bool | dynamic_depth_enabled_ |
Enable dynamic_depth. More... |
|
Detailed Description
template<typename LeafContainerT = index_t, typename BranchContainerT = OctreeContainerEmpty>
class pcl::octree::Octree2BufBase< LeafContainerT, BranchContainerT >
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).
- 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.
Definition at line 217 of file octree2buf_base.h.
Member Typedef Documentation
BranchContainer
using pcl::octree::Octree2BufBase< LeafContainerT, BranchContainerT >::BranchContainer = BranchContainerT |
Definition at line 232 of file octree2buf_base.h.
BranchNode
using pcl::octree::Octree2BufBase< LeafContainerT, BranchContainerT >::BranchNode = BufferedBranchNode<BranchContainerT> |
Definition at line 229 of file octree2buf_base.h.
BreadthFirstIterator
using pcl::octree::Octree2BufBase< LeafContainerT, BranchContainerT >::BreadthFirstIterator = OctreeBreadthFirstIterator<OctreeT> |
Definition at line 287 of file octree2buf_base.h.
ConstBreadthFirstIterator
using pcl::octree::Octree2BufBase< LeafContainerT, BranchContainerT >::ConstBreadthFirstIterator = const OctreeBreadthFirstIterator<OctreeT> |
Definition at line 288 of file octree2buf_base.h.
ConstDepthFirstIterator
using pcl::octree::Octree2BufBase< LeafContainerT, BranchContainerT >::ConstDepthFirstIterator = const OctreeDepthFirstIterator<OctreeT> |
Definition at line 274 of file octree2buf_base.h.
ConstIterator
using pcl::octree::Octree2BufBase< LeafContainerT, BranchContainerT >::ConstIterator = const OctreeDepthFirstIterator<OctreeT> |
Definition at line 237 of file octree2buf_base.h.
ConstLeafNodeBreadthIterator
using pcl::octree::Octree2BufBase< LeafContainerT, BranchContainerT >::ConstLeafNodeBreadthIterator = const OctreeLeafNodeBreadthFirstIterator<OctreeT> |
Definition at line 303 of file octree2buf_base.h.
ConstLeafNodeDepthFirstIterator
using pcl::octree::Octree2BufBase< LeafContainerT, BranchContainerT >::ConstLeafNodeDepthFirstIterator = const OctreeLeafNodeDepthFirstIterator<OctreeT> |
Definition at line 259 of file octree2buf_base.h.
ConstLeafNodeIterator
using pcl::octree::Octree2BufBase< LeafContainerT, BranchContainerT >::ConstLeafNodeIterator = const OctreeLeafNodeDepthFirstIterator<OctreeT> |
Definition at line 254 of file octree2buf_base.h.
DepthFirstIterator
using pcl::octree::Octree2BufBase< LeafContainerT, BranchContainerT >::DepthFirstIterator = OctreeDepthFirstIterator<OctreeT> |
Definition at line 273 of file octree2buf_base.h.
Iterator
using pcl::octree::Octree2BufBase< LeafContainerT, BranchContainerT >::Iterator = OctreeDepthFirstIterator<OctreeT> |
Definition at line 236 of file octree2buf_base.h.
LeafContainer
using pcl::octree::Octree2BufBase< LeafContainerT, BranchContainerT >::LeafContainer = LeafContainerT |
Definition at line 233 of file octree2buf_base.h.
LeafNode
using pcl::octree::Octree2BufBase< LeafContainerT, BranchContainerT >::LeafNode = OctreeLeafNode<LeafContainerT> |
Definition at line 230 of file octree2buf_base.h.
LeafNodeBreadthIterator
using pcl::octree::Octree2BufBase< LeafContainerT, BranchContainerT >::LeafNodeBreadthIterator = OctreeLeafNodeBreadthFirstIterator<OctreeT> |
Definition at line 301 of file octree2buf_base.h.
LeafNodeDepthFirstIterator
using pcl::octree::Octree2BufBase< LeafContainerT, BranchContainerT >::LeafNodeDepthFirstIterator = OctreeLeafNodeDepthFirstIterator<OctreeT> |
Definition at line 257 of file octree2buf_base.h.
LeafNodeIterator
using pcl::octree::Octree2BufBase< LeafContainerT, BranchContainerT >::LeafNodeIterator = OctreeLeafNodeDepthFirstIterator<OctreeT> |
Definition at line 253 of file octree2buf_base.h.
OctreeT
using pcl::octree::Octree2BufBase< LeafContainerT, BranchContainerT >::OctreeT = Octree2BufBase<LeafContainerT, BranchContainerT> |
Definition at line 220 of file octree2buf_base.h.
Constructor & Destructor Documentation
Octree2BufBase() [1/2]
pcl::octree::Octree2BufBase< LeafContainerT, BranchContainerT >::Octree2BufBase |
Empty constructor.
Definition at line 46 of file octree2buf_base.hpp.
~Octree2BufBase()
|
virtual |
Empty deconstructor.
Definition at line 59 of file octree2buf_base.hpp.
Octree2BufBase() [2/2]
|
inline |
Copy constructor.
Definition at line 325 of file octree2buf_base.h.
Member Function Documentation
begin()
|
inline |
Definition at line 239 of file octree2buf_base.h.
branchHasChild()
|
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 601 of file octree2buf_base.h.
breadth_begin()
|
inline |
Definition at line 290 of file octree2buf_base.h.
breadth_end()
|
inline |
Definition at line 295 of file octree2buf_base.h.
createBranchChild()
|
inlineprotected |
Fetch and add a new branch child to a branch class in current buffer.
- 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 786 of file octree2buf_base.h.
createLeaf() [1/2]
|
inlineprotected |
Create a leaf node.
- Note
- If the leaf node at the given octree node does not exist, it will be created and added to the tree.
- Parameters
-
key_arg octree key addressing a leaf node.
- Returns
- pointer to an existing or created leaf container.
Definition at line 554 of file octree2buf_base.h.
createLeaf() [2/2]
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).
- 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 120 of file octree2buf_base.hpp.
createLeafChild()
|
inlineprotected |
Fetch 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 802 of file octree2buf_base.h.
createLeafRecursive()
|
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 container parent_of_leaf_arg return pointer to parent of leaf node branch_reset_arg Reset pointer array of current branch
- Returns
- depth mask at which leaf node was created/found
Definition at line 357 of file octree2buf_base.hpp.
Referenced by pcl::octree::Octree2BufBase< OctreeContainerPointIndices, OctreeContainerEmpty >::createLeaf().
deleteBranch()
|
inlineprotected |
Delete branch and all its subchilds from octree (both buffers)
- Parameters
-
branch_arg reference to octree branch class
Definition at line 760 of file octree2buf_base.h.
Referenced by pcl::octree::Octree2BufBase< OctreeContainerPointIndices, OctreeContainerEmpty >::deleteBranchChild().
deleteBranchChild() [1/2]
|
inlineprotected |
Delete child node and all its subchilds from octree in specific buffer.
- Parameters
-
branch_arg reference to octree branch class buffer_selector_arg buffer selector child_idx_arg index to child node
Definition at line 714 of file octree2buf_base.h.
Referenced by pcl::octree::Octree2BufBase< OctreeContainerPointIndices, OctreeContainerEmpty >::deleteBranch(), and pcl::octree::Octree2BufBase< OctreeContainerPointIndices, OctreeContainerEmpty >::deleteBranchChild().
deleteBranchChild() [2/2]
|
inlineprotected |
Delete child node and all its subchilds from octree in current buffer.
- Parameters
-
branch_arg reference to octree branch class child_idx_arg index to child node
Definition at line 751 of file octree2buf_base.h.
deleteCurrentBuffer()
|
inline |
Delete the octree structure in the current buffer.
Definition at line 443 of file octree2buf_base.h.
deleteLeafRecursive()
|
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.
Definition at line 504 of file octree2buf_base.hpp.
Referenced by pcl::octree::Octree2BufBase< OctreeContainerPointIndices, OctreeContainerEmpty >::removeLeaf().
deletePreviousBuffer()
|
inline |
Delete octree structure of previous buffer.
Definition at line 436 of file octree2buf_base.h.
deleteTree()
void pcl::octree::Octree2BufBase< LeafContainerT, BranchContainerT >::deleteTree |
Delete the octree structure and its leaf nodes.
Definition at line 162 of file octree2buf_base.hpp.
depth_begin()
|
inline |
Definition at line 276 of file octree2buf_base.h.
depth_end()
|
inline |
Definition at line 281 of file octree2buf_base.h.
deserializeTree() [1/2]
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(..).
- Parameters
-
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 270 of file octree2buf_base.hpp.
deserializeTree() [2/2]
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.
- Parameters
-
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 299 of file octree2buf_base.hpp.
deserializeTreeCallback()
|
inlineprotectedvirtual |
Callback executed for every leaf node data during deserialization.
Definition at line 926 of file octree2buf_base.h.
deserializeTreeRecursive()
|
protected |
Rebuild an octree based on binary XOR octree description and DataT objects for leaf node initialization.
- 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_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 641 of file octree2buf_base.hpp.
end()
|
inline |
Definition at line 244 of file octree2buf_base.h.
existLeaf() [1/2]
|
inlineprotected |
Check if leaf doesn't exist in the octree.
- Parameters
-
key_arg octree key addressing a leaf node.
- Returns
- "true" if leaf node is found; "false" otherwise
Definition at line 572 of file octree2buf_base.h.
existLeaf() [2/2]
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).
- 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 134 of file octree2buf_base.hpp.
findLeaf() [1/2]
|
inlineprotected |
Find leaf node.
- Parameters
-
key_arg octree key addressing a leaf node.
- Returns
- pointer to leaf container. If leaf node is not found, this pointer returns 0.
Definition at line 540 of file octree2buf_base.h.
findLeaf() [2/2]
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).
- 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 106 of file octree2buf_base.hpp.
Referenced by pcl::octree::Octree2BufBase< OctreeContainerPointIndices, OctreeContainerEmpty >::existLeaf().
findLeafRecursive()
|
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 container class
Definition at line 468 of file octree2buf_base.hpp.
Referenced by pcl::octree::Octree2BufBase< OctreeContainerPointIndices, OctreeContainerEmpty >::findLeaf().
getBranchBitPattern() [1/2]
|
inlineprotected |
Generate bit pattern reflecting the existence of child node pointers for current buffer.
- Parameters
-
branch_arg reference to octree branch class
- Returns
- a single byte with 8 bits of child node information
Definition at line 637 of file octree2buf_base.h.
getBranchBitPattern() [2/2]
|
inlineprotected |
Generate bit pattern reflecting the existence of child node pointers in specific buffer.
- Parameters
-
branch_arg reference to octree branch class bufferSelector_arg buffer selector
- Returns
- a single byte with 8 bits of child node information
Definition at line 658 of file octree2buf_base.h.
getBranchChildPtr()
|
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 613 of file octree2buf_base.h.
getBranchCount()
|
inline |
Return the amount of existing branches in the octree.
- Returns
- amount of branch nodes.
Definition at line 424 of file octree2buf_base.h.
getBranchXORBitPattern()
|
inlineprotected |
Generate XOR bit pattern reflecting differences between the two octree buffers.
- Parameters
-
branch_arg reference to octree branch class
- Returns
- a single byte with 8 bits of child node XOR difference information
Definition at line 679 of file octree2buf_base.h.
Referenced by pcl::octree::Octree2BufBase< OctreeContainerPointIndices, OctreeContainerEmpty >::hasBranchChanges().
getLeafCount()
|
inline |
Return the amount of existing leafs in the octree.
- Returns
- amount of registered leaf nodes.
Definition at line 415 of file octree2buf_base.h.
getRootNode()
|
inlineprotected |
Retrieve root node.
Definition at line 529 of file octree2buf_base.h.
getTreeDepth()
|
inline |
Get the maximum depth of the octree.
- Returns
- depth_arg: maximum depth of octree
Definition at line 369 of file octree2buf_base.h.
hasBranchChanges()
|
inlineprotected |
Test if branch changed between previous and current buffer.
- Parameters
-
branch_arg reference to octree branch class
- Returns
- "true", if child node information differs between current and previous octree buffer
Definition at line 703 of file octree2buf_base.h.
leaf_breadth_begin()
|
inline |
Definition at line 306 of file octree2buf_base.h.
leaf_breadth_end()
|
inline |
Definition at line 313 of file octree2buf_base.h.
leaf_depth_begin()
|
inline |
Definition at line 261 of file octree2buf_base.h.
leaf_depth_end()
|
inline |
Definition at line 267 of file octree2buf_base.h.
octreeCanResize()
|
inlineprotected |
Test if octree is able to dynamically change its depth.
This is required for adaptive bounding box adjustment.
- Returns
- "false" - not resizeable due to XOR serialization
Definition at line 944 of file octree2buf_base.h.
operator=()
|
inline |
Copy constructor.
Definition at line 339 of file octree2buf_base.h.
printBinary()
|
inlineprotected |
Prints binary representation of a byte - used for debugging.
- Parameters
-
data_arg - byte to be printed to stdout
Definition at line 953 of file octree2buf_base.h.
removeLeaf() [1/2]
|
inlineprotected |
Remove leaf node from octree.
- Parameters
-
key_arg octree key addressing a leaf node.
Definition at line 581 of file octree2buf_base.h.
removeLeaf() [2/2]
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).
- 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 148 of file octree2buf_base.hpp.
serializeLeafs()
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.
- Parameters
-
leaf_container_vector_arg vector of pointers to all LeafContainerT objects in the octree
Definition at line 250 of file octree2buf_base.hpp.
serializeNewLeafs()
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.
- Parameters
-
leaf_container_vector_arg vector of pointers to all LeafContainerT objects in the octree
Definition at line 338 of file octree2buf_base.hpp.
serializeTree() [1/2]
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.
- Parameters
-
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 203 of file octree2buf_base.hpp.
serializeTree() [2/2]
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.
- 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 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 222 of file octree2buf_base.hpp.
serializeTreeCallback()
|
inlineprotectedvirtual |
Callback executed for every leaf node data during serialization.
Definition at line 920 of file octree2buf_base.h.
serializeTreeRecursive()
|
protected |
Recursively explore the octree and output binary octree description together with a vector of leaf node DataT content.
- Parameters
-
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 556 of file octree2buf_base.hpp.
setBranchChildPtr()
|
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 624 of file octree2buf_base.h.
setMaxVoxelIndex()
void pcl::octree::Octree2BufBase< LeafContainerT, BranchContainerT >::setMaxVoxelIndex | ( | uindex_t | max_voxel_index_arg | ) |
Set the maximum amount of voxels per dimension.
- Parameters
-
max_voxel_index_arg maximum amount of voxels per dimension
Definition at line 69 of file octree2buf_base.hpp.
setTreeDepth()
void pcl::octree::Octree2BufBase< LeafContainerT, BranchContainerT >::setTreeDepth | ( | uindex_t | depth_arg | ) |
Set the maximum depth of the octree.
- Parameters
-
depth_arg maximum depth of octree
Definition at line 89 of file octree2buf_base.hpp.
switchBuffers()
void pcl::octree::Octree2BufBase< LeafContainerT, BranchContainerT >::switchBuffers |
Switch buffers and reset current octree structure.
Definition at line 179 of file octree2buf_base.hpp.
treeCleanUpRecursive()
|
protected |
Recursively explore the octree and remove unused branch and leaf nodes.
- Parameters
-
branch_arg current branch node
Definition at line 789 of file octree2buf_base.hpp.
Referenced by pcl::octree::Octree2BufBase< OctreeContainerPointIndices, OctreeContainerEmpty >::deleteCurrentBuffer(), and pcl::octree::Octree2BufBase< OctreeContainerPointIndices, OctreeContainerEmpty >::deletePreviousBuffer().
Friends And Related Function Documentation
OctreeBreadthFirstIterator< OctreeT >
|
friend |
Definition at line 225 of file octree2buf_base.h.
OctreeDepthFirstIterator< OctreeT >
|
friend |
Definition at line 224 of file octree2buf_base.h.
OctreeIteratorBase< OctreeT >
|
friend |
Definition at line 223 of file octree2buf_base.h.
OctreeLeafNodeBreadthFirstIterator< OctreeT >
|
friend |
Definition at line 227 of file octree2buf_base.h.
OctreeLeafNodeDepthFirstIterator< OctreeT >
|
friend |
Definition at line 226 of file octree2buf_base.h.
Member Data Documentation
branch_count_
|
protected |
Amount of branch nodes
Definition at line 973 of file octree2buf_base.h.
Referenced by pcl::octree::Octree2BufBase< OctreeContainerPointIndices, OctreeContainerEmpty >::getBranchCount(), and pcl::octree::Octree2BufBase< OctreeContainerPointIndices, OctreeContainerEmpty >::operator=().
buffer_selector_
|
protected |
Currently active octree buffer
Definition at line 985 of file octree2buf_base.h.
Referenced by pcl::octree::Octree2BufBase< OctreeContainerPointIndices, OctreeContainerEmpty >::branchHasChild(), pcl::octree::Octree2BufBase< OctreeContainerPointIndices, OctreeContainerEmpty >::createBranchChild(), pcl::octree::Octree2BufBase< OctreeContainerPointIndices, OctreeContainerEmpty >::createLeafChild(), pcl::octree::Octree2BufBase< OctreeContainerPointIndices, OctreeContainerEmpty >::deleteBranchChild(), pcl::octree::Octree2BufBase< OctreeContainerPointIndices, OctreeContainerEmpty >::deleteCurrentBuffer(), pcl::octree::Octree2BufBase< OctreeContainerPointIndices, OctreeContainerEmpty >::getBranchBitPattern(), pcl::octree::Octree2BufBase< OctreeContainerPointIndices, OctreeContainerEmpty >::getBranchChildPtr(), pcl::octree::Octree2BufBase< OctreeContainerPointIndices, OctreeContainerEmpty >::operator=(), and pcl::octree::Octree2BufBase< OctreeContainerPointIndices, OctreeContainerEmpty >::setBranchChildPtr().
depth_mask_
|
protected |
Depth mask based on octree depth
Definition at line 979 of file octree2buf_base.h.
Referenced by pcl::octree::Octree2BufBase< OctreeContainerPointIndices, OctreeContainerEmpty >::createLeaf(), pcl::octree::Octree2BufBase< OctreeContainerPointIndices, OctreeContainerEmpty >::findLeaf(), pcl::octree::Octree2BufBase< OctreeContainerPointIndices, OctreeContainerEmpty >::operator=(), and pcl::octree::Octree2BufBase< OctreeContainerPointIndices, OctreeContainerEmpty >::removeLeaf().
dynamic_depth_enabled_
|
protected |
Enable dynamic_depth.
- Note
- Note that this parameter is ignored in octree2buf!
Definition at line 996 of file octree2buf_base.h.
Referenced by pcl::octree::Octree2BufBase< OctreeContainerPointIndices, OctreeContainerEmpty >::operator=().
leaf_count_
|
protected |
Amount of leaf nodes
Definition at line 970 of file octree2buf_base.h.
Referenced by pcl::octree::Octree2BufBase< OctreeContainerPointIndices, OctreeContainerEmpty >::deleteCurrentBuffer(), pcl::octree::Octree2BufBase< OctreeContainerPointIndices, OctreeContainerEmpty >::getLeafCount(), and pcl::octree::Octree2BufBase< OctreeContainerPointIndices, OctreeContainerEmpty >::operator=().
max_key_
|
protected |
key range
Definition at line 982 of file octree2buf_base.h.
Referenced by pcl::octree::Octree2BufBase< OctreeContainerPointIndices, OctreeContainerEmpty >::operator=(), and pcl::octree::Octree2BufBase< OctreeContainerPointIndices, OctreeContainerEmpty >::removeLeaf().
octree_depth_
|
protected |
Octree depth.
Definition at line 992 of file octree2buf_base.h.
Referenced by pcl::octree::Octree2BufBase< OctreeContainerPointIndices, OctreeContainerEmpty >::getTreeDepth(), pcl::octree::Octree2BufBase< OctreeContainerPointIndices, OctreeContainerEmpty >::leaf_breadth_begin(), and pcl::octree::Octree2BufBase< OctreeContainerPointIndices, OctreeContainerEmpty >::operator=().
root_node_
|
protected |
Pointer to root branch node of octree
Definition at line 976 of file octree2buf_base.h.
Referenced by pcl::octree::Octree2BufBase< OctreeContainerPointIndices, OctreeContainerEmpty >::createLeaf(), pcl::octree::Octree2BufBase< OctreeContainerPointIndices, OctreeContainerEmpty >::deleteCurrentBuffer(), pcl::octree::Octree2BufBase< OctreeContainerPointIndices, OctreeContainerEmpty >::deletePreviousBuffer(), pcl::octree::Octree2BufBase< OctreeContainerPointIndices, OctreeContainerEmpty >::findLeaf(), pcl::octree::Octree2BufBase< OctreeContainerPointIndices, OctreeContainerEmpty >::getRootNode(), pcl::octree::Octree2BufBase< OctreeContainerPointIndices, OctreeContainerEmpty >::operator=(), and pcl::octree::Octree2BufBase< OctreeContainerPointIndices, OctreeContainerEmpty >::removeLeaf().
tree_dirty_flag_
|
protected |
flags indicating if unused branches and leafs might exist in previous buffer
Definition at line 989 of file octree2buf_base.h.
Referenced by pcl::octree::Octree2BufBase< OctreeContainerPointIndices, OctreeContainerEmpty >::operator=(), and pcl::octree::Octree2BufBase< OctreeContainerPointIndices, OctreeContainerEmpty >::removeLeaf().
The documentation for this class was generated from the following files:
- pcl/octree/octree2buf_base.h
- pcl/octree/impl/octree2buf_base.hpp
© 2009–2012, Willow Garage, Inc.
© 2012–, Open Perception, Inc.
Licensed under the BSD License.
https://pointclouds.org/documentation/classpcl_1_1octree_1_1_octree2_buf_base.html