Volume filtering (e.g., diffusion) with optional alpha masking.
More...
#include <openvdb/tools/Filter.h>
|
| Filter (GridT &grid, InterruptT *interrupt=nullptr) |
|
| Filter (const Filter &other) |
| Shallow copy constructor called by tbb::parallel_for() threads during filtering. More...
|
|
int | getGrainSize () const |
|
void | setGrainSize (int grainsize) |
| Set the grain-size used for multi-threading. More...
|
|
bool | getProcessTiles () const |
|
void | setProcessTiles (bool flag) |
| Set whether active tiles should also be processed. More...
|
|
AlphaType | minMask () const |
| Return the minimum value of the mask to be used for the derivation of a smooth alpha value. More...
|
|
AlphaType | maxMask () const |
| Return the maximum value of the mask to be used for the derivation of a smooth alpha value. More...
|
|
void | setMaskRange (AlphaType min, AlphaType max) |
| Define the range for the (optional) scalar mask. More...
|
|
bool | isMaskInverted () const |
| Return true if the mask is inverted, i.e. min->max in the original mask maps to 1->0 in the inverted alpha mask. More...
|
|
void | invertMask (bool invert=true) |
| Invert the optional mask, i.e. min->max in the original mask maps to 1->0 in the inverted alpha mask. More...
|
|
void | mean (int width=1, int iterations=1, const MaskType *mask=nullptr) |
| One iteration of a fast separable mean-value (i.e. box) filter. More...
|
|
void | gaussian (int width=1, int iterations=1, const MaskType *mask=nullptr) |
| One iteration of a fast separable Gaussian filter. More...
|
|
void | median (int width=1, int iterations=1, const MaskType *mask=nullptr) |
| One iteration of a median-value filter. More...
|
|
void | offset (ValueType offset, const MaskType *mask=nullptr) |
|
void | operator() (const RangeType &range) const |
| Used internally by tbb::parallel_for() More...
|
|
template<typename GridT, typename MaskT = typename GridT::template ValueConverter<float>::Type, typename InterruptT = util::NullInterrupter>
class openvdb::v9_0::tools::Filter< GridT, MaskT, InterruptT >
Volume filtering (e.g., diffusion) with optional alpha masking.
using AlphaType = typename MaskType::ValueType |
using BufferType = typename LeafManagerType::BufferType |
using LeafType = typename TreeType::LeafNodeType |
using RangeType = typename LeafManagerType::LeafRange |
using TreeType = typename GridType::TreeType |
using ValueType = typename GridType::ValueType |
Filter |
( |
GridT & |
grid, |
|
|
InterruptT * |
interrupt = nullptr |
|
) |
| |
|
inline |
Constructor
- Parameters
-
grid | Grid to be filtered. |
interrupt | Optional interrupter. |
Shallow copy constructor called by tbb::parallel_for() threads during filtering.
- Parameters
-
other | The other Filter from which to copy. |
void gaussian |
( |
int |
width = 1 , |
|
|
int |
iterations = 1 , |
|
|
const MaskType * |
mask = nullptr |
|
) |
| |
One iteration of a fast separable Gaussian filter.
- Note
- This is approximated as 4 iterations of a separable mean filter which typically leads an approximation that's better than 95%!
- Parameters
-
width | The width of the mean-value filter is 2*width+1 voxels. |
iterations | Number of times the mean-value filter is applied. |
mask | Optional alpha mask. |
int getGrainSize |
( |
| ) |
const |
|
inline |
- Returns
- the grain-size used for multi-threading
bool getProcessTiles |
( |
| ) |
const |
|
inline |
- Returns
- whether active tiles are being processed
void invertMask |
( |
bool |
invert = true | ) |
|
|
inline |
Invert the optional mask, i.e. min->max in the original mask maps to 1->0 in the inverted alpha mask.
bool isMaskInverted |
( |
| ) |
const |
|
inline |
Return true if the mask is inverted, i.e. min->max in the original mask maps to 1->0 in the inverted alpha mask.
Return the maximum value of the mask to be used for the derivation of a smooth alpha value.
void mean |
( |
int |
width = 1 , |
|
|
int |
iterations = 1 , |
|
|
const MaskType * |
mask = nullptr |
|
) |
| |
One iteration of a fast separable mean-value (i.e. box) filter.
- Parameters
-
width | The width of the mean-value filter is 2*width+1 voxels. |
iterations | Number of times the mean-value filter is applied. |
mask | Optional alpha mask. |
void median |
( |
int |
width = 1 , |
|
|
int |
iterations = 1 , |
|
|
const MaskType * |
mask = nullptr |
|
) |
| |
One iteration of a median-value filter.
- Note
- This filter is not separable and is hence relatively slow!
- Parameters
-
width | The width of the mean-value filter is 2*width+1 voxels. |
iterations | Number of times the mean-value filter is applied. |
mask | Optional alpha mask. |
Return the minimum value of the mask to be used for the derivation of a smooth alpha value.
Offsets (i.e. adds) a constant value to all active voxels.
- Parameters
-
offset | Offset in the same units as the grid. |
mask | Optional alpha mask. |
void operator() |
( |
const RangeType & |
range | ) |
const |
|
inline |
Used internally by tbb::parallel_for()
- Parameters
-
range | Range of LeafNodes over which to multi-thread. |
- Warning
- Never call this method directly!
void setGrainSize |
( |
int |
grainsize | ) |
|
|
inline |
Set the grain-size used for multi-threading.
- Note
- A grain size of 0 or less disables multi-threading!
Define the range for the (optional) scalar mask.
- Parameters
-
min | Minimum value of the range. |
max | Maximum value of the range. |
Mask values outside the range are clamped to zero or one, and values inside the range map smoothly to 0->1 (unless the mask is inverted).
- Exceptions
-
void setProcessTiles |
( |
bool |
flag | ) |
|
|
inline |
Set whether active tiles should also be processed.
- Note
- If true, some tiles may become voxelized
- Warning
- If using with a mask, ensure that the mask topology matches the tile topology of the filter grid as tiles will not respect overlapping mask values at tree levels finer than themselves e.g. a leaf level tile will only use the corresponding tile ijk value in the mask grid