OpenVDB  12.0.0
Classes | Public Types | Public Member Functions | List of all members
Morphology< TreeType > Class Template Reference

Dilation/Erosion operations over a Trees leaf level voxel topology. More...

#include <openvdb/tools/Morphology.h>

Classes

struct  NodeMaskOp
 Node Mask dilation/erosion operations for individual leaf nodes on a given tree. The leaf node may optionally belong to a different tree than the provided accessor, which will have the effect of dilating the leaf node mask into a different tree, or eroding the node mask based on corresponding neighbors in a different tree. More...
 

Public Types

using LeafType = typename TreeType::LeafNodeType
 
using MaskType = typename LeafType::NodeMaskType
 
using ValueType = typename TreeType::ValueType
 
using MaskTreeT = typename TreeType::template ValueConverter< ValueMask >::Type
 
using MaskLeafT = typename MaskTreeT::LeafNodeType
 
using AccessorType = tree::ValueAccessor< TreeType >
 

Public Member Functions

 Morphology (TreeType &tree)
 
 Morphology (tree::LeafManager< TreeType > &tree)
 
bool getThreaded () const
 Return whether this class is using multi-threading. More...
 
void setThreaded (const bool threaded)
 Set whether to use multi-threading. More...
 
const tree::LeafManager< TreeType > & leafManager () const
 Return a const reference to the leaf manager. More...
 
void erodeVoxels (const size_t iter, const NearestNeighbors nn, const bool prune=false)
 Topologically erode all voxels by the provided nearest neighbor scheme and optionally collapse constant leaf nodes. More...
 
void dilateVoxels (const size_t iter, const NearestNeighbors nn, const bool prune=false, const bool preserveMaskLeafNodes=false)
 Topologically dilate all voxels by the provided nearest neighbor scheme and optionally collapse constant leaf nodes. More...
 
void copyMasks (std::vector< MaskType > &masks) const
 Copy the current node masks onto the provided vector. The vector is resized if necessary. More...
 

Detailed Description

template<typename TreeType>
class openvdb::v12_0::tools::morphology::Morphology< TreeType >

Dilation/Erosion operations over a Trees leaf level voxel topology.

Member Typedef Documentation

using AccessorType = tree::ValueAccessor<TreeType>
using LeafType = typename TreeType::LeafNodeType
using MaskLeafT = typename MaskTreeT::LeafNodeType
using MaskTreeT = typename TreeType::template ValueConverter<ValueMask>::Type
using MaskType = typename LeafType::NodeMaskType
using ValueType = typename TreeType::ValueType

Constructor & Destructor Documentation

Morphology ( TreeType &  tree)
inline
Morphology ( tree::LeafManager< TreeType > &  tree)
inline

Member Function Documentation

void copyMasks ( std::vector< MaskType > &  masks) const
inline

Copy the current node masks onto the provided vector. The vector is resized if necessary.

Parameters
masksThe vector of NodeMasks to copy onto
void dilateVoxels ( const size_t  iter,
const NearestNeighbors  nn,
const bool  prune = false,
const bool  preserveMaskLeafNodes = false 
)

Topologically dilate all voxels by the provided nearest neighbor scheme and optionally collapse constant leaf nodes.

Voxel values are unchanged and only leaf nodes are used to propagate the dilation.

Parameters
iterNumber of dilation iterations
nnConnectivity pattern of the dilation
pruneWhether to collapse constant leaf nodes after the dilation
preserveMaskLeafNodesWhen dilating mask trees, the default behaviour chooses to steal the mask nodes rather than copy them. Although faster, this means that leaf nodes may be re-allocated. Set this to true if you need the original topology pointers to be preserved.
void erodeVoxels ( const size_t  iter,
const NearestNeighbors  nn,
const bool  prune = false 
)

Topologically erode all voxels by the provided nearest neighbor scheme and optionally collapse constant leaf nodes.

Inactive Tiles contribute to the erosion but active tiles are not modified.

Parameters
iterNumber of erosion iterations
nnConnectivity pattern of the erosion
pruneWhether to collapse constant leaf nodes after the erosion
bool getThreaded ( ) const
inline

Return whether this class is using multi-threading.

const tree::LeafManager<TreeType>& leafManager ( ) const
inline

Return a const reference to the leaf manager.

void setThreaded ( const bool  threaded)
inline

Set whether to use multi-threading.

Note
The grain size is not exposed