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

Computes a diffeomorphic displacement field as the Lie group exponential of a vector field. More...

#include <itkExponentialDisplacementFieldImageFilter.h>

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

List of all members.

Public Types

typedef SmartPointer< const SelfConstPointer
typedef
InputImageType::ConstPointer 
InputImageConstPointer
typedef InputImageType::Pointer InputImagePointer
typedef TInputImage InputImageType
typedef
InputPixelType::RealValueType 
InputPixelRealValueType
typedef InputImageType::PixelType InputPixelType
typedef OutputImageType::Pointer OutputImagePointer
typedef TOutputImage OutputImageType
typedef OutputImageType::PixelType OutputPixelType
typedef SmartPointer< SelfPointer
typedef
ExponentialDisplacementFieldImageFilter 
Self
typedef ImageToImageFilter
< TInputImage, TOutputImage > 
Superclass

Public Member Functions

virtual ::itk::LightObject::Pointer CreateAnother (void) const
virtual const char * GetNameOfClass () const
 typedef (Concept::SameDimension< ImageDimension, PixelDimension >) SameDimensionCheck2
 typedef (Concept::SameDimension< ImageDimension, OutputImageDimension >) SameDimensionCheck1
 typedef (Concept::HasNumericTraits< typename OutputPixelType::ValueType >) OutputHasNumericTraitsCheck
 typedef (Concept::SameDimension< ImageDimension, OutputPixelDimension >) SameDimensionCheck3
virtual void SetMaximumNumberOfIterations (unsigned int _arg)
virtual unsigned int GetMaximumNumberOfIterations () const
virtual void SetAutomaticNumberOfIterations (bool _arg)
virtual bool GetAutomaticNumberOfIterations () const
virtual void AutomaticNumberOfIterationsOn ()
virtual void AutomaticNumberOfIterationsOff ()
virtual void SetComputeInverse (bool _arg)
virtual bool GetComputeInverse () const
virtual void ComputeInverseOn ()
virtual void ComputeInverseOff ()

Static Public Member Functions

static Pointer New ()

Static Public Attributes

static const unsigned int ImageDimension = TInputImage::ImageDimension
static const unsigned int OutputImageDimension = TInputImage::ImageDimension
static const unsigned int PixelDimension = InputPixelType::Dimension
static const unsigned int OutputPixelDimension = OutputPixelType::Dimension

Protected Types

typedef AdderType::Pointer AdderPointer
typedef AddImageFilter
< OutputImageType,
OutputImageType,
OutputImageType
AdderType
typedef CasterType::Pointer CasterPointer
typedef CastImageFilter
< InputImageType,
OutputImageType
CasterType
typedef
DivideByConstantType::Pointer 
DivideByConstantPointer
typedef DivideImageFilter
< InputImageType, itk::Image
< InputPixelRealValueType,
ImageDimension >
, OutputImageType
DivideByConstantType
typedef
FieldInterpolatorType::OutputType 
FieldInterpolatorOutputType
typedef
FieldInterpolatorType::Pointer 
FieldInterpolatorPointer
typedef
VectorLinearInterpolateNearestNeighborExtrapolateImageFunction
< OutputImageType, double > 
FieldInterpolatorType
typedef InputImageType::RegionType RegionType
typedef VectorWarperType::Pointer VectorWarperPointer
typedef WarpVectorImageFilter
< OutputImageType,
OutputImageType,
OutputImageType
VectorWarperType

Protected Member Functions

 ExponentialDisplacementFieldImageFilter ()
void GenerateData ()
void PrintSelf (std::ostream &os, Indent indent) const
virtual ~ExponentialDisplacementFieldImageFilter ()

Private Member Functions

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

Private Attributes

AdderPointer m_Adder
bool m_AutomaticNumberOfIterations
CasterPointer m_Caster
bool m_ComputeInverse
DivideByConstantPointer m_Divider
unsigned int m_MaximumNumberOfIterations
VectorWarperPointer m_Warper

Detailed Description

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

Computes a diffeomorphic displacement field as the Lie group exponential of a vector field.

ExponentialDisplacementFieldImageFilter takes a 'smooth' vector field as input and computes the displacement field that is its exponential.

Given that both the input and output displacement field are represented as discrete images with pixel type vector, the exponential will be only an estimation and will probably not correspond to a perfect exponential. The precision of the exponential can be improved at the price of increasing the computation time (number of iterations).

