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

Computes the inverse of a displacement field. More...

#include <itkInverseDisplacementFieldImageFilter.h>

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

List of all members.

Public Types

typedef SmartPointer< const SelfConstPointer
typedef OutputImageType::IndexType IndexType
typedef
InputImageType::ConstPointer 
InputImageConstPointer
typedef InputImageType::Pointer InputImagePointer
typedef InputImageType::RegionType InputImageRegionType
typedef TInputImage InputImageType
typedef
KernelTransformType::Pointer 
KernelTransformPointerType
typedef KernelTransform
< double,
itkGetStaticConstMacro(ImageDimension) > 
KernelTransformType
typedef TOutputImage::PointType OriginPointType
typedef OutputImageType::Pointer OutputImagePointer
typedef TOutputImage::RegionType OutputImageRegionType
typedef TOutputImage OutputImageType
typedef OutputPixelType::ValueType OutputPixelComponentType
typedef TOutputImage::PixelType OutputPixelType
typedef SmartPointer< SelfPointer
typedef
InverseDisplacementFieldImageFilter 
Self
typedef OutputImageType::SizeType SizeType
typedef TOutputImage::SpacingType SpacingType
typedef ImageToImageFilter
< TInputImage, TOutputImage > 
Superclass

Public Member Functions

virtual ::itk::LightObject::Pointer CreateAnother (void) const
virtual void GenerateInputRequestedRegion ()
virtual void GenerateOutputInformation ()
virtual KernelTransformTypeGetKernelTransform ()
unsigned long GetMTime (void) const
virtual const char * GetNameOfClass () const
virtual const OriginPointTypeGetOutputOrigin ()
virtual const SpacingTypeGetOutputSpacing ()
virtual const SizeTypeGetSize ()
virtual void SetKernelTransform (KernelTransformType *_arg)
virtual void SetSize (SizeType _arg)
 typedef (Concept::HasNumericTraits< OutputPixelComponentType >) OutputHasNumericTraitsCheck
virtual void SetOutputSpacing (SpacingType _arg)
virtual void SetOutputSpacing (const double *values)
virtual void SetOutputOrigin (OriginPointType _arg)
virtual void SetOutputOrigin (const double *values)
virtual void SetSubsamplingFactor (unsigned int _arg)
virtual unsigned int GetSubsamplingFactor () const

Static Public Member Functions

static Pointer New ()

Static Public Attributes

static const unsigned int ImageDimension = TOutputImage::ImageDimension

Protected Member Functions

void GenerateData ()
void PrepareKernelBaseSpline ()
 InverseDisplacementFieldImageFilter ()
 ~InverseDisplacementFieldImageFilter ()
void PrintSelf (std::ostream &os, Indent indent) const

Private Member Functions

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

Private Attributes

KernelTransformPointerType m_KernelTransform
OriginPointType m_OutputOrigin
SpacingType m_OutputSpacing
SizeType m_Size
unsigned int m_SubsamplingFactor

Detailed Description

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

Computes the inverse of a displacement field.

InverseDisplacementFieldImageFilter takes a displacement field as input and computes the displacement field that is its inverse. If the input displacement field was mapping coordinates from a space A into a space B, the output of this filter will map coordinates from the space B into the space A.

Given that both the input and output displacement field are represented as discrete images with pixel type vector, the inverse will be only an estimation and will probably not correspond to a perfect inverse. The precision of the inverse can be improved at the price of increasing the computation time and memory consumption in this filter.

The method used for computing the inverse displacement field is to subsample the input field using a regular grid and create Kerned-Base Spline in which the reference landmarks are the coordinates of the deformed point and the target landmarks are the negative of the displacement vectors. The kernel-base spline is then used for regularly sampling the output space and recover vector values for every single pixel.

