itk::DiffeomorphicDemonsRegistrationFilter< TFixedImage, TMovingImage, TDeformationField > Class Template Reference

Deformably register two images using a diffeomorphic demons algorithm. More...

#include <itkDiffeomorphicDemonsRegistrationFilter.h>

Inheritance diagram for itk::DiffeomorphicDemonsRegistrationFilter< TFixedImage, TMovingImage, TDeformationField >:
PDEDeformableRegistrationFilter

List of all members.

Public Types

typedef AdderType::Pointer AdderPointer
typedef AddImageFilter
< DeformationFieldType,
DeformationFieldType,
DeformationFieldType
AdderType
typedef SmartPointer< const SelfConstPointer
typedef
Superclass::DeformationFieldPointer 
DeformationFieldPointer
typedef
Superclass::DeformationFieldType 
DeformationFieldType
typedef
ESMDemonsRegistrationFunction
< FixedImageType,
MovingImageType,
DeformationFieldType
DemonsRegistrationFunctionType
typedef
FieldExponentiatorType::Pointer 
FieldExponentiatorPointer
typedef
ExponentialDeformationFieldImageFilter
< DeformationFieldType,
DeformationFieldType
FieldExponentiatorType
typedef
FieldInterpolatorType::OutputType 
FieldInterpolatorOutputType
typedef
FieldInterpolatorType::Pointer 
FieldInterpolatorPointer
typedef
VectorLinearInterpolateNearestNeighborExtrapolateImageFunction
< DeformationFieldType, double > 
FieldInterpolatorType
typedef
Superclass::FiniteDifferenceFunctionType 
FiniteDifferenceFunctionType
typedef
Superclass::FixedImagePointer 
FixedImagePointer
typedef Superclass::FixedImageType FixedImageType
typedef
DemonsRegistrationFunctionType::GradientType 
GradientType
typedef
Superclass::MovingImagePointer 
MovingImagePointer
typedef Superclass::MovingImageType MovingImageType
typedef
MultiplyByConstantType::Pointer 
MultiplyByConstantPointer
typedef
MultiplyByConstantImageFilter
< DeformationFieldType,
TimeStepType,
DeformationFieldType
MultiplyByConstantType
typedef SmartPointer< SelfPointer
typedef
DiffeomorphicDemonsRegistrationFilter 
Self
typedef
PDEDeformableRegistrationFilter
< TFixedImage, TMovingImage,
TDeformationField > 
Superclass
typedef
FiniteDifferenceFunctionType::TimeStepType 
TimeStepType
typedef VectorWarperType::Pointer VectorWarperPointer
typedef WarpVectorImageFilter
< DeformationFieldType,
DeformationFieldType,
DeformationFieldType
VectorWarperType

Public Member Functions

virtual double GetIntensityDifferenceThreshold () const
virtual double GetMaximumUpdateStepLength () const
virtual double GetMetric () const
virtual const double & GetRMSChange () const
virtual GradientType GetUseGradientType () const
 itkNewMacro (Self)
 itkTypeMacro (DiffeomorphicDemonsRegistrationFilter, PDEDeformableRegistrationFilter)
virtual void SetIntensityDifferenceThreshold (double)
virtual void SetMaximumUpdateStepLength (double)
virtual void SetUseGradientType (GradientType gtype)

Protected Member Functions

virtual void AllocateUpdateBuffer ()
virtual void ApplyUpdate (TimeStepType dt)
 DiffeomorphicDemonsRegistrationFilter ()
virtual void InitializeIteration ()
void PrintSelf (std::ostream &os, Indent indent) const
 ~DiffeomorphicDemonsRegistrationFilter ()

Private Member Functions

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

Private Attributes

AdderPointer m_Adder
FieldExponentiatorPointer m_Exponentiator
MultiplyByConstantPointer m_Multiplier
VectorWarperPointer m_Warper

Detailed Description

template<class TFixedImage, class TMovingImage, class TDeformationField>
class itk::DiffeomorphicDemonsRegistrationFilter< TFixedImage, TMovingImage, TDeformationField >

Deformably register two images using a diffeomorphic demons algorithm.

This class was contributed by Tom Vercauteren, INRIA & Mauna Kea Technologies, based on a variation of the DemonsRegistrationFilter. The basic modification is to use diffeomorphism exponentials.

See T. Vercauteren, X. Pennec, A. Perchant and N. Ayache, "Non-parametric Diffeomorphic Image Registration with the Demons Algorithm", Proc. of MICCAI 2007.

DiffeomorphicDemonsRegistrationFilter implements the demons deformable algorithm that register two images by computing the deformation field which will map a moving image onto a fixed image.

A deformation field is represented as a image whose pixel type is some vector type with at least N elements, where N is the dimension of the fixed image. The vector type must support element access via operator []. It is assumed that the vector elements behave like floating point scalars.

This class is templated over the fixed image type, moving image type and the deformation field type.

The input fixed and moving images are set via methods SetFixedImage and SetMovingImage respectively. An initial deformation field maybe set via SetInitialDeformationField or SetInput. If no initial field is set, a zero field is used as the initial condition.

The output deformation field can be obtained via methods GetOutput or GetDeformationField.

This class make use of the finite difference solver hierarchy. Update for each iteration is computed in DemonsRegistrationFunction.

Author:
Tom Vercauteren, INRIA & Mauna Kea Technologies
Warning:
This filter assumes that the fixed image type, moving image type and deformation field type all have the same number of dimensions.

This implementation was taken from the Insight Journal paper: http://hdl.handle.net/1926/510

See also:
DemonsRegistrationFilter
DemonsRegistrationFunction

This class was contributed by Tom Vercauteren, INRIA & Mauna Kea Technologies, based on a variation of the DemonsRegistrationFilter. The basic modification is to use diffeomorphism exponentials.

See T. Vercauteren, X. Pennec, A. Perchant and N. Ayache, "Non-parametric Diffeomorphic Image Registration with the Demons Algorithm", Proc. of MICCAI 2007.

DiffeomorphicDemonsRegistrationFilter implements the demons deformable algorithm that register two images by computing the deformation field which will map a moving image onto a fixed image.

A deformation field is represented as a image whose pixel type is some vector type with at least N elements, where N is the dimension of the fixed image. The vector type must support element access via operator []. It is assumed that the vector elements behave like floating point scalars.

This class is templated over the fixed image type, moving image type and the deformation field type.

The input fixed and moving images are set via methods SetFixedImage and SetMovingImage respectively. An initial deformation field maybe set via SetInitialDeformationField or SetInput. If no initial field is set, a zero field is used as the initial condition.

The output deformation field can be obtained via methods GetOutput or GetDeformationField.

This class make use of the finite difference solver hierarchy. Update for each iteration is computed in DemonsRegistrationFunction.

Author:
Tom Vercauteren, INRIA & Mauna Kea Technologies
Warning:
This filter assumes that the fixed image type, moving image type and deformation field type all have the same number of dimensions.
See also:
DemonsRegistrationFilter
DemonsRegistrationFunction

Member Typedef Documentation

template<class TFixedImage , class TMovingImage , class TDeformationField >
typedef AdderType::Pointer itk::DiffeomorphicDemonsRegistrationFilter< TFixedImage, TMovingImage, TDeformationField >::AdderPointer
template<class TFixedImage , class TMovingImage , class TDeformationField >
typedef AddImageFilter< DeformationFieldType, DeformationFieldType, DeformationFieldType> itk::DiffeomorphicDemonsRegistrationFilter< TFixedImage, TMovingImage, TDeformationField >::AdderType
template<class TFixedImage , class TMovingImage , class TDeformationField >
typedef SmartPointer<const Self> itk::DiffeomorphicDemonsRegistrationFilter< TFixedImage, TMovingImage, TDeformationField >::ConstPointer
template<class TFixedImage , class TMovingImage , class TDeformationField >
typedef Superclass::DeformationFieldPointer itk::DiffeomorphicDemonsRegistrationFilter< TFixedImage, TMovingImage, TDeformationField >::DeformationFieldPointer
template<class TFixedImage , class TMovingImage , class TDeformationField >
typedef Superclass::DeformationFieldType itk::DiffeomorphicDemonsRegistrationFilter< TFixedImage, TMovingImage, TDeformationField >::DeformationFieldType

Deformation field type.

template<class TFixedImage , class TMovingImage , class TDeformationField >
typedef ESMDemonsRegistrationFunction<FixedImageType,MovingImageType, DeformationFieldType> itk::DiffeomorphicDemonsRegistrationFilter< TFixedImage, TMovingImage, TDeformationField >::DemonsRegistrationFunctionType

DemonsRegistrationFilterFunction type.

template<class TFixedImage , class TMovingImage , class TDeformationField >
typedef FieldExponentiatorType::Pointer itk::DiffeomorphicDemonsRegistrationFilter< TFixedImage, TMovingImage, TDeformationField >::FieldExponentiatorPointer
template<class TFixedImage , class TMovingImage , class TDeformationField >
typedef ExponentialDeformationFieldImageFilter< DeformationFieldType, DeformationFieldType > itk::DiffeomorphicDemonsRegistrationFilter< TFixedImage, TMovingImage, TDeformationField >::FieldExponentiatorType
template<class TFixedImage , class TMovingImage , class TDeformationField >
typedef FieldInterpolatorType::OutputType itk::DiffeomorphicDemonsRegistrationFilter< TFixedImage, TMovingImage, TDeformationField >::FieldInterpolatorOutputType
template<class TFixedImage , class TMovingImage , class TDeformationField >
typedef FieldInterpolatorType::Pointer itk::DiffeomorphicDemonsRegistrationFilter< TFixedImage, TMovingImage, TDeformationField >::FieldInterpolatorPointer
template<class TFixedImage , class TMovingImage , class TDeformationField >
typedef VectorLinearInterpolateNearestNeighborExtrapolateImageFunction< DeformationFieldType, double> itk::DiffeomorphicDemonsRegistrationFilter< TFixedImage, TMovingImage, TDeformationField >::FieldInterpolatorType
template<class TFixedImage , class TMovingImage , class TDeformationField >
typedef Superclass::FiniteDifferenceFunctionType itk::DiffeomorphicDemonsRegistrationFilter< TFixedImage, TMovingImage, TDeformationField >::FiniteDifferenceFunctionType

FiniteDifferenceFunction type.

template<class TFixedImage , class TMovingImage , class TDeformationField >
typedef Superclass::FixedImagePointer itk::DiffeomorphicDemonsRegistrationFilter< TFixedImage, TMovingImage, TDeformationField >::FixedImagePointer
template<class TFixedImage , class TMovingImage , class TDeformationField >
typedef Superclass::FixedImageType itk::DiffeomorphicDemonsRegistrationFilter< TFixedImage, TMovingImage, TDeformationField >::FixedImageType

FixedImage image type.

template<class TFixedImage , class TMovingImage , class TDeformationField >
typedef DemonsRegistrationFunctionType::GradientType itk::DiffeomorphicDemonsRegistrationFilter< TFixedImage, TMovingImage, TDeformationField >::GradientType
template<class TFixedImage , class TMovingImage , class TDeformationField >
typedef Superclass::MovingImagePointer itk::DiffeomorphicDemonsRegistrationFilter< TFixedImage, TMovingImage, TDeformationField >::MovingImagePointer
template<class TFixedImage , class TMovingImage , class TDeformationField >
typedef Superclass::MovingImageType itk::DiffeomorphicDemonsRegistrationFilter< TFixedImage, TMovingImage, TDeformationField >::MovingImageType

MovingImage image type.

template<class TFixedImage , class TMovingImage , class TDeformationField >
typedef MultiplyByConstantType::Pointer itk::DiffeomorphicDemonsRegistrationFilter< TFixedImage, TMovingImage, TDeformationField >::MultiplyByConstantPointer
template<class TFixedImage , class TMovingImage , class TDeformationField >
typedef MultiplyByConstantImageFilter< DeformationFieldType, TimeStepType, DeformationFieldType > itk::DiffeomorphicDemonsRegistrationFilter< TFixedImage, TMovingImage, TDeformationField >::MultiplyByConstantType

Exp and composition typedefs

template<class TFixedImage , class TMovingImage , class TDeformationField >
typedef SmartPointer<Self> itk::DiffeomorphicDemonsRegistrationFilter< TFixedImage, TMovingImage, TDeformationField >::Pointer
template<class TFixedImage , class TMovingImage , class TDeformationField >
typedef DiffeomorphicDemonsRegistrationFilter itk::DiffeomorphicDemonsRegistrationFilter< TFixedImage, TMovingImage, TDeformationField >::Self

Standard class typedefs.

template<class TFixedImage , class TMovingImage , class TDeformationField >
typedef PDEDeformableRegistrationFilter< TFixedImage, TMovingImage,TDeformationField> itk::DiffeomorphicDemonsRegistrationFilter< TFixedImage, TMovingImage, TDeformationField >::Superclass
template<class TFixedImage , class TMovingImage , class TDeformationField >
typedef FiniteDifferenceFunctionType::TimeStepType itk::DiffeomorphicDemonsRegistrationFilter< TFixedImage, TMovingImage, TDeformationField >::TimeStepType

Take timestep type from the FiniteDifferenceFunction.

template<class TFixedImage , class TMovingImage , class TDeformationField >
typedef VectorWarperType::Pointer itk::DiffeomorphicDemonsRegistrationFilter< TFixedImage, TMovingImage, TDeformationField >::VectorWarperPointer
template<class TFixedImage , class TMovingImage , class TDeformationField >
typedef WarpVectorImageFilter< DeformationFieldType, DeformationFieldType, DeformationFieldType> itk::DiffeomorphicDemonsRegistrationFilter< TFixedImage, TMovingImage, TDeformationField >::VectorWarperType

Constructor & Destructor Documentation

template<class TFixedImage , class TMovingImage , class TDeformationField >
itk::DiffeomorphicDemonsRegistrationFilter< TFixedImage, TMovingImage, TDeformationField >::DiffeomorphicDemonsRegistrationFilter (  )  [protected]
template<class TFixedImage , class TMovingImage , class TDeformationField >
itk::DiffeomorphicDemonsRegistrationFilter< TFixedImage, TMovingImage, TDeformationField >::~DiffeomorphicDemonsRegistrationFilter (  )  [inline, protected]
template<class TFixedImage , class TMovingImage , class TDeformationField >
itk::DiffeomorphicDemonsRegistrationFilter< TFixedImage, TMovingImage, TDeformationField >::DiffeomorphicDemonsRegistrationFilter ( const Self  )  [private]

Member Function Documentation

template<class TFixedImage , class TMovingImage , class TDeformationField >
virtual void itk::DiffeomorphicDemonsRegistrationFilter< TFixedImage, TMovingImage, TDeformationField >::AllocateUpdateBuffer (  )  [protected, virtual]

This method allocates storage in m_UpdateBuffer. It is called from FiniteDifferenceFilter::GenerateData().

template<class TFixedImage , class TMovingImage , class TDeformationField >
virtual void itk::DiffeomorphicDemonsRegistrationFilter< TFixedImage, TMovingImage, TDeformationField >::ApplyUpdate ( TimeStepType  dt  )  [protected, virtual]

Apply update.

template<class TFixedImage , class TMovingImage , class TDeformationField >
virtual double itk::DiffeomorphicDemonsRegistrationFilter< TFixedImage, TMovingImage, TDeformationField >::GetIntensityDifferenceThreshold (  )  const [virtual]
template<class TFixedImage , class TMovingImage , class TDeformationField >
virtual double itk::DiffeomorphicDemonsRegistrationFilter< TFixedImage, TMovingImage, TDeformationField >::GetMaximumUpdateStepLength (  )  const [virtual]
template<class TFixedImage , class TMovingImage , class TDeformationField >
virtual double itk::DiffeomorphicDemonsRegistrationFilter< TFixedImage, TMovingImage, TDeformationField >::GetMetric (  )  const [virtual]

