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::MinMaxCurvatureFlowImageFilter< TInputImage, TOutputImage > Class Template Reference

Denoise an image using min/max curvature flow. More...

#include <itkMinMaxCurvatureFlowImageFilter.h>

Inheritance diagram for itk::MinMaxCurvatureFlowImageFilter< TInputImage, TOutputImage >:
Collaboration diagram for itk::MinMaxCurvatureFlowImageFilter< TInputImage, TOutputImage >:

List of all members.

Public Types

typedef SmartPointer< const SelfConstPointer
typedef
Superclass::FiniteDifferenceFunctionType 
FiniteDifferenceFunctionType
typedef
MinMaxCurvatureFlowFunction
< OutputImageType
MinMaxCurvatureFlowFunctionType
typedef Superclass::OutputImageType OutputImageType
typedef SmartPointer< SelfPointer
typedef
FiniteDifferenceFunctionType::RadiusType 
RadiusType
typedef RadiusType::SizeValueType RadiusValueType
typedef
MinMaxCurvatureFlowImageFilter 
Self
typedef
CurvatureFlowImageFilter
< TInputImage, TOutputImage > 
Superclass

Public Member Functions

virtual ::itk::LightObject::Pointer CreateAnother (void) const
virtual const char * GetNameOfClass () const
 typedef (Concept::GreaterThanComparable< typename TOutputImage::PixelType, unsigned long >) OutputGreaterThanUnsignedLongCheck
 typedef (Concept::MultiplyAndAssignOperator< typename TOutputImage::PixelType, double >) OutputDoubleMultiplyAndAssignOperatorCheck
 typedef (Concept::Comparable< typename TOutputImage::PixelType, double >) OutputDoubleComparableCheck
 typedef (Concept::Convertible< long, typename TOutputImage::PixelType >) LongConvertibleToOutputCheck
 typedef (Concept::LessThanComparable< typename TOutputImage::PixelType >) OutputLessThanComparableCheck
 typedef (Concept::Convertible< unsigned long, typename TOutputImage::PixelType >) UnsignedLongConvertibleToOutputCheck
 typedef (Concept::AdditiveOperators< unsigned long, typename TOutputImage::PixelType >) UnsignedLongOutputAditiveOperatorsCheck
virtual void SetStencilRadius (RadiusValueType _arg)
virtual RadiusValueType GetStencilRadius () const

Static Public Member Functions

static Pointer New ()

Static Public Attributes

static const unsigned int ImageDimension = Superclass::ImageDimension

Protected Member Functions

virtual void InitializeIteration ()
 MinMaxCurvatureFlowImageFilter ()
 ~MinMaxCurvatureFlowImageFilter ()
void PrintSelf (std::ostream &os, Indent indent) const

Private Member Functions

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

Private Attributes

RadiusValueType m_StencilRadius

Detailed Description

template<class TInputImage, class TOutputImage>
class itk::MinMaxCurvatureFlowImageFilter< TInputImage, TOutputImage >

Denoise an image using min/max curvature flow.

MinMaxCurvatureFlowImageFilter implements a curvature driven image denoising algorithm. Iso-brightness contours in the grayscale input image are viewed as a level set. The level set is then evolved using a curvature-based speed function:

\[ I_t = F_{\mbox{minmax}} |\nabla I| \]

where $ F_{\mbox{minmax}} = \max(\kappa,0) $ if $ \mbox{Avg}_{\mbox{stencil}}(x) $ is less than or equal to $ T_{thresold} $ and $ \min(\kappa,0) $, otherwise. $ \kappa $ is the mean curvature of the iso-brightness contour at point $ x $.

In min/max curvature flow, movement is turned on or off depending on the scale of the noise one wants to remove. Switching depends on the average image value of a region of radius $ R $ around each point. The choice of $ R $, the stencil radius, governs the scale of the noise to be removed.

The threshold value $ T_{threshold} $ is the average intensity obtained in the direction perpendicular to the gradient at point $ x $ at the extrema of the local neighborhood.

This filter make use of the multi-threaded finite difference solver hierarchy. Updates are computed using a MinMaxCurvatureFlowFunction object. A zero flux Neumann boundary condition is used when computing derivatives near the data boundary.

Warning:
This filter assumes that the input and output types have the same dimensions. This filter also requires that the output image pixels are of a real type. This filter works for any dimensional images, however for dimensions greater than 3D, an expensive brute-force search is used to compute the local threshold.

Reference: "Level Set Methods and Fast Marching Methods", J.A. Sethian, Cambridge Press, Chapter 16, Second edition, 1999.

See also:
MinMaxCurvatureFlowFunction
CurvatureFlowImageFilter
BinaryMinMaxCurvatureFlowImageFilter

Definition at line 77 of file itkMinMaxCurvatureFlowImageFilter.h.


Member Typedef Documentation

template<class TInputImage , class TOutputImage >
typedef SmartPointer< const Self > itk::MinMaxCurvatureFlowImageFilter< TInputImage, TOutputImage >::ConstPointer
template<class TInputImage , class TOutputImage >
typedef Superclass::FiniteDifferenceFunctionType itk::MinMaxCurvatureFlowImageFilter< TInputImage, TOutputImage >::FiniteDifferenceFunctionType
template<class TInputImage , class TOutputImage >
typedef MinMaxCurvatureFlowFunction< OutputImageType > itk::MinMaxCurvatureFlowImageFilter< TInputImage, TOutputImage >::MinMaxCurvatureFlowFunctionType
template<class TInputImage , class TOutputImage >
typedef Superclass::OutputImageType itk::MinMaxCurvatureFlowImageFilter< TInputImage, TOutputImage >::OutputImageType
template<class TInputImage , class TOutputImage >
typedef SmartPointer< Self > itk::MinMaxCurvatureFlowImageFilter< TInputImage, TOutputImage >::Pointer
template<class TInputImage , class TOutputImage >
typedef FiniteDifferenceFunctionType::RadiusType itk::MinMaxCurvatureFlowImageFilter< TInputImage, TOutputImage >::RadiusType

Typedef support for the neighbour radius.

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

Definition at line 107 of file itkMinMaxCurvatureFlowImageFilter.h.

template<class TInputImage , class TOutputImage >
typedef RadiusType::SizeValueType itk::MinMaxCurvatureFlowImageFilter< TInputImage, TOutputImage >::RadiusValueType

Definition at line 108 of file itkMinMaxCurvatureFlowImageFilter.h.

template<class TInputImage , class TOutputImage >
typedef MinMaxCurvatureFlowImageFilter itk::MinMaxCurvatureFlowImageFilter< TInputImage, TOutputImage >::Self
template<class TInputImage , class TOutputImage >
typedef CurvatureFlowImageFilter< TInputImage, TOutputImage > itk::MinMaxCurvatureFlowImageFilter< TInputImage, TOutputImage >::Superclass

Constructor & Destructor Documentation

template<class TInputImage , class TOutputImage >
itk::MinMaxCurvatureFlowImageFilter< TInputImage, TOutputImage >::MinMaxCurvatureFlowImageFilter ( ) [protected]

End concept checking

template<class TInputImage , class TOutputImage >
itk::MinMaxCurvatureFlowImageFilter< TInputImage, TOutputImage >::~MinMaxCurvatureFlowImageFilter ( ) [inline, protected]

End concept checking

Definition at line 139 of file itkMinMaxCurvatureFlowImageFilter.h.

template<class TInputImage , class TOutputImage >
itk::MinMaxCurvatureFlowImageFilter< TInputImage, TOutputImage >::MinMaxCurvatureFlowImageFilter ( const Self ) [private]

Member Function Documentation

template<class TInputImage , class TOutputImage >
virtual::itk::LightObject::Pointer itk::MinMaxCurvatureFlowImageFilter< TInputImage, TOutputImage >::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::CurvatureFlowImageFilter< TInputImage, TOutputImage >.

Reimplemented in itk::BinaryMinMaxCurvatureFlowImageFilter< TInputImage, TOutputImage >.

template<class TInputImage , class TOutputImage >
virtual const char* itk::MinMaxCurvatureFlowImageFilter< TInputImage, TOutputImage >::GetNameOfClass ( ) const [virtual]

Run-time type information (and related methods).

Reimplemented from itk::CurvatureFlowImageFilter< TInputImage, TOutputImage >.

Reimplemented in itk::BinaryMinMaxCurvatureFlowImageFilter< TInputImage, TOutputImage >.

template<class TInputImage , class TOutputImage >
virtual RadiusValueType itk::MinMaxCurvatureFlowImageFilter< TInputImage, TOutputImage >::GetStencilRadius ( ) const [virtual]

Set/Get the stencil radius.

template<class TInputImage , class TOutputImage >
virtual void itk::MinMaxCurvatureFlowImageFilter< TInputImage, TOutputImage >::InitializeIteration ( ) [protected, virtual]

Initialize the state of filter and equation before each iteration. Progress feeback is implemented as part of this method.

Reimplemented from itk::CurvatureFlowImageFilter< TInputImage, TOutputImage >.

Reimplemented in itk::BinaryMinMaxCurvatureFlowImageFilter< TInputImage, TOutputImage >.