The subsampling factor used for the regular grid of the input field will determine the number of landmarks in the KernelBased spline and therefore it will have a dramatic effect on both the precision of output displacement field and the computational time required for the filter to complete the estimation. A large subsampling factor will result in few landmarks in the KernelBased spline, therefore on fast computation and low precision. A small subsampling factor will result in a large number of landmarks in the KernelBased spline, therefore a large memory consumption, long computation time and high precision for the inverse estimation.

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

Definition at line 65 of file itkInverseDisplacementFieldImageFilter.h.


Member Typedef Documentation

template<class TInputImage , class TOutputImage >
typedef SmartPointer< const Self > itk::InverseDisplacementFieldImageFilter< TInputImage, TOutputImage >::ConstPointer
template<class TInputImage , class TOutputImage >
typedef OutputImageType::IndexType itk::InverseDisplacementFieldImageFilter< TInputImage, TOutputImage >::IndexType

Image index typedef.

Definition at line 104 of file itkInverseDisplacementFieldImageFilter.h.

template<class TInputImage , class TOutputImage >
typedef InputImageType::ConstPointer itk::InverseDisplacementFieldImageFilter< TInputImage, TOutputImage >::InputImageConstPointer
template<class TInputImage , class TOutputImage >
typedef InputImageType::Pointer itk::InverseDisplacementFieldImageFilter< TInputImage, TOutputImage >::InputImagePointer
template<class TInputImage , class TOutputImage >
typedef InputImageType::RegionType itk::InverseDisplacementFieldImageFilter< TInputImage, TOutputImage >::InputImageRegionType
template<class TInputImage , class TOutputImage >
typedef TInputImage itk::InverseDisplacementFieldImageFilter< TInputImage, TOutputImage >::InputImageType

Some convenient typedefs.

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

Definition at line 75 of file itkInverseDisplacementFieldImageFilter.h.

template<class TInputImage , class TOutputImage >
typedef KernelTransformType::Pointer itk::InverseDisplacementFieldImageFilter< TInputImage, TOutputImage >::KernelTransformPointerType

Definition at line 98 of file itkInverseDisplacementFieldImageFilter.h.

template<class TInputImage , class TOutputImage >
typedef KernelTransform< double, itkGetStaticConstMacro(ImageDimension) > itk::InverseDisplacementFieldImageFilter< TInputImage, TOutputImage >::KernelTransformType

Transform typedef.

Todo:
Check that input and output images have the same number of dimensions; this is required for consistency.

Definition at line 97 of file itkInverseDisplacementFieldImageFilter.h.

template<class TInputImage , class TOutputImage >
typedef TOutputImage::PointType itk::InverseDisplacementFieldImageFilter< TInputImage, TOutputImage >::OriginPointType

Definition at line 115 of file itkInverseDisplacementFieldImageFilter.h.

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

Reimplemented from itk::ImageSource< TOutputImage >.

Definition at line 80 of file itkInverseDisplacementFieldImageFilter.h.

template<class TInputImage , class TOutputImage >
typedef TOutputImage::RegionType itk::InverseDisplacementFieldImageFilter< TInputImage, TOutputImage >::OutputImageRegionType

Typedef to describe the output image region type.

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

Definition at line 111 of file itkInverseDisplacementFieldImageFilter.h.

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

Some convenient typedefs.

Reimplemented from itk::ImageSource< TOutputImage >.

Definition at line 79 of file itkInverseDisplacementFieldImageFilter.h.

template<class TInputImage , class TOutputImage >
typedef OutputPixelType::ValueType itk::InverseDisplacementFieldImageFilter< TInputImage, TOutputImage >::OutputPixelComponentType

Definition at line 108 of file itkInverseDisplacementFieldImageFilter.h.

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

Image pixel value typedef.

Definition at line 107 of file itkInverseDisplacementFieldImageFilter.h.

template<class TInputImage , class TOutputImage >
typedef SmartPointer< Self > itk::InverseDisplacementFieldImageFilter< TInputImage, TOutputImage >::Pointer
template<class TInputImage , class TOutputImage >
typedef InverseDisplacementFieldImageFilter itk::InverseDisplacementFieldImageFilter< TInputImage, TOutputImage >::Self