The method used for computing the exponential displacement field is an iterative scaling and squaring (cf Arsigny et al., "A Log-Euclidean Framework for Statistics on Diffeomorphisms", MICCAI'06).

\[ exp(\Phi) = exp( \frac{\Phi}{2^N} )^{2^N} \]

This filter expects both the input and output images to be of pixel type Vector.

Author:
Tom Vercauteren, INRIA & Mauna Kea Technologies

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

Definition at line 63 of file itkExponentialDisplacementFieldImageFilter.h.


Member Typedef Documentation

template<class TInputImage , class TOutputImage >
typedef AdderType::Pointer itk::ExponentialDisplacementFieldImageFilter< TInputImage, TOutputImage >::AdderPointer [protected]
template<class TInputImage , class TOutputImage >
typedef AddImageFilter< OutputImageType, OutputImageType, OutputImageType > itk::ExponentialDisplacementFieldImageFilter< TInputImage, TOutputImage >::AdderType [protected]
template<class TInputImage , class TOutputImage >
typedef CasterType::Pointer itk::ExponentialDisplacementFieldImageFilter< TInputImage, TOutputImage >::CasterPointer [protected]
template<class TInputImage , class TOutputImage >
typedef CastImageFilter< InputImageType, OutputImageType > itk::ExponentialDisplacementFieldImageFilter< TInputImage, TOutputImage >::CasterType [protected]
template<class TInputImage , class TOutputImage >
typedef SmartPointer< const Self > itk::ExponentialDisplacementFieldImageFilter< TInputImage, TOutputImage >::ConstPointer
template<class TInputImage , class TOutputImage >
typedef DivideByConstantType::Pointer itk::ExponentialDisplacementFieldImageFilter< TInputImage, TOutputImage >::DivideByConstantPointer [protected]
template<class TInputImage , class TOutputImage >
typedef DivideImageFilter< InputImageType, itk::Image<InputPixelRealValueType, ImageDimension>, OutputImageType > itk::ExponentialDisplacementFieldImageFilter< TInputImage, TOutputImage >::DivideByConstantType [protected]
template<class TInputImage , class TOutputImage >
typedef FieldInterpolatorType::OutputType itk::ExponentialDisplacementFieldImageFilter< TInputImage, TOutputImage >::FieldInterpolatorOutputType [protected]
template<class TInputImage , class TOutputImage >
typedef FieldInterpolatorType::Pointer itk::ExponentialDisplacementFieldImageFilter< TInputImage, TOutputImage >::FieldInterpolatorPointer [protected]
template<class TInputImage , class TOutputImage >
typedef VectorLinearInterpolateNearestNeighborExtrapolateImageFunction< OutputImageType, double > itk::ExponentialDisplacementFieldImageFilter< TInputImage, TOutputImage >::FieldInterpolatorType [protected]
template<class TInputImage , class TOutputImage >
typedef InputImageType::ConstPointer itk::ExponentialDisplacementFieldImageFilter< TInputImage, TOutputImage >::InputImageConstPointer
template<class TInputImage , class TOutputImage >
typedef InputImageType::Pointer itk::ExponentialDisplacementFieldImageFilter< TInputImage, TOutputImage >::InputImagePointer
template<class TInputImage , class TOutputImage >
typedef TInputImage itk::ExponentialDisplacementFieldImageFilter< TInputImage, TOutputImage >::InputImageType

Some convenient typedefs.

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

Definition at line 77 of file itkExponentialDisplacementFieldImageFilter.h.

template<class TInputImage , class TOutputImage >
typedef InputPixelType::RealValueType itk::ExponentialDisplacementFieldImageFilter< TInputImage, TOutputImage >::InputPixelRealValueType

Definition at line 84 of file itkExponentialDisplacementFieldImageFilter.h.

template<class TInputImage , class TOutputImage >
typedef InputImageType::PixelType itk::ExponentialDisplacementFieldImageFilter< TInputImage, TOutputImage >::InputPixelType

Definition at line 83 of file itkExponentialDisplacementFieldImageFilter.h.

template<class TInputImage , class TOutputImage >
typedef OutputImageType::Pointer itk::ExponentialDisplacementFieldImageFilter< TInputImage, TOutputImage >::OutputImagePointer

Reimplemented from itk::ImageSource< TOutputImage >.

Definition at line 87 of file itkExponentialDisplacementFieldImageFilter.h.

template<class TInputImage , class TOutputImage >
typedef TOutputImage itk::ExponentialDisplacementFieldImageFilter< TInputImage, TOutputImage >::OutputImageType

Some convenient typedefs.

Reimplemented from itk::ImageSource< TOutputImage >.

Definition at line 86 of file itkExponentialDisplacementFieldImageFilter.h.

template<class TInputImage , class TOutputImage >
typedef OutputImageType::PixelType itk::ExponentialDisplacementFieldImageFilter< TInputImage, TOutputImage >::OutputPixelType

Definition at line 88 of file itkExponentialDisplacementFieldImageFilter.h.

template<class TInputImage , class TOutputImage >
typedef SmartPointer< Self > itk::ExponentialDisplacementFieldImageFilter< TInputImage, TOutputImage >::Pointer
template<class TInputImage , class TOutputImage >
typedef InputImageType::RegionType itk::ExponentialDisplacementFieldImageFilter< TInputImage, TOutputImage >::RegionType [protected]
template<class TInputImage , class TOutputImage >
typedef ExponentialDisplacementFieldImageFilter itk::ExponentialDisplacementFieldImageFilter< TInputImage, TOutputImage >::Self

Standard class typedefs.

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

Definition at line 68 of file itkExponentialDisplacementFieldImageFilter.h.

template<class TInputImage , class TOutputImage >
typedef ImageToImageFilter< TInputImage, TOutputImage > itk::ExponentialDisplacementFieldImageFilter< TInputImage, TOutputImage >::Superclass
template<class TInputImage , class TOutputImage >
typedef VectorWarperType::Pointer itk::ExponentialDisplacementFieldImageFilter< TInputImage, TOutputImage >::VectorWarperPointer [protected]
template<class TInputImage , class TOutputImage >
typedef WarpVectorImageFilter< OutputImageType, OutputImageType, OutputImageType > itk::ExponentialDisplacementFieldImageFilter< TInputImage, TOutputImage >::VectorWarperType [protected]

Constructor & Destructor Documentation

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

End concept checking

template<class TInputImage , class TOutputImage >
virtual itk::ExponentialDisplacementFieldImageFilter< TInputImage, TOutputImage >::~ExponentialDisplacementFieldImageFilter ( ) [inline, protected, virtual]
template<class TInputImage , class TOutputImage >
itk::ExponentialDisplacementFieldImageFilter< TInputImage, TOutputImage >::ExponentialDisplacementFieldImageFilter ( const Self ) [private]

Member Function Documentation

template<class TInputImage , class TOutputImage >
virtual void itk::ExponentialDisplacementFieldImageFilter< TInputImage, TOutputImage >::AutomaticNumberOfIterationsOff ( ) [virtual]

If AutomaticNumberOfIterations is off, the number of iterations is given by MaximumNumberOfIterations. If it is on, we try to get the lowest good number (which may not be larger than MaximumNumberOfIterations )

template<class TInputImage , class TOutputImage >
virtual void itk::ExponentialDisplacementFieldImageFilter< TInputImage, TOutputImage >::AutomaticNumberOfIterationsOn ( ) [virtual]

If AutomaticNumberOfIterations is off, the number of iterations is given by MaximumNumberOfIterations. If it is on, we try to get the lowest good number (which may not be larger than MaximumNumberOfIterations )

template<class TInputImage , class TOutputImage >
virtual void itk::ExponentialDisplacementFieldImageFilter< TInputImage, TOutputImage >::ComputeInverseOff ( ) [virtual]

If ComputeInverse is on, the filter will compute the exponential of the opposite (minus) of the input vector field. The output displacement fields computed with ComputeInverse set to on and off respectively therefore represent spatial transformations that are inverses of each other.

template<class TInputImage , class TOutputImage >
virtual void itk::ExponentialDisplacementFieldImageFilter< TInputImage, TOutputImage >::ComputeInverseOn ( ) [virtual]

If ComputeInverse is on, the filter will compute the exponential of the opposite (minus) of the input vector field. The output displacement fields computed with ComputeInverse set to on and off respectively therefore represent spatial transformations that are inverses of each other.

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

template<class TInputImage , class TOutputImage >
void itk::ExponentialDisplacementFieldImageFilter< TInputImage, TOutputImage >::GenerateData ( ) [protected, virtual]
template<class TInputImage , class TOutputImage >
virtual bool itk::ExponentialDisplacementFieldImageFilter< TInputImage, TOutputImage >::GetAutomaticNumberOfIterations ( ) const [virtual]

If AutomaticNumberOfIterations is off, the number of iterations is given by MaximumNumberOfIterations. If it is on, we try to get the lowest good number (which may not be larger than MaximumNumberOfIterations )

template<class TInputImage , class TOutputImage >
virtual bool itk::ExponentialDisplacementFieldImageFilter< TInputImage, TOutputImage >::GetComputeInverse ( ) const [virtual]

If ComputeInverse is on, the filter will compute the exponential of the opposite (minus) of the input vector field. The output displacement fields computed with ComputeInverse set to on and off respectively therefore represent spatial transformations that are inverses of each other.

template<class TInputImage , class TOutputImage >
virtual unsigned int itk::ExponentialDisplacementFieldImageFilter< TInputImage, TOutputImage >::GetMaximumNumberOfIterations ( ) const [virtual]

Specify the maximum number of iteration.

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

Run-time type information (and related methods).

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

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

Method for creation through the object factory.

Reimplemented from itk::Object.

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

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

template<class TInputImage , class TOutputImage >
virtual void itk::ExponentialDisplacementFieldImageFilter< TInputImage, TOutputImage >::SetAutomaticNumberOfIterations ( bool  _arg) [virtual]

If AutomaticNumberOfIterations is off, the number of iterations is given by MaximumNumberOfIterations. If it is on, we try to get the lowest good number (which may not be larger than MaximumNumberOfIterations )

template<class TInputImage , class TOutputImage >
virtual void itk::ExponentialDisplacementFieldImageFilter< TInputImage, TOutputImage >::SetComputeInverse ( bool  _arg) [virtual]

If ComputeInverse is on, the filter will compute the exponential of the opposite (minus) of the input vector field. The output displacement fields computed with ComputeInverse set to on and off respectively therefore represent spatial transformations that are inverses of each other.

template<class TInputImage , class TOutputImage >
virtual void itk::ExponentialDisplacementFieldImageFilter< TInputImage, TOutputImage >::SetMaximumNumberOfIterations ( unsigned int  _arg) [virtual]

Specify the maximum number of iteration.

template<class TInputImage , class TOutputImage >
itk::ExponentialDisplacementFieldImageFilter< TInputImage, TOutputImage >::typedef ( Concept::SameDimension< ImageDimension, PixelDimension )

This class requires SameDimensionCheck2 in the form of ( Concept::SameDimension< ImageDimension, PixelDimension > )

template<class TInputImage , class TOutputImage >
itk::ExponentialDisplacementFieldImageFilter< TInputImage, TOutputImage >::typedef ( Concept::SameDimension< ImageDimension, OutputImageDimension )

This class requires SameDimensionCheck1 in the form of ( Concept::SameDimension< ImageDimension, OutputImageDimension > )

template<class TInputImage , class TOutputImage >
itk::ExponentialDisplacementFieldImageFilter< TInputImage, TOutputImage >::typedef ( Concept::HasNumericTraits< typename OutputPixelType::ValueType >  )

Begin concept checking This class requires OutputHasNumericTraitsCheck in the form of ( Concept::HasNumericTraits< typename OutputPixelType::ValueType > )

template<class TInputImage , class TOutputImage >
itk::ExponentialDisplacementFieldImageFilter< TInputImage, TOutputImage >::typedef ( Concept::SameDimension< ImageDimension, OutputPixelDimension )

This class requires SameDimensionCheck3 in the form of ( Concept::SameDimension< ImageDimension, OutputPixelDimension > )


Member Data Documentation

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

Image dimension.

Definition at line 116 of file itkExponentialDisplacementFieldImageFilter.h.

template<class TInputImage , class TOutputImage >
AdderPointer itk::ExponentialDisplacementFieldImageFilter< TInputImage, TOutputImage >::m_Adder [private]
template<class TInputImage , class TOutputImage >
bool itk::ExponentialDisplacementFieldImageFilter< TInputImage, TOutputImage >::m_AutomaticNumberOfIterations [private]
template<class TInputImage , class TOutputImage >
CasterPointer itk::ExponentialDisplacementFieldImageFilter< TInputImage, TOutputImage >::m_Caster [private]
template<class TInputImage , class TOutputImage >
bool itk::ExponentialDisplacementFieldImageFilter< TInputImage, TOutputImage >::m_ComputeInverse [private]
template<class TInputImage , class TOutputImage >
DivideByConstantPointer itk::ExponentialDisplacementFieldImageFilter< TInputImage, TOutputImage >::m_Divider [private]
template<class TInputImage , class TOutputImage >
unsigned int itk::ExponentialDisplacementFieldImageFilter< TInputImage, TOutputImage >::m_MaximumNumberOfIterations [private]
template<class TInputImage , class TOutputImage >
VectorWarperPointer itk::ExponentialDisplacementFieldImageFilter< TInputImage, TOutputImage >::m_Warper [private]
template<class TInputImage , class TOutputImage >
const unsigned int itk::ExponentialDisplacementFieldImageFilter< TInputImage, TOutputImage >::OutputImageDimension = TInputImage::ImageDimension [static]
template<class TInputImage , class TOutputImage >
const unsigned int itk::ExponentialDisplacementFieldImageFilter< TInputImage, TOutputImage >::OutputPixelDimension = OutputPixelType::Dimension [static]

Image dimension.

Definition at line 122 of file itkExponentialDisplacementFieldImageFilter.h.

template<class TInputImage , class TOutputImage >
const unsigned int itk::ExponentialDisplacementFieldImageFilter< TInputImage, TOutputImage >::PixelDimension = InputPixelType::Dimension [static]

Image dimension.

Definition at line 120 of file itkExponentialDisplacementFieldImageFilter.h.


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