Get the metric value. The metric value is the mean square difference in intensity between the fixed image and transforming moving image computed over the the overlapping region between the two images. This value is calculated for the current iteration

template<class TFixedImage , class TMovingImage , class TDeformationField >
virtual const double& itk::DiffeomorphicDemonsRegistrationFilter< TFixedImage, TMovingImage, TDeformationField >::GetRMSChange (  )  const [virtual]
template<class TFixedImage , class TMovingImage , class TDeformationField >
virtual GradientType itk::DiffeomorphicDemonsRegistrationFilter< TFixedImage, TMovingImage, TDeformationField >::GetUseGradientType (  )  const [virtual]
template<class TFixedImage , class TMovingImage , class TDeformationField >
virtual void itk::DiffeomorphicDemonsRegistrationFilter< TFixedImage, TMovingImage, TDeformationField >::InitializeIteration (  )  [protected, virtual]

Initialize the state of filter and equation before each iteration.

template<class TFixedImage , class TMovingImage , class TDeformationField >
itk::DiffeomorphicDemonsRegistrationFilter< TFixedImage, TMovingImage, TDeformationField >::itkNewMacro ( Self   ) 

Method for creation through the object factory.

template<class TFixedImage , class TMovingImage , class TDeformationField >
itk::DiffeomorphicDemonsRegistrationFilter< TFixedImage, TMovingImage, TDeformationField >::itkTypeMacro ( DiffeomorphicDemonsRegistrationFilter< TFixedImage, TMovingImage, TDeformationField >  ,
PDEDeformableRegistrationFilter   
)

Run-time type information (and related methods).

template<class TFixedImage , class TMovingImage , class TDeformationField >
void itk::DiffeomorphicDemonsRegistrationFilter< TFixedImage, TMovingImage, TDeformationField >::operator= ( const Self  )  [private]
template<class TFixedImage , class TMovingImage , class TDeformationField >
void itk::DiffeomorphicDemonsRegistrationFilter< TFixedImage, TMovingImage, TDeformationField >::PrintSelf ( std::ostream &  os,
Indent  indent 
) const [protected]
template<class TFixedImage , class TMovingImage , class TDeformationField >
virtual void itk::DiffeomorphicDemonsRegistrationFilter< TFixedImage, TMovingImage, TDeformationField >::SetIntensityDifferenceThreshold ( double   )  [virtual]

Set/Get the threshold below which the absolute difference of intensity yields a match. When the intensities match between a moving and fixed image pixel, the update vector (for that iteration) will be the zero vector. Default is 0.001.

template<class TFixedImage , class TMovingImage , class TDeformationField >
virtual void itk::DiffeomorphicDemonsRegistrationFilter< TFixedImage, TMovingImage, TDeformationField >::SetMaximumUpdateStepLength ( double   )  [virtual]
template<class TFixedImage , class TMovingImage , class TDeformationField >
virtual void itk::DiffeomorphicDemonsRegistrationFilter< TFixedImage, TMovingImage, TDeformationField >::SetUseGradientType ( GradientType  gtype  )  [virtual]

Member Data Documentation

template<class TFixedImage , class TMovingImage , class TDeformationField >
AdderPointer itk::DiffeomorphicDemonsRegistrationFilter< TFixedImage, TMovingImage, TDeformationField >::m_Adder [private]
template<class TFixedImage , class TMovingImage , class TDeformationField >
FieldExponentiatorPointer itk::DiffeomorphicDemonsRegistrationFilter< TFixedImage, TMovingImage, TDeformationField >::m_Exponentiator [private]
template<class TFixedImage , class TMovingImage , class TDeformationField >
MultiplyByConstantPointer itk::DiffeomorphicDemonsRegistrationFilter< TFixedImage, TMovingImage, TDeformationField >::m_Multiplier [private]
template<class TFixedImage , class TMovingImage , class TDeformationField >
VectorWarperPointer itk::DiffeomorphicDemonsRegistrationFilter< TFixedImage, TMovingImage, TDeformationField >::m_Warper [private]

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

Generated on 6 Apr 2011 for Slicer3 by  doxygen 1.6.1