Standard class typedefs.

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

Definition at line 70 of file itkInverseDisplacementFieldImageFilter.h.

template<class TInputImage , class TOutputImage >
typedef OutputImageType::SizeType itk::InverseDisplacementFieldImageFilter< TInputImage, TOutputImage >::SizeType

Image size typedef.

Definition at line 101 of file itkInverseDisplacementFieldImageFilter.h.

template<class TInputImage , class TOutputImage >
typedef TOutputImage::SpacingType itk::InverseDisplacementFieldImageFilter< TInputImage, TOutputImage >::SpacingType

Image spacing typedef

Definition at line 114 of file itkInverseDisplacementFieldImageFilter.h.

template<class TInputImage , class TOutputImage >
typedef ImageToImageFilter< TInputImage, TOutputImage > itk::InverseDisplacementFieldImageFilter< TInputImage, TOutputImage >::Superclass

Constructor & Destructor Documentation

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

End concept checking

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

End concept checking

Definition at line 182 of file itkInverseDisplacementFieldImageFilter.h.

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

Member Function Documentation

template<class TInputImage , class TOutputImage >
virtual::itk::LightObject::Pointer itk::InverseDisplacementFieldImageFilter< 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::InverseDisplacementFieldImageFilter< TInputImage, TOutputImage >::GenerateData ( ) [protected, virtual]

GenerateData() computes the internal KernelBase spline and resamples the displacement field.

Reimplemented from itk::ImageSource< TOutputImage >.

template<class TInputImage , class TOutputImage >
virtual void itk::InverseDisplacementFieldImageFilter< TInputImage, TOutputImage >::GenerateInputRequestedRegion ( ) [virtual]

InverseDisplacementFieldImageFilter needs a different input requested region than the output requested region. As such, InverseDisplacementFieldImageFilter needs to provide an implementation for GenerateInputRequestedRegion() in order to inform the pipeline execution model.

See also:
ProcessObject::GenerateInputRequestedRegion()

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

template<class TInputImage , class TOutputImage >
virtual void itk::InverseDisplacementFieldImageFilter< TInputImage, TOutputImage >::GenerateOutputInformation ( ) [virtual]

InverseDisplacementFieldImageFilter produces an image which is a different size than its input. As such, it needs to provide an implementation for GenerateOutputInformation() in order to inform the pipeline execution model. The original documentation of this method is below.

See also:
ProcessObject::GenerateOutputInformaton()

Reimplemented from itk::ProcessObject.

template<class TInputImage , class TOutputImage >
virtual KernelTransformType* itk::InverseDisplacementFieldImageFilter< TInputImage, TOutputImage >::GetKernelTransform ( ) [virtual]

Get a pointer to the coordinate transform.

template<class TInputImage , class TOutputImage >
unsigned long itk::InverseDisplacementFieldImageFilter< TInputImage, TOutputImage >::GetMTime ( void  ) const [virtual]

Method Compute the Modified Time based on changed to the components.

Reimplemented from itk::Object.

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

Run-time type information (and related methods).

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

template<class TInputImage , class TOutputImage >
virtual const OriginPointType& itk::InverseDisplacementFieldImageFilter< TInputImage, TOutputImage >::GetOutputOrigin ( ) [virtual]

Get the output image origin.

template<class TInputImage , class TOutputImage >
virtual const SpacingType& itk::InverseDisplacementFieldImageFilter< TInputImage, TOutputImage >::GetOutputSpacing ( ) [virtual]

Get the output image spacing.

template<class TInputImage , class TOutputImage >
virtual const SizeType& itk::InverseDisplacementFieldImageFilter< TInputImage, TOutputImage >::GetSize ( ) [virtual]

Get the size of the output image.

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

