|
OpenVDB 11.0.0
|
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. | |
| void | setThreaded (const bool threaded) |
| Set whether to use multi-threading. | |
| const tree::LeafManager< TreeType > & | leafManager () const |
| Return a const reference to the leaf manager. | |
| 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. | |
| 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. | |
| void | copyMasks (std::vector< MaskType > &masks) const |
| Copy the current node masks onto the provided vector. The vector is resized if necessary. | |
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 MaskTreeT = typename TreeType::template ValueConverter<ValueMask>::Type |
| 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.