HDK
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
openvdb::OPENVDB_VERSION_NAME::tools::Filter< GridT, MaskT, InterruptT > Class Template Reference

Volume filtering (e.g., diffusion) with optional alpha masking. More...

#include <Filter.h>

Public Types

using GridType = GridT
 
using MaskType = MaskT
 
using TreeType = typename GridType::TreeType
 
using LeafType = typename TreeType::LeafNodeType
 
using ValueType = typename GridType::ValueType
 
using AlphaType = typename MaskType::ValueType
 
using LeafManagerType = typename tree::LeafManager< TreeType >
 
using RangeType = typename LeafManagerType::LeafRange
 
using BufferType = typename LeafManagerType::BufferType
 

Public Member Functions

 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...
 
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...
 

Detailed Description

template<typename GridT, typename MaskT = typename GridT::template ValueConverter<float>::Type, typename InterruptT = util::NullInterrupter>
class openvdb::OPENVDB_VERSION_NAME::tools::Filter< GridT, MaskT, InterruptT >

Volume filtering (e.g., diffusion) with optional alpha masking.

Note
Only the values in the grid are changed, not its topology!

Definition at line 67 of file Filter.h.

Member Typedef Documentation

template<typename GridT , typename MaskT = typename GridT::template ValueConverter<float>::Type, typename InterruptT = util::NullInterrupter>
using openvdb::OPENVDB_VERSION_NAME::tools::Filter< GridT, MaskT, InterruptT >::AlphaType = typename MaskType::ValueType

Definition at line 75 of file Filter.h.

template<typename GridT , typename MaskT = typename GridT::template ValueConverter<float>::Type, typename InterruptT = util::NullInterrupter>
using openvdb::OPENVDB_VERSION_NAME::tools::Filter< GridT, MaskT, InterruptT >::BufferType = typename LeafManagerType::BufferType

Definition at line 78 of file Filter.h.

template<typename GridT , typename MaskT = typename GridT::template ValueConverter<float>::Type, typename InterruptT = util::NullInterrupter>
using openvdb::OPENVDB_VERSION_NAME::tools::Filter< GridT, MaskT, InterruptT >::GridType = GridT

Definition at line 70 of file Filter.h.

template<typename GridT , typename MaskT = typename GridT::template ValueConverter<float>::Type, typename InterruptT = util::NullInterrupter>
using openvdb::OPENVDB_VERSION_NAME::tools::Filter< GridT, MaskT, InterruptT >::LeafManagerType = typename tree::LeafManager<TreeType>

Definition at line 76 of file Filter.h.

template<typename GridT , typename MaskT = typename GridT::template ValueConverter<float>::Type, typename InterruptT = util::NullInterrupter>
using openvdb::OPENVDB_VERSION_NAME::tools::Filter< GridT, MaskT, InterruptT >::LeafType = typename TreeType::LeafNodeType

Definition at line 73 of file Filter.h.

template<typename GridT , typename MaskT = typename GridT::template ValueConverter<float>::Type, typename InterruptT = util::NullInterrupter>
using openvdb::OPENVDB_VERSION_NAME::tools::Filter< GridT, MaskT, InterruptT >::MaskType = MaskT

Definition at line 71 of file Filter.h.

template<typename GridT , typename MaskT = typename GridT::template ValueConverter<float>::Type, typename InterruptT = util::NullInterrupter>
using openvdb::OPENVDB_VERSION_NAME::tools::Filter< GridT, MaskT, InterruptT >::RangeType = typename LeafManagerType::LeafRange

Definition at line 77 of file Filter.h.

template<typename GridT , typename MaskT = typename GridT::template ValueConverter<float>::Type, typename InterruptT = util::NullInterrupter>
using openvdb::OPENVDB_VERSION_NAME::tools::Filter< GridT, MaskT, InterruptT >::TreeType = typename GridType::TreeType

Definition at line 72 of file Filter.h.

template<typename GridT , typename MaskT = typename GridT::template ValueConverter<float>::Type, typename InterruptT = util::NullInterrupter>
using openvdb::OPENVDB_VERSION_NAME::tools::Filter< GridT, MaskT, InterruptT >::ValueType = typename GridType::ValueType

Definition at line 74 of file Filter.h.

Constructor & Destructor Documentation

template<typename GridT , typename MaskT = typename GridT::template ValueConverter<float>::Type, typename InterruptT = util::NullInterrupter>
openvdb::OPENVDB_VERSION_NAME::tools::Filter< GridT, MaskT, InterruptT >::Filter ( GridT &  grid,
InterruptT *  interrupt = nullptr 
)
inline

Constructor

Parameters
gridGrid to be filtered.
interruptOptional interrupter.

Definition at line 85 of file Filter.h.

template<typename GridT , typename MaskT = typename GridT::template ValueConverter<float>::Type, typename InterruptT = util::NullInterrupter>
openvdb::OPENVDB_VERSION_NAME::tools::Filter< GridT, MaskT, InterruptT >::Filter ( const Filter< GridT, MaskT, InterruptT > &  other)
inline

Shallow copy constructor called by tbb::parallel_for() threads during filtering.

Parameters
otherThe other Filter from which to copy.

Definition at line 100 of file Filter.h.

Member Function Documentation