Set/Get the factor used for subsampling the input displacement field. A large value in this factor will produce a fast computation of the inverse field but with low precision. A small value of this factor will produce a precise computation of the inverse field at the price of large memory consumption and long computational time.

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

Method for creation through the object factory.

Reimplemented from itk::Object.

template<class TInputImage , class TOutputImage >
void itk::InverseDisplacementFieldImageFilter< 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::InverseDisplacementFieldImageFilter< TInputImage, TOutputImage >::PrepareKernelBaseSpline ( ) [protected]

Subsample the input displacement field and generate the landmarks for the kernel base spline

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

End concept checking

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

template<class TInputImage , class TOutputImage >
virtual void itk::InverseDisplacementFieldImageFilter< TInputImage, TOutputImage >::SetKernelTransform ( KernelTransformType _arg) [virtual]

Set the coordinate transformation. Set the KernelBase spline used for resampling the displacement grid.

template<class TInputImage , class TOutputImage >
virtual void itk::InverseDisplacementFieldImageFilter< TInputImage, TOutputImage >::SetOutputOrigin ( const double *  values) [virtual]

Set the output image origin.

template<class TInputImage , class TOutputImage >
virtual void itk::InverseDisplacementFieldImageFilter< TInputImage, TOutputImage >::SetOutputOrigin ( OriginPointType  _arg) [virtual]

Set the output image origin.

template<class TInputImage , class TOutputImage >
virtual void itk::InverseDisplacementFieldImageFilter< TInputImage, TOutputImage >::SetOutputSpacing ( SpacingType  _arg) [virtual]

Set the output image spacing.

template<class TInputImage , class TOutputImage >
virtual void itk::InverseDisplacementFieldImageFilter< TInputImage, TOutputImage >::SetOutputSpacing ( const double *  values) [virtual]

Set the output image spacing.

template<class TInputImage , class TOutputImage >
virtual void itk::InverseDisplacementFieldImageFilter< TInputImage, TOutputImage >::SetSize ( SizeType  _arg) [virtual]

Set the size of the output image.

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

Set/Get the factor used for subsampling the input displacement field. A large value in this factor will produce a fast computation of the inverse field but with low precision. A small value of this factor will produce a precise computation of the inverse field at the price of large memory consumption and long computational time.

template<class TInputImage , class TOutputImage >
itk::InverseDisplacementFieldImageFilter< TInputImage, TOutputImage >::typedef ( Concept::HasNumericTraits< OutputPixelComponentType )

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


Member Data Documentation

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

Number of dimensions.

Definition at line 90 of file itkInverseDisplacementFieldImageFilter.h.

template<class TInputImage , class TOutputImage >
KernelTransformPointerType itk::InverseDisplacementFieldImageFilter< TInputImage, TOutputImage >::m_KernelTransform [private]

Definition at line 202 of file itkInverseDisplacementFieldImageFilter.h.

template<class TInputImage , class TOutputImage >
OriginPointType itk::InverseDisplacementFieldImageFilter< TInputImage, TOutputImage >::m_OutputOrigin [private]

Definition at line 205 of file itkInverseDisplacementFieldImageFilter.h.

template<class TInputImage , class TOutputImage >
SpacingType itk::InverseDisplacementFieldImageFilter< TInputImage, TOutputImage >::m_OutputSpacing [private]

Definition at line 204 of file itkInverseDisplacementFieldImageFilter.h.

template<class TInputImage , class TOutputImage >
SizeType itk::InverseDisplacementFieldImageFilter< TInputImage, TOutputImage >::m_Size [private]

Definition at line 201 of file itkInverseDisplacementFieldImageFilter.h.

template<class TInputImage , class TOutputImage >
unsigned int itk::InverseDisplacementFieldImageFilter< TInputImage, TOutputImage >::m_SubsamplingFactor [private]

Definition at line 207 of file itkInverseDisplacementFieldImageFilter.h.


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