template<class TInputImage , class TOutputImage >
static Pointer itk::MinMaxCurvatureFlowImageFilter< TInputImage, TOutputImage >::New ( ) [static]

Method for creation through the object factory.

Reimplemented from itk::CurvatureFlowImageFilter< TInputImage, TOutputImage >.

Reimplemented in itk::BinaryMinMaxCurvatureFlowImageFilter< TInputImage, TOutputImage >.

template<class TInputImage , class TOutputImage >
void itk::MinMaxCurvatureFlowImageFilter< TInputImage, TOutputImage >::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::CurvatureFlowImageFilter< TInputImage, TOutputImage >.

Reimplemented in itk::BinaryMinMaxCurvatureFlowImageFilter< TInputImage, TOutputImage >.

template<class TInputImage , class TOutputImage >
void itk::MinMaxCurvatureFlowImageFilter< TInputImage, TOutputImage >::PrintSelf ( std::ostream &  os,
Indent  indent 
) const [protected, virtual]
template<class TInputImage , class TOutputImage >
virtual void itk::MinMaxCurvatureFlowImageFilter< TInputImage, TOutputImage >::SetStencilRadius ( RadiusValueType  _arg) [virtual]

Set/Get the stencil radius.

template<class TInputImage , class TOutputImage >
itk::MinMaxCurvatureFlowImageFilter< TInputImage, TOutputImage >::typedef ( Concept::Convertible< long, typename TOutputImage::PixelType >  )

This class requires LongConvertibleToOutputCheck in the form of ( Concept::Convertible< long, typename TOutputImage::PixelType > )

template<class TInputImage , class TOutputImage >
itk::MinMaxCurvatureFlowImageFilter< TInputImage, TOutputImage >::typedef ( Concept::Convertible< unsigned long, typename TOutputImage::PixelType >  )

Begin concept checking This class requires UnsignedLongConvertibleToOutputCheck in the form of ( Concept::Convertible< unsigned long, typename TOutputImage::PixelType > )

template<class TInputImage , class TOutputImage >
itk::MinMaxCurvatureFlowImageFilter< TInputImage, TOutputImage >::typedef ( Concept::GreaterThanComparable< typename TOutputImage::PixelType, unsigned long >  )

This class requires OutputGreaterThanUnsignedLongCheck in the form of ( Concept::GreaterThanComparable< typename TOutputImage::PixelType, unsigned long > )

template<class TInputImage , class TOutputImage >
itk::MinMaxCurvatureFlowImageFilter< TInputImage, TOutputImage >::typedef ( Concept::LessThanComparable< typename TOutputImage::PixelType >  )

This class requires OutputLessThanComparableCheck in the form of ( Concept::LessThanComparable< typename TOutputImage::PixelType > )

template<class TInputImage , class TOutputImage >
itk::MinMaxCurvatureFlowImageFilter< TInputImage, TOutputImage >::typedef ( Concept::AdditiveOperators< unsigned long, typename TOutputImage::PixelType >  )

This class requires UnsignedLongOutputAditiveOperatorsCheck in the form of ( Concept::AdditiveOperators< unsigned long, typename TOutputImage::PixelType > )

template<class TInputImage , class TOutputImage >
itk::MinMaxCurvatureFlowImageFilter< TInputImage, TOutputImage >::typedef ( Concept::MultiplyAndAssignOperator< typename TOutputImage::PixelType, double >  )

This class requires OutputDoubleMultiplyAndAssignOperatorCheck in the form of ( Concept::MultiplyAndAssignOperator< typename TOutputImage::PixelType, double > )

template<class TInputImage , class TOutputImage >
itk::MinMaxCurvatureFlowImageFilter< TInputImage, TOutputImage >::typedef ( Concept::Comparable< typename TOutputImage::PixelType, double >  )

This class requires OutputDoubleComparableCheck in the form of ( Concept::Comparable< typename TOutputImage::PixelType, double > )


Member Data Documentation

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

Dimensionality of input and output data is assumed to be the same. It is inherited from the superclass.

Reimplemented from itk::CurvatureFlowImageFilter< TInputImage, TOutputImage >.

Reimplemented in itk::BinaryMinMaxCurvatureFlowImageFilter< TInputImage, TOutputImage >.

Definition at line 104 of file itkMinMaxCurvatureFlowImageFilter.h.

template<class TInputImage , class TOutputImage >
RadiusValueType itk::MinMaxCurvatureFlowImageFilter< TInputImage, TOutputImage >::m_StencilRadius [private]

Definition at line 151 of file itkMinMaxCurvatureFlowImageFilter.h.


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