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

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.

Definition at line 45 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 53 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 56 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 48 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 54 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 51 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 49 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 55 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 50 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 52 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 63 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 77 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 
)

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 580 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 89 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 >::getProcessTiles ( ) const
inline
Returns
whether active tiles are being processed

Definition at line 95 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 128 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 125 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 109 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 
)

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 526 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 
)

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 637 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 106 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 
)

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 683 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 162 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 92 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 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 >::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

Definition at line 102 of file Filter.h.


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