Point Cloud Library (PCL)  1.6.0
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Defines
Public Types | Public Member Functions | Friends
pcl::octree::OctreeBase< DataT, LeafT, BranchT > Class Template Reference

Octree class. More...

#include <pcl/octree/octree_base.h>

List of all members.

Public Types

typedef OctreeBase< DataT,
OctreeContainerDataT< DataT >
, OctreeContainerEmpty< DataT > > 
SingleObjLeafContainer
typedef OctreeBase< DataT,
OctreeContainerDataTVector
< DataT >
, OctreeContainerEmpty< DataT > > 
MultipleObjsLeafContainer
typedef OctreeBase< DataT,
LeafT, BranchT > 
OctreeT
typedef OctreeBranchNode< BranchT > BranchNode
typedef OctreeLeafNode< LeafT > LeafNode
typedef
OctreeDepthFirstIterator
< DataT, OctreeT
Iterator
typedef const
OctreeDepthFirstIterator
< DataT, OctreeT
ConstIterator
typedef OctreeLeafNodeIterator
< DataT, OctreeT
LeafNodeIterator
typedef const
OctreeLeafNodeIterator< DataT,
OctreeT
ConstLeafNodeIterator
typedef
OctreeDepthFirstIterator
< DataT, OctreeT
DepthFirstIterator
typedef const
OctreeDepthFirstIterator
< DataT, OctreeT
ConstDepthFirstIterator
typedef
OctreeBreadthFirstIterator
< DataT, OctreeT
BreadthFirstIterator
typedef const
OctreeBreadthFirstIterator
< DataT, OctreeT
ConstBreadthFirstIterator

Public Member Functions

 OctreeBase ()
 Empty constructor.
virtual ~OctreeBase ()
 Empty deconstructor.
 OctreeBase (const OctreeBase &source)
 Copy constructor.
OctreeBaseoperator= (const OctreeBase &source)
 Copy operator.
void setMaxVoxelIndex (unsigned int maxVoxelIndex_arg)
 Set the maximum amount of voxels per dimension.
void setTreeDepth (unsigned int depth_arg)
 Set the maximum depth of the octree.
unsigned int getTreeDepth () const
 Get the maximum depth of the octree.
void enableDynamicDepth (size_t maxObjsPerLeaf)
 Enable dynamic octree structure.
void addData (unsigned int idxX_arg, unsigned int idxY_arg, unsigned int idxZ_arg, const DataT &data_arg)
 Add a const DataT element to leaf node at (idxX, idxY, idxZ).
bool getData (unsigned int idxX_arg, unsigned int idxY_arg, unsigned int idxZ_arg, DataT &data_arg) const
 Retrieve a DataT element from leaf node at (idxX, idxY, idxZ).
bool existLeaf (unsigned int idxX_arg, unsigned int idxY_arg, unsigned int idxZ_arg) const
 Check for the existence of leaf node at (idxX, idxY, idxZ).
void removeLeaf (unsigned int idxX_arg, unsigned int idxY_arg, unsigned int idxZ_arg)
 Remove leaf node at (idxX_arg, idxY_arg, idxZ_arg).
std::size_t getLeafCount () const
 Return the amount of existing leafs in the octree.
std::size_t getBranchCount () const
 Return the amount of existing branches in the octree.
void deleteTree (bool freeMemory_arg=true)
 Delete the octree structure and its leaf nodes.
void serializeTree (std::vector< char > &binaryTreeOut_arg)
 Serialize octree into a binary output vector describing its branch node structure.
void serializeTree (std::vector< char > &binaryTreeOut_arg, std::vector< DataT > &dataVector_arg)
 Serialize octree into a binary output vector describing its branch node structure and push all DataT elements stored in the octree to a vector.
void serializeLeafs (std::vector< DataT > &dataVector_arg)
 Outputs a vector of all DataT elements that are stored within the octree leaf nodes.
void deserializeTree (std::vector< char > &binaryTreeIn_arg)
 Deserialize a binary octree description vector and create a corresponding octree structure.
