OpenVDB
9.0.1
|
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... | |
Dilation/Erosion operations over a Trees leaf level voxel topology.
using AccessorType = tree::ValueAccessor<TreeType> |
using LeafType = typename TreeType::LeafNodeType |
using MaskLeafT = typename MaskTreeT::LeafNodeType |
using MaskType = typename LeafType::NodeMaskType |
using ValueType = typename TreeType::ValueType |
|
inline |
|
inline |
|
inline |
Copy the current node masks onto the provided vector. The vector is resized if necessary.
masks | The 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.
iter | Number of dilation iterations |
nn | Connectivity pattern of the dilation |
prune | Whether to collapse constant leaf nodes after the dilation |
preserveMaskLeafNodes | When 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.
iter | Number of erosion iterations |
nn | Connectivity pattern of the erosion |
prune | Whether to collapse constant leaf nodes after the erosion |
|
inline |
Return whether this class is using multi-threading.
|
inline |
Return a const reference to the leaf manager.
|
inline |
Set whether to use multi-threading.