template<typename GridT , typename MaskT , typename InterruptT >
void openvdb::OPENVDB_VERSION_NAME::tools::Filter< GridT, MaskT, InterruptT >::gaussian ( int  width = 1,
int  iterations = 1,
const MaskType mask = nullptr 
)
inline

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
widthThe width of the mean-value filter is 2*width+1 voxels.
iterationsNumber of times the mean-value filter is applied.
maskOptional alpha mask.

Definition at line 277 of file Filter.h.

template<typename GridT , typename MaskT = typename GridT::template ValueConverter<float>::Type, typename InterruptT = util::NullInterrupter>
int openvdb::OPENVDB_VERSION_NAME::tools::Filter< GridT, MaskT, InterruptT >::getGrainSize ( ) const
inline
Returns
the grain-size used for multi-threading

Definition at line 113 of file Filter.h.

template<typename GridT , typename MaskT = typename GridT::template ValueConverter<float>::Type, typename InterruptT = util::NullInterrupter>
void openvdb::OPENVDB_VERSION_NAME::tools::Filter< GridT, MaskT, InterruptT >::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.

Definition at line 142 of file Filter.h.

template<typename GridT , typename MaskT = typename GridT::template ValueConverter<float>::Type, typename InterruptT = util::NullInterrupter>
bool openvdb::OPENVDB_VERSION_NAME::tools::Filter< GridT, MaskT, InterruptT >::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.

Definition at line 139 of file Filter.h.

template<typename GridT , typename MaskT = typename GridT::template ValueConverter<float>::Type, typename InterruptT = util::NullInterrupter>
AlphaType openvdb::OPENVDB_VERSION_NAME::tools::Filter< GridT, MaskT, InterruptT >::maxMask ( ) const
inline

Return the maximum value of the mask to be used for the derivation of a smooth alpha value.

Definition at line 123 of file Filter.h.

template<typename GridT , typename MaskT , typename InterruptT >
void openvdb::OPENVDB_VERSION_NAME::tools::Filter< GridT, MaskT, InterruptT >::mean ( int  width = 1,
int  iterations = 1,
const MaskType mask = nullptr 
)
inline

One iteration of a fast separable mean-value (i.e. box) filter.

Parameters
widthThe width of the mean-value filter is 2*width+1 voxels.
iterationsNumber of times the mean-value filter is applied.
maskOptional alpha mask.

Definition at line 250 of file Filter.h.

template<typename GridT , typename MaskT , typename InterruptT >
void openvdb::OPENVDB_VERSION_NAME::tools::Filter< GridT, MaskT, InterruptT >::median ( int  width = 1,
int  iterations = 1,
const MaskType mask = nullptr 
)
inline

One iteration of a median-value filter.

Note
This filter is not separable and is hence relatively slow!
Parameters
widthThe width of the mean-value filter is 2*width+1 voxels.
iterationsNumber of times the mean-value filter is applied.
maskOptional alpha mask.

Definition at line 306 of file Filter.h.

template<typename GridT , typename MaskT = typename GridT::template ValueConverter<float>::Type, typename InterruptT = util::NullInterrupter>
AlphaType openvdb::OPENVDB_VERSION_NAME::tools::Filter< GridT, MaskT, InterruptT >::minMask ( ) const
inline

Return the minimum value of the mask to be used for the derivation of a smooth alpha value.

Definition at line 120 of file Filter.h.

template<typename GridT , typename MaskT , typename InterruptT >
void openvdb::OPENVDB_VERSION_NAME::tools::Filter< GridT, MaskT, InterruptT >::offset ( ValueType  offset,
const MaskType mask = nullptr 
)
inline

Offsets (i.e. adds) a constant value to all active voxels.

Parameters
offsetOffset in the same units as the grid.
maskOptional alpha mask.

Definition at line 324 of file Filter.h.

template<typename GridT , typename MaskT = typename GridT::template ValueConverter<float>::Type, typename InterruptT = util::NullInterrupter>
void openvdb::OPENVDB_VERSION_NAME::tools::Filter< GridT, MaskT, InterruptT >::operator() ( const RangeType range) const
inline

Used internally by tbb::parallel_for()

Parameters
rangeRange of LeafNodes over which to multi-thread.
Warning
Never call this method directly!

Definition at line 176 of file Filter.h.

template<typename GridT , typename MaskT = typename GridT::template ValueConverter<float>::Type, typename InterruptT = util::NullInterrupter>
void openvdb::OPENVDB_VERSION_NAME::tools::Filter< GridT, MaskT, InterruptT >::setGrainSize ( int  grainsize)
inline

Set the grain-size used for multi-threading.

Note
A grain size of 0 or less disables multi-threading!

Definition at line 116 of file Filter.h.

template<typename GridT , typename MaskT = typename GridT::template ValueConverter<float>::Type, typename InterruptT = util::NullInterrupter>
void openvdb::OPENVDB_VERSION_NAME::tools::Filter< GridT, MaskT, InterruptT >::setMaskRange ( AlphaType  min,
AlphaType  max 
)
inline

Define the range for the (optional) scalar mask.

Parameters
minMinimum value of the range.
maxMaximum 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
ValueErrorif min is not smaller than max.

Definition at line 130 of file Filter.h.


The documentation for this class was generated from the following file: