ITK  4.0.0
Insight Segmentation and Registration Toolkit
Public Types | Public Member Functions | Static Public Member Functions | Static Public Attributes | Protected Member Functions | Private Member Functions | Private Attributes
itk::ImplicitManifoldNormalVectorFilter< TInputImage, TSparseOutputImage > Class Template Reference

This class implements the filter for computing the normal vectors from a scalar implicit function (i.e. a levelset image) and processing them. More...

#include <itkImplicitManifoldNormalVectorFilter.h>

Inheritance diagram for itk::ImplicitManifoldNormalVectorFilter< TInputImage, TSparseOutputImage >:
Collaboration diagram for itk::ImplicitManifoldNormalVectorFilter< TInputImage, TSparseOutputImage >:

List of all members.

Public Types

typedef SmartPointer< const SelfConstPointer
typedef
Superclass::FiniteDifferenceFunctionType 
FiniteDifferenceFunctionType
typedef Superclass::IndexType IndexType
typedef
ConstNeighborhoodIterator
< InputImageType
InputImageIteratorType
typedef Superclass::InputImageType InputImageType
typedef Superclass::NodeListType NodeListType
typedef Superclass::NodeValueType NodeValueType
typedef Superclass::OutputNodeType NormalBandNodeType
typedef
NormalVectorFunctionBase
< SparseOutputImageType
NormalFunctionType
typedef Superclass::NodeDataType NormalVectorType
typedef SmartPointer< SelfPointer
typedef
FiniteDifferenceFunctionType::RadiusType 
RadiusType
typedef
ImplicitManifoldNormalVectorFilter 
Self
typedef
Superclass::SparseOutputImageType 
SparseOutputImageType
typedef
FiniteDifferenceSparseImageFilter
< TInputImage,
TSparseOutputImage > 
Superclass

Public Member Functions

virtual ::itk::LightObject::Pointer CreateAnother (void) const
virtual NodeValueType GetIsoLevelHigh () const
virtual NodeValueType GetIsoLevelLow () const
virtual unsigned int GetMaxIteration () const
virtual NodeValueType GetMinVectorNorm () const
virtual const char * GetNameOfClass () const
virtual bool GetUnsharpMaskingFlag () const
virtual NodeValueType GetUnsharpMaskingWeight () const
virtual void SetIsoLevelHigh (NodeValueType _arg)
virtual void SetIsoLevelLow (NodeValueType _arg)
virtual void SetMaxIteration (unsigned int _arg)
virtual void SetMinVectorNorm (NodeValueType _arg)
void SetNormalFunction (NormalFunctionType *nf)
virtual void SetUnsharpMaskingFlag (bool _arg)
virtual void SetUnsharpMaskingWeight (NodeValueType _arg)

Static Public Member Functions

static Pointer New ()

Static Public Attributes

static const unsigned int ImageDimension = Superclass::ImageDimension

Protected Member Functions

virtual void CopyInputToOutput ()
virtual NormalVectorType DataConstraint (const NormalVectorType &data) const
 ImplicitManifoldNormalVectorFilter ()
virtual void Initialize ()
void InitializeNormalBandNode (NormalBandNodeType *node, const InputImageIteratorType &it)
virtual void PostProcessOutput ()
void PrintSelf (std::ostream &os, Indent indent) const
void SetNormalBand ()
 ~ImplicitManifoldNormalVectorFilter ()
virtual bool Halt ()

Private Member Functions

 ImplicitManifoldNormalVectorFilter (const Self &)
void operator= (const Self &)

Private Attributes

NodeValueType m_DimConst
NodeValueType m_DimConst2
unsigned long m_Indicator [itkGetStaticConstMacro(ImageDimension)]
NodeValueType m_IsoLevelHigh
NodeValueType m_IsoLevelLow
RadiusType m_ManifoldRadius
unsigned int m_MaxIteration
NodeValueType m_MinVectorNorm
NormalFunctionTypem_NormalFunction
unsigned int m_NumVertex
bool m_UnsharpMaskingFlag
NodeValueType m_UnsharpMaskingWeight

Detailed Description

template<class TInputImage, class TSparseOutputImage>
class itk::ImplicitManifoldNormalVectorFilter< TInputImage, TSparseOutputImage >

This class implements the filter for computing the normal vectors from a scalar implicit function (i.e. a levelset image) and processing them.

This is a ready-to-use class for filtering normal vectors of an implicit manifold image. The normal vectors of the input image are computed and processed in a band where the values of the input image fall in the region [IsoLevelLow, IsoLevelHigh]. The processing is done by m_NormalFunction. This class also defines a Halt method which uses the iteration counter and the parameter m_MaxIteration to determine when to stop the processing.
INPUTS
The input is a scalar image. Even though this can be any scalar image, this filter class is intended to work with the image of an implicit function. One such example is the output of the SparseFieldLevelSetImageFilter class.
OUTPUTS
The output is a sparse image. The m_Data member variables of the nodes of the sparse image will contain the filtered output normal vectors. The sparse image has valid node pointers only in the band [IsoLevelLow, IsoLevelHigh]. Pixels of the sparse image outside this band will be null pointers.
PARAMETERS
IsoLevelLow and IsoLevelHigh define the working band for this filter. Pixels of the input scalar image whose values fall between these low and high limits will be operated on. MaxIteration determines the number of iterations this filter will perform. (Default is 25) The MinVectorNorm parameter determines the minumum vector norm allowed (to avoid divide by 0). The default for MinVectorNorm is 10^-6 which is designed to work with an input image of floats. This value can be lowered to 10^-12 if the input image is doubles.
IMPORTANT
The TSparseOutputImage template parameter must be a sparse image templated over a NodeType which at least has the following members: m_Data, m_InputData, m_Update and m_MAnifoldNormal. Depending on the Function object being used it might need other members. For instance, NormalVectorDiffusionFunction will also require that the NodeType has the following additional members: m_Flux.

Definition at line 73 of file itkImplicitManifoldNormalVectorFilter.h.


Member Typedef Documentation

template<class TInputImage , class TSparseOutputImage >
typedef SmartPointer< const Self > itk::ImplicitManifoldNormalVectorFilter< TInputImage, TSparseOutputImage >::ConstPointer
template<class TInputImage , class TSparseOutputImage >
typedef Superclass::FiniteDifferenceFunctionType itk::ImplicitManifoldNormalVectorFilter< TInputImage, TSparseOutputImage >::FiniteDifferenceFunctionType

The value type of the time step. This is distinct from PixelType because PixelType may often be a vector value, while the TimeStep is a scalar value.

Reimplemented from itk::FiniteDifferenceSparseImageFilter< TInputImage, TSparseOutputImage >.

Definition at line 103 of file itkImplicitManifoldNormalVectorFilter.h.

template<class TInputImage , class TSparseOutputImage >
typedef Superclass::IndexType itk::ImplicitManifoldNormalVectorFilter< TInputImage, TSparseOutputImage >::IndexType

Typedefs from the sparse output image type.

Reimplemented from itk::FiniteDifferenceSparseImageFilter< TInputImage, TSparseOutputImage >.

Definition at line 99 of file itkImplicitManifoldNormalVectorFilter.h.

template<class TInputImage , class TSparseOutputImage >
typedef ConstNeighborhoodIterator< InputImageType > itk::ImplicitManifoldNormalVectorFilter< TInputImage, TSparseOutputImage >::InputImageIteratorType

The iterator for the input image.

Definition at line 110 of file itkImplicitManifoldNormalVectorFilter.h.

template<class TInputImage , class TSparseOutputImage >
typedef Superclass::InputImageType itk::ImplicitManifoldNormalVectorFilter< TInputImage, TSparseOutputImage >::InputImageType

Typedefs from the superclass

Reimplemented from itk::FiniteDifferenceSparseImageFilter< TInputImage, TSparseOutputImage >.

Definition at line 98 of file itkImplicitManifoldNormalVectorFilter.h.

template<class TInputImage , class TSparseOutputImage >
typedef Superclass::NodeListType itk::ImplicitManifoldNormalVectorFilter< TInputImage, TSparseOutputImage >::NodeListType
template<class TInputImage , class TSparseOutputImage >
typedef Superclass::NodeValueType itk::ImplicitManifoldNormalVectorFilter< TInputImage, TSparseOutputImage >::NodeValueType

The basic scalar variable type used in OutputNodeType. Expected to be float or double. If NodeDataType is a scalar, then this is the same type as that.

Reimplemented from itk::FiniteDifferenceSparseImageFilter< TInputImage, TSparseOutputImage >.

Definition at line 101 of file itkImplicitManifoldNormalVectorFilter.h.

template<class TInputImage , class TSparseOutputImage >
typedef Superclass::OutputNodeType itk::ImplicitManifoldNormalVectorFilter< TInputImage, TSparseOutputImage >::NormalBandNodeType

Definition at line 106 of file itkImplicitManifoldNormalVectorFilter.h.

template<class TInputImage , class TSparseOutputImage >
typedef NormalVectorFunctionBase< SparseOutputImageType > itk::ImplicitManifoldNormalVectorFilter< TInputImage, TSparseOutputImage >::NormalFunctionType

This is the finite difference function type for processing the normal vectors

Definition at line 114 of file itkImplicitManifoldNormalVectorFilter.h.

template<class TInputImage , class TSparseOutputImage >
typedef Superclass::NodeDataType itk::ImplicitManifoldNormalVectorFilter< TInputImage, TSparseOutputImage >::NormalVectorType

Definition at line 100 of file itkImplicitManifoldNormalVectorFilter.h.

template<class TInputImage , class TSparseOutputImage >
typedef SmartPointer< Self > itk::ImplicitManifoldNormalVectorFilter< TInputImage, TSparseOutputImage >::Pointer
template<class TInputImage , class TSparseOutputImage >
typedef FiniteDifferenceFunctionType::RadiusType itk::ImplicitManifoldNormalVectorFilter< TInputImage, TSparseOutputImage >::RadiusType

This is the radius type for the image neigborhoods.

Reimplemented from itk::FiniteDifferenceImageFilter< TInputImage, TSparseOutputImage >.

Definition at line 117 of file itkImplicitManifoldNormalVectorFilter.h.

template<class TInputImage , class TSparseOutputImage >
typedef ImplicitManifoldNormalVectorFilter itk::ImplicitManifoldNormalVectorFilter< TInputImage, TSparseOutputImage >::Self
template<class TInputImage , class TSparseOutputImage >
typedef Superclass::SparseOutputImageType itk::ImplicitManifoldNormalVectorFilter< TInputImage, TSparseOutputImage >::SparseOutputImageType
template<class TInputImage , class TSparseOutputImage >
typedef FiniteDifferenceSparseImageFilter< TInputImage, TSparseOutputImage > itk::ImplicitManifoldNormalVectorFilter< TInputImage, TSparseOutputImage >::Superclass

Constructor & Destructor Documentation

template<class TInputImage , class TSparseOutputImage >
itk::ImplicitManifoldNormalVectorFilter< TInputImage, TSparseOutputImage >::ImplicitManifoldNormalVectorFilter ( ) [protected]
template<class TInputImage , class TSparseOutputImage >
itk::ImplicitManifoldNormalVectorFilter< TInputImage, TSparseOutputImage >::~ImplicitManifoldNormalVectorFilter ( ) [inline, protected]

Definition at line 136 of file itkImplicitManifoldNormalVectorFilter.h.

template<class TInputImage , class TSparseOutputImage >
itk::ImplicitManifoldNormalVectorFilter< TInputImage, TSparseOutputImage >::ImplicitManifoldNormalVectorFilter ( const Self ) [private]

Member Function Documentation

template<class TInputImage , class TSparseOutputImage >
virtual void itk::ImplicitManifoldNormalVectorFilter< TInputImage, TSparseOutputImage >::CopyInputToOutput ( ) [inline, protected, virtual]

This function does nothing. The output initialization is handled by Initialize.

Implements itk::FiniteDifferenceImageFilter< TInputImage, TSparseOutputImage >.

Definition at line 152 of file itkImplicitManifoldNormalVectorFilter.h.

template<class TInputImage , class TSparseOutputImage >
virtual::itk::LightObject::Pointer itk::ImplicitManifoldNormalVectorFilter< TInputImage, TSparseOutputImage >::CreateAnother ( void  ) const [virtual]

Create an object from an instance, potentially deferring to a factory. This method allows you to create an instance of an object that is exactly the same type as the referring object. This is useful in cases where an object has been cast back to a base class.

Reimplemented from itk::Object.

template<class TInputImage , class TSparseOutputImage >
virtual NormalVectorType itk::ImplicitManifoldNormalVectorFilter< TInputImage, TSparseOutputImage >::DataConstraint ( const NormalVectorType data) const [inline, protected, virtual]

This function implements the unit norm constraint for normal vectors.

Definition at line 171 of file itkImplicitManifoldNormalVectorFilter.h.

template<class TInputImage , class TSparseOutputImage >
virtual NodeValueType itk::ImplicitManifoldNormalVectorFilter< TInputImage, TSparseOutputImage >::GetIsoLevelHigh ( ) const [virtual]
template<class TInputImage , class TSparseOutputImage >
virtual NodeValueType itk::ImplicitManifoldNormalVectorFilter< TInputImage, TSparseOutputImage >::GetIsoLevelLow ( ) const [virtual]
template<class TInputImage , class TSparseOutputImage >
virtual unsigned int itk::ImplicitManifoldNormalVectorFilter< TInputImage, TSparseOutputImage >::GetMaxIteration ( ) const [virtual]
template<class TInputImage , class TSparseOutputImage >
virtual NodeValueType itk::ImplicitManifoldNormalVectorFilter< TInputImage, TSparseOutputImage >::GetMinVectorNorm ( ) const [virtual]
template<class TInputImage , class TSparseOutputImage >
virtual const char* itk::ImplicitManifoldNormalVectorFilter< TInputImage, TSparseOutputImage >::GetNameOfClass ( ) const [virtual]

Run-time type information (and related methods)

Reimplemented from itk::FiniteDifferenceSparseImageFilter< TInputImage, TSparseOutputImage >.

template<class TInputImage , class TSparseOutputImage >
virtual bool itk::ImplicitManifoldNormalVectorFilter< TInputImage, TSparseOutputImage >::GetUnsharpMaskingFlag ( ) const [virtual]
template<class TInputImage , class TSparseOutputImage >
virtual NodeValueType itk::ImplicitManifoldNormalVectorFilter< TInputImage, TSparseOutputImage >::GetUnsharpMaskingWeight ( ) const [virtual]
template<class TInputImage , class TSparseOutputImage >
virtual bool itk::ImplicitManifoldNormalVectorFilter< TInputImage, TSparseOutputImage >::Halt ( ) [inline, protected, virtual]

This is the stopping criterion function used in the iterative finite difference scheme.

Reimplemented from itk::FiniteDifferenceImageFilter< TInputImage, TSparseOutputImage >.

Definition at line 156 of file itkImplicitManifoldNormalVectorFilter.h.

template<class TInputImage , class TSparseOutputImage >
virtual void itk::ImplicitManifoldNormalVectorFilter< TInputImage, TSparseOutputImage >::Initialize ( ) [protected, virtual]

This calls SetNormalBand to create the band of normals to process.

Reimplemented from itk::FiniteDifferenceSparseImageFilter< TInputImage, TSparseOutputImage >.

template<class TInputImage , class TSparseOutputImage >
void itk::ImplicitManifoldNormalVectorFilter< TInputImage, TSparseOutputImage >::InitializeNormalBandNode ( NormalBandNodeType node,
const InputImageIteratorType it 
) [protected]

This function precomputes information for normal vector processing.

template<class TInputImage , class TSparseOutputImage >
static Pointer itk::ImplicitManifoldNormalVectorFilter< TInputImage, TSparseOutputImage >::New ( ) [static]

Standard New macro.

Reimplemented from itk::Object.

template<class TInputImage , class TSparseOutputImage >
void itk::ImplicitManifoldNormalVectorFilter< TInputImage, TSparseOutputImage >::operator= ( const Self ) [private]

PushBackInput(), PushFronInput() in the public section force the input to be the type expected by an ImageToImageFilter. However, these methods end of "hiding" the versions from the superclass (ProcessObject) whose arguments are DataObjects. Here, we re-expose the versions from ProcessObject to avoid warnings about hiding methods from the superclass.

Reimplemented from itk::FiniteDifferenceSparseImageFilter< TInputImage, TSparseOutputImage >.

template<class TInputImage , class TSparseOutputImage >
virtual void itk::ImplicitManifoldNormalVectorFilter< TInputImage, TSparseOutputImage >::PostProcessOutput ( ) [protected, virtual]

This function implements unsharp masking which is turned ON/OFF by the UnsharpMaskingFlag and controlled by the UnsharpMaskingWeight parameters.

Reimplemented from itk::FiniteDifferenceImageFilter< TInputImage, TSparseOutputImage >.

template<class TInputImage , class TSparseOutputImage >
void itk::ImplicitManifoldNormalVectorFilter< TInputImage, TSparseOutputImage >::PrintSelf ( std::ostream &  os,
Indent  indent 
) const [protected, virtual]

Methods invoked by Print() to print information about the object including superclasses. Typically not called by the user (use Print() instead) but used in the hierarchical print process to combine the output of several classes.

Reimplemented from itk::FiniteDifferenceSparseImageFilter< TInputImage, TSparseOutputImage >.

template<class TInputImage , class TSparseOutputImage >
virtual void itk::ImplicitManifoldNormalVectorFilter< TInputImage, TSparseOutputImage >::SetIsoLevelHigh ( NodeValueType  _arg) [virtual]
template<class TInputImage , class TSparseOutputImage >
virtual void itk::ImplicitManifoldNormalVectorFilter< TInputImage, TSparseOutputImage >::SetIsoLevelLow ( NodeValueType  _arg) [virtual]
template<class TInputImage , class TSparseOutputImage >
virtual void itk::ImplicitManifoldNormalVectorFilter< TInputImage, TSparseOutputImage >::SetMaxIteration ( unsigned int  _arg) [virtual]
template<class TInputImage , class TSparseOutputImage >
virtual void itk::ImplicitManifoldNormalVectorFilter< TInputImage, TSparseOutputImage >::SetMinVectorNorm ( NodeValueType  _arg) [virtual]
template<class TInputImage , class TSparseOutputImage >
void itk::ImplicitManifoldNormalVectorFilter< TInputImage, TSparseOutputImage >::SetNormalBand ( ) [protected]

This function sets the band for normal vector processing.

template<class TInputImage , class TSparseOutputImage >
void itk::ImplicitManifoldNormalVectorFilter< TInputImage, TSparseOutputImage >::SetNormalFunction ( NormalFunctionType nf)

This method is used to set the finite difference function.

template<class TInputImage , class TSparseOutputImage >
virtual void itk::ImplicitManifoldNormalVectorFilter< TInputImage, TSparseOutputImage >::SetUnsharpMaskingFlag ( bool  _arg) [virtual]
template<class TInputImage , class TSparseOutputImage >
virtual void itk::ImplicitManifoldNormalVectorFilter< TInputImage, TSparseOutputImage >::SetUnsharpMaskingWeight ( NodeValueType  _arg) [virtual]

Member Data Documentation

template<class TInputImage , class TSparseOutputImage >
const unsigned int itk::ImplicitManifoldNormalVectorFilter< TInputImage, TSparseOutputImage >::ImageDimension = Superclass::ImageDimension [static]

Standard get dimension macro.

Reimplemented from itk::FiniteDifferenceSparseImageFilter< TInputImage, TSparseOutputImage >.

Definition at line 95 of file itkImplicitManifoldNormalVectorFilter.h.

template<class TInputImage , class TSparseOutputImage >
NodeValueType itk::ImplicitManifoldNormalVectorFilter< TInputImage, TSparseOutputImage >::m_DimConst [private]

Definition at line 208 of file itkImplicitManifoldNormalVectorFilter.h.

template<class TInputImage , class TSparseOutputImage >
NodeValueType itk::ImplicitManifoldNormalVectorFilter< TInputImage, TSparseOutputImage >::m_DimConst2 [private]

Definition at line 209 of file itkImplicitManifoldNormalVectorFilter.h.

template<class TInputImage , class TSparseOutputImage >
unsigned long itk::ImplicitManifoldNormalVectorFilter< TInputImage, TSparseOutputImage >::m_Indicator[itkGetStaticConstMacro(ImageDimension)] [private]

Constants used in computations.

Definition at line 206 of file itkImplicitManifoldNormalVectorFilter.h.

template<class TInputImage , class TSparseOutputImage >
NodeValueType itk::ImplicitManifoldNormalVectorFilter< TInputImage, TSparseOutputImage >::m_IsoLevelHigh [private]

Definition at line 193 of file itkImplicitManifoldNormalVectorFilter.h.

template<class TInputImage , class TSparseOutputImage >
NodeValueType itk::ImplicitManifoldNormalVectorFilter< TInputImage, TSparseOutputImage >::m_IsoLevelLow [private]

The upper and lower limits of the band of the scalar image on which we operate.

Definition at line 193 of file itkImplicitManifoldNormalVectorFilter.h.

template<class TInputImage , class TSparseOutputImage >
RadiusType itk::ImplicitManifoldNormalVectorFilter< TInputImage, TSparseOutputImage >::m_ManifoldRadius [private]

Definition at line 210 of file itkImplicitManifoldNormalVectorFilter.h.

template<class TInputImage , class TSparseOutputImage >
unsigned int itk::ImplicitManifoldNormalVectorFilter< TInputImage, TSparseOutputImage >::m_MaxIteration [private]

The number of iterations this filter will execute.

Definition at line 189 of file itkImplicitManifoldNormalVectorFilter.h.

template<class TInputImage , class TSparseOutputImage >
NodeValueType itk::ImplicitManifoldNormalVectorFilter< TInputImage, TSparseOutputImage >::m_MinVectorNorm [private]

The minimum length a vector is allowed to have to avoid divide by zero.

Definition at line 196 of file itkImplicitManifoldNormalVectorFilter.h.

template<class TInputImage , class TSparseOutputImage >
NormalFunctionType* itk::ImplicitManifoldNormalVectorFilter< TInputImage, TSparseOutputImage >::m_NormalFunction [private]

The finite difference function.

Definition at line 186 of file itkImplicitManifoldNormalVectorFilter.h.

template<class TInputImage , class TSparseOutputImage >
unsigned int itk::ImplicitManifoldNormalVectorFilter< TInputImage, TSparseOutputImage >::m_NumVertex [private]

Definition at line 207 of file itkImplicitManifoldNormalVectorFilter.h.

template<class TInputImage , class TSparseOutputImage >
bool itk::ImplicitManifoldNormalVectorFilter< TInputImage, TSparseOutputImage >::m_UnsharpMaskingFlag [private]

The ON/OFF switch for unsharp masking. Default is OFF.

Definition at line 199 of file itkImplicitManifoldNormalVectorFilter.h.

template<class TInputImage , class TSparseOutputImage >
NodeValueType itk::ImplicitManifoldNormalVectorFilter< TInputImage, TSparseOutputImage >::m_UnsharpMaskingWeight [private]

The weight determining the extent of enhancement if unsharp masking is turned on.

Definition at line 203 of file itkImplicitManifoldNormalVectorFilter.h.


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