void deserializeTree (std::vector< char > &binaryTreeIn_arg, std::vector< DataT > &dataVector_arg)
 Deserialize a binary octree description and create a corresponding octree structure.

Friends

class OctreeIteratorBase< DataT, OctreeT >
class OctreeDepthFirstIterator< DataT, OctreeT >
class OctreeBreadthFirstIterator< DataT, OctreeT >
class OctreeLeafNodeIterator< DataT, OctreeT >

Detailed Description

template<typename DataT, typename LeafT = OctreeContainerDataT<DataT>, typename BranchT = OctreeContainerEmpty<DataT>>
class pcl::octree::OctreeBase< DataT, LeafT, BranchT >

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.
Note: The tree depth equates to the bit length of the voxel indices.
Author:
Julius Kammerl (julius@kammerl.de)

Definition at line 64 of file octree_base.h.


Member Typedef Documentation

template<typename DataT, typename LeafT = OctreeContainerDataT<DataT>, typename BranchT = OctreeContainerEmpty<DataT>>
typedef OctreeBranchNode<BranchT> pcl::octree::OctreeBase< DataT, LeafT, BranchT >::BranchNode
template<typename DataT, typename LeafT = OctreeContainerDataT<DataT>, typename BranchT = OctreeContainerEmpty<DataT>>
typedef OctreeBreadthFirstIterator<DataT, OctreeT> pcl::octree::OctreeBase< DataT, LeafT, BranchT >::BreadthFirstIterator
template<typename DataT, typename LeafT = OctreeContainerDataT<DataT>, typename BranchT = OctreeContainerEmpty<DataT>>
typedef const OctreeBreadthFirstIterator<DataT, OctreeT> pcl::octree::OctreeBase< DataT, LeafT, BranchT >::ConstBreadthFirstIterator
template<typename DataT, typename LeafT = OctreeContainerDataT<DataT>, typename BranchT = OctreeContainerEmpty<DataT>>
typedef const OctreeDepthFirstIterator<DataT, OctreeT> pcl::octree::OctreeBase< DataT, LeafT, BranchT >::ConstDepthFirstIterator
template<typename DataT, typename LeafT = OctreeContainerDataT<DataT>, typename BranchT = OctreeContainerEmpty<DataT>>
typedef const OctreeDepthFirstIterator<DataT, OctreeT> pcl::octree::OctreeBase< DataT, LeafT, BranchT >::ConstIterator
template<typename DataT, typename LeafT = OctreeContainerDataT<DataT>, typename BranchT = OctreeContainerEmpty<DataT>>
typedef const OctreeLeafNodeIterator<DataT, OctreeT> pcl::octree::OctreeBase< DataT, LeafT, BranchT >::ConstLeafNodeIterator
template<typename DataT, typename LeafT = OctreeContainerDataT<DataT>, typename BranchT = OctreeContainerEmpty<DataT>>
typedef OctreeDepthFirstIterator<DataT, OctreeT> pcl::octree::OctreeBase< DataT, LeafT, BranchT >::DepthFirstIterator
template<typename DataT, typename LeafT = OctreeContainerDataT<DataT>, typename BranchT = OctreeContainerEmpty<DataT>>
typedef OctreeDepthFirstIterator<DataT, OctreeT> pcl::octree::OctreeBase< DataT, LeafT, BranchT >::Iterator
template<typename DataT, typename LeafT = OctreeContainerDataT<DataT>, typename BranchT = OctreeContainerEmpty<DataT>>
typedef OctreeLeafNode<LeafT> pcl::octree::OctreeBase< DataT, LeafT, BranchT >::LeafNode
template<typename DataT, typename LeafT = OctreeContainerDataT<DataT>, typename BranchT = OctreeContainerEmpty<DataT>>
typedef OctreeLeafNodeIterator<DataT, OctreeT> pcl::octree::OctreeBase< DataT, LeafT, BranchT >::LeafNodeIterator
template<typename DataT, typename LeafT = OctreeContainerDataT<DataT>, typename BranchT = OctreeContainerEmpty<DataT>>
typedef OctreeBase<DataT, OctreeContainerDataTVector<DataT>, OctreeContainerEmpty<DataT> > pcl::octree::OctreeBase< DataT, LeafT, BranchT >::MultipleObjsLeafContainer

Definition at line 70 of file octree_base.h.

template<typename DataT, typename LeafT = OctreeContainerDataT<DataT>, typename BranchT = OctreeContainerEmpty<DataT>>
typedef OctreeBase<DataT, LeafT, BranchT> pcl::octree::OctreeBase< DataT, LeafT, BranchT >::OctreeT
template<typename DataT, typename LeafT = OctreeContainerDataT<DataT>, typename BranchT = OctreeContainerEmpty<DataT>>
typedef OctreeBase<DataT, OctreeContainerDataT<DataT>, OctreeContainerEmpty<DataT> > pcl::octree::OctreeBase< DataT, LeafT, BranchT >::SingleObjLeafContainer

Definition at line 69 of file octree_base.h.


Constructor & Destructor Documentation

template<typename DataT , typename LeafT , typename BranchT >
pcl::octree::OctreeBase< DataT, LeafT, BranchT >::OctreeBase ( )

Empty constructor.

Definition at line 57 of file octree_base.hpp.

template<typename DataT , typename LeafT , typename BranchT >
pcl::octree::OctreeBase< DataT, LeafT, BranchT >::~OctreeBase ( ) [virtual]

Empty deconstructor.

Definition at line 73 of file octree_base.hpp.

template<typename DataT, typename LeafT = OctreeContainerDataT<DataT>, typename BranchT = OctreeContainerEmpty<DataT>>
pcl::octree::OctreeBase< DataT, LeafT, BranchT >::OctreeBase ( const OctreeBase< DataT, LeafT, BranchT > &  source) [inline]

Copy constructor.

Definition at line 104 of file octree_base.h.


Member Function Documentation

template<typename DataT, typename LeafT , typename BranchT >
void pcl::octree::OctreeBase< DataT, LeafT, BranchT >::addData ( unsigned int  idxX_arg,
unsigned int  idxY_arg,
unsigned int  idxZ_arg,
const DataT &  data_arg 
)

Add a const DataT element to leaf node at (idxX, idxY, idxZ).

If leaf node does not exist, it is created and added to the octree.

Parameters:
idxX_arg,:index of leaf node in the X axis.
idxY_arg,:index of leaf node in the Y axis.
idxZ_arg,:index of leaf node in the Z axis.
data_arg,:const reference to DataT object to be added.

Definition at line 117 of file octree_base.hpp.

template<typename DataT , typename LeafT , typename BranchT >
void pcl::octree::OctreeBase< DataT, LeafT, BranchT >::deleteTree ( bool  freeMemory_arg = true)

Delete the octree structure and its leaf nodes.

Parameters:
freeMemory_arg,:if "true", allocated octree nodes are deleted, otherwise they are pushed to the octree node pool

Reimplemented in pcl::octree::OctreePointCloud< PointT, LeafT, BranchT, OctreeBase< int, LeafT, BranchT > >, and pcl::octree::OctreePointCloud< PointT, LeafT, BranchT >.

Definition at line 173 of file octree_base.hpp.

template<typename DataT , typename LeafT , typename BranchT >
void pcl::octree::OctreeBase< DataT, LeafT, BranchT >::deserializeTree ( std::vector< char > &  binaryTreeIn_arg)

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

Leaf nodes are initialized with getDataTByKey(..).

Parameters:
binaryTreeIn_arg,:reference to input vector for reading binary tree structure.

Definition at line 249 of file octree_base.hpp.

template<typename DataT, typename LeafT , typename BranchT >
void pcl::octree::OctreeBase< DataT, LeafT, BranchT >::deserializeTree ( std::vector< char > &  binaryTreeIn_arg,
std::vector< DataT > &  dataVector_arg 
)

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

Leaf nodes are initialized with DataT elements from the dataVector.

Parameters:
binaryTreeIn_arg,:reference to input vector for reading binary tree structure.
dataVector_arg,:reference to DataT vector that provides DataT objects for initializing leaf nodes.

Definition at line 271 of file octree_base.hpp.

template<typename DataT, typename LeafT = OctreeContainerDataT<DataT>, typename BranchT = OctreeContainerEmpty<DataT>>
void pcl::octree::OctreeBase< DataT, LeafT, BranchT >::enableDynamicDepth ( size_t  maxObjsPerLeaf) [inline]

Enable dynamic octree structure.

Note:
Leaf nodes are kept as close to the root as possible and are only expanded if the number of DataT objects within a leaf node exceeds a fixed limit.
Returns:
maxObjsPerLeaf: maximum number of DataT objects per leaf

Definition at line 157 of file octree_base.h.

template<typename DataT , typename LeafT , typename BranchT >
bool pcl::octree::OctreeBase< DataT, LeafT, BranchT >::existLeaf ( unsigned int  idxX_arg,
unsigned int  idxY_arg,
unsigned int  idxZ_arg 
) const

Check for the existence of leaf node at (idxX, idxY, idxZ).

Parameters:
idxX_arg,:index of leaf node in the X axis.
idxY_arg,:index of leaf node in the Y axis.
idxZ_arg,:index of leaf node in the Z axis.
Returns:
"true" if leaf node search is successful, otherwise it returns "false".

Definition at line 149 of file octree_base.hpp.

template<typename DataT, typename LeafT = OctreeContainerDataT<DataT>, typename BranchT = OctreeContainerEmpty<DataT>>
std::size_t pcl::octree::OctreeBase< DataT, LeafT, BranchT >::getBranchCount ( ) const [inline]

Return the amount of existing branches in the octree.

Returns:
amount of branch nodes.

Definition at line 213 of file octree_base.h.

template<typename DataT, typename LeafT , typename BranchT >
bool pcl::octree::OctreeBase< DataT, LeafT, BranchT >::getData ( unsigned int  idxX_arg,
unsigned int  idxY_arg,
unsigned int  idxZ_arg,
DataT &  data_arg 
) const

Retrieve a DataT element from leaf node at (idxX, idxY, idxZ).

It returns false if leaf node does not exist.

Parameters:
idxX_arg,:index of leaf node in the X axis.
idxY_arg,:index of leaf node in the Y axis.
idxZ_arg,:index of leaf node in the Z axis.
data_arg,:reference to DataT object that contains content of leaf node if search was successful.
Returns:
"true" if leaf node search is successful, otherwise it returns "false".

Definition at line 129 of file octree_base.hpp.

template<typename DataT, typename LeafT = OctreeContainerDataT<DataT>, typename BranchT = OctreeContainerEmpty<DataT>>
std::size_t pcl::octree::OctreeBase< DataT, LeafT, BranchT >::getLeafCount ( ) const [inline]

Return the amount of existing leafs in the octree.

Returns:
amount of registered leaf nodes.

Definition at line 204 of file octree_base.h.

template<typename DataT, typename LeafT = OctreeContainerDataT<DataT>, typename BranchT = OctreeContainerEmpty<DataT>>
unsigned int pcl::octree::OctreeBase< DataT, LeafT, BranchT >::getTreeDepth ( ) const [inline]

Get the maximum depth of the octree.

Returns:
depth_arg: maximum depth of octree

Reimplemented in pcl::octree::OctreePointCloud< PointT, LeafT, BranchT, OctreeBase< int, LeafT, BranchT > >, and pcl::octree::OctreePointCloud< PointT, LeafT, BranchT >.

Definition at line 147 of file octree_base.h.

template<typename DataT, typename LeafT = OctreeContainerDataT<DataT>, typename BranchT = OctreeContainerEmpty<DataT>>
OctreeBase& pcl::octree::OctreeBase< DataT, LeafT, BranchT >::operator= ( const OctreeBase< DataT, LeafT, BranchT > &  source) [inline]

Copy operator.

Definition at line 119 of file octree_base.h.

template<typename DataT , typename LeafT , typename BranchT >
void pcl::octree::OctreeBase< DataT, LeafT, BranchT >::removeLeaf ( unsigned int  idxX_arg,
unsigned int  idxY_arg,
unsigned int  idxZ_arg 
)

Remove leaf node at (idxX_arg, idxY_arg, idxZ_arg).

Parameters:
idxX_arg,:index of leaf node in the X axis.
idxY_arg,:index of leaf node in the Y axis.
idxZ_arg,:index of leaf node in the Z axis.

Definition at line 161 of file octree_base.hpp.

template<typename DataT, typename LeafT , typename BranchT >
void pcl::octree::OctreeBase< DataT, LeafT, BranchT >::serializeLeafs ( std::vector< DataT > &  dataVector_arg)

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

Parameters:
dataVector_arg,:reference to DataT vector that receives a copy of all DataT objects in the octree.

Definition at line 231 of file octree_base.hpp.

template<typename DataT , typename LeafT , typename BranchT >
void pcl::octree::OctreeBase< DataT, LeafT, BranchT >::serializeTree ( std::vector< char > &  binaryTreeOut_arg)

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

Parameters:
binaryTreeOut_arg,:reference to output vector for writing binary tree structure.

Definition at line 194 of file octree_base.hpp.

template<typename DataT, typename LeafT , typename BranchT >
void pcl::octree::OctreeBase< DataT, LeafT, BranchT >::serializeTree ( std::vector< char > &  binaryTreeOut_arg,
std::vector< DataT > &  dataVector_arg 
)

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

Parameters:
binaryTreeOut_arg,:reference to output vector for writing binary tree structure.
dataVector_arg,:reference of DataT vector that receives a copy of all DataT objects in the octree

Definition at line 211 of file octree_base.hpp.

template<typename DataT , typename LeafT , typename BranchT >
void pcl::octree::OctreeBase< DataT, LeafT, BranchT >::setMaxVoxelIndex ( unsigned int  maxVoxelIndex_arg)

Set the maximum amount of voxels per dimension.

Parameters:
[in]maxVoxelIndex_argmaximum amount of voxels per dimension

Definition at line 83 of file octree_base.hpp.

template<typename DataT , typename LeafT , typename BranchT >
void pcl::octree::OctreeBase< DataT, LeafT, BranchT >::setTreeDepth ( unsigned int  depth_arg)

Set the maximum depth of the octree.

Parameters:
depth_arg,:maximum depth of octree

Definition at line 101 of file octree_base.hpp.


Friends And Related Function Documentation

template<typename DataT, typename LeafT = OctreeContainerDataT<DataT>, typename BranchT = OctreeContainerEmpty<DataT>>
friend class OctreeBreadthFirstIterator< DataT, OctreeT > [friend]

Definition at line 77 of file octree_base.h.

template<typename DataT, typename LeafT = OctreeContainerDataT<DataT>, typename BranchT = OctreeContainerEmpty<DataT>>
friend class OctreeDepthFirstIterator< DataT, OctreeT > [friend]

Definition at line 76 of file octree_base.h.

template<typename DataT, typename LeafT = OctreeContainerDataT<DataT>, typename BranchT = OctreeContainerEmpty<DataT>>
friend class OctreeIteratorBase< DataT, OctreeT > [friend]

Definition at line 75 of file octree_base.h.

template<typename DataT, typename LeafT = OctreeContainerDataT<DataT>, typename BranchT = OctreeContainerEmpty<DataT>>
friend class OctreeLeafNodeIterator< DataT, OctreeT > [friend]

Definition at line 78 of file octree_base.h.


The documentation for this class was generated from the following files:
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Defines