#include <itkFEMRegistrationFilter.h>
Inheritance diagram for itk::fem::FEMRegistrationFilter< TMovingImage, TFixedImage >:


The image registration problem is modeled here with the finite element method. Image registration is, in general, an ill-posed problem. Thus, we use an optimization scheme where the optimization criterion is given by a regularized variational energy. The variational energy arises from modeling the image as a physical body on which external forces act. The body is allowed to deform so as to minimize the applied force. The resistance of the physical body to deformation, determined by the physics associated with the body, serves to regularize the solution. The forces applied to the body are, generally, highly non-linear and so the body is allowed to deform slowly and incrementally. The direction it deforms follows the gradient of the potential energy (the force) we define. The potential energies we may choose from are given by the itk image-to-image metrics. The choices and the associated direction of descent are : Mean Squares (minimize), Normalized Cross-Correlation (maximize) Mutual Information (maximize). Note that we have to set the direction (SetDescentDirection) when we choose a metric. The forces driving the problem may also be given by user-supplied landmarks. The corners of the image, in this example, are always pinned. This example is designed for 2D or 3D images. A rectilinear mesh is generated automatically given the correct element type (Quadrilateral or Hexahedral).
Our specific Solver for this example uses trapezoidal time stepping. This is a method for solving a second-order PDE in time. The solution is penalized by the zeroth (mass matrix) and first derivatives (stiffness matrix) of the shape functions. There is an option to perform a line search on the energy after each iteration. Optimal parameter settings require experimentation. The following approach tends to work well : Choose the relative size of density to elasticity (e.g. Rho / E ~= 1.) such that the image deforms locally and slowly. This also affects the stability of the solution. Choose the time step to control the size of the deformation at each step. Choose enough iterations to allow the solution to converge (this may be automated).
Reading images is up to the user. Either set the images using SetMoving/FixedImage or see the ReadImages function.
TODO : Keep the full field around (if using re-gridding). Introduce compensation for kinematic non-linearity in time (if using Eulerian frame).
Definition at line 102 of file itkFEMRegistrationFilter.h.
| typedef SmartPointer<const Self> itk::fem::FEMRegistrationFilter< TMovingImage, TFixedImage >::ConstPointer |
Reimplemented from itk::ImageToImageFilter< TMovingImage, TFixedImage >.
Definition at line 108 of file itkFEMRegistrationFilter.h.
| typedef double itk::fem::FEMRegistrationFilter< TMovingImage, TFixedImage >::CoordRepType |
Typedef support for the interpolation function
Definition at line 145 of file itkFEMRegistrationFilter.h.
typedef DataObject::Pointer itk::ImageSource< TFixedImage >::DataObjectPointer [inherited] |
Smart Pointer type to a DataObject.
Reimplemented from itk::ProcessObject.
Definition at line 62 of file itkImageSource.h.
typedef std::vector<DataObjectPointer> itk::ProcessObject::DataObjectPointerArray [inherited] |
STL Array of SmartPointers to DataObjects
Definition at line 103 of file itkProcessObject.h.
typedef DataObjectPointerArray::size_type itk::ProcessObject::DataObjectPointerArraySizeType [inherited] |
Size type of an std::vector
Definition at line 112 of file itkProcessObject.h.
| typedef VectorLinearInterpolateImageFunction<FieldType,CoordRepType> itk::fem::FEMRegistrationFilter< TMovingImage, TFixedImage >::DefaultInterpolatorType |
Definition at line 150 of file itkFEMRegistrationFilter.h.
| typedef itk::VectorExpandImageFilter<FieldType,FieldType> itk::fem::FEMRegistrationFilter< TMovingImage, TFixedImage >::ExpanderType |
Definition at line 156 of file itkFEMRegistrationFilter.h.
| typedef ExpanderType::ExpandFactorsType itk::fem::FEMRegistrationFilter< TMovingImage, TFixedImage >::ExpandFactorsType |
Definition at line 160 of file itkFEMRegistrationFilter.h.
| typedef itk::ImageRegionIteratorWithIndex<FieldType> itk::fem::FEMRegistrationFilter< TMovingImage, TFixedImage >::FieldIterator |
Definition at line 140 of file itkFEMRegistrationFilter.h.
typedef FieldType::Pointer itk::fem::FEMRegistrationFilter< TMovingImage, TFixedImage >::FieldPointer [protected] |
Re-size the vector field (smaller to larger).
Definition at line 440 of file itkFEMRegistrationFilter.h.
| typedef itk::Image<VectorType,itkGetStaticConstMacro(ImageDimension)> itk::fem::FEMRegistrationFilter< TMovingImage, TFixedImage >::FieldType |
Definition at line 135 of file itkFEMRegistrationFilter.h.
| typedef TFixedImage itk::fem::FEMRegistrationFilter< TMovingImage, TFixedImage >::FixedImageType |
Definition at line 117 of file itkFEMRegistrationFilter.h.
| typedef itk::RecursiveMultiResolutionPyramidImageFilter<FixedImageType,FixedImageType> itk::fem::FEMRegistrationFilter< TMovingImage, TFixedImage >::FixedPyramidType |
Definition at line 163 of file itkFEMRegistrationFilter.h.
| typedef double itk::fem::FEMRegistrationFilter< TMovingImage, TFixedImage >::Float |
Definition at line 129 of file itkFEMRegistrationFilter.h.
| typedef itk::ImageRegionIteratorWithIndex<FloatImageType> itk::fem::FEMRegistrationFilter< TMovingImage, TFixedImage >::FloatImageIterator |
Definition at line 139 of file itkFEMRegistrationFilter.h.
| typedef Image< float, itkGetStaticConstMacro(ImageDimension) > itk::fem::FEMRegistrationFilter< TMovingImage, TFixedImage >::FloatImageType |
Definition at line 125 of file itkFEMRegistrationFilter.h.
| typedef itk::ImageRegionIteratorWithIndex<FixedImageType> itk::fem::FEMRegistrationFilter< TMovingImage, TFixedImage >::ImageIterator |
Definition at line 138 of file itkFEMRegistrationFilter.h.
| typedef FiniteDifferenceFunctionLoad<MovingImageType,FixedImageType> itk::fem::FEMRegistrationFilter< TMovingImage, TFixedImage >::ImageMetricLoadType |
Instantiate the load class with the correct image type.
Definition at line 171 of file itkFEMRegistrationFilter.h.
| typedef FixedImageType::SizeType itk::fem::FEMRegistrationFilter< TMovingImage, TFixedImage >::ImageSizeType |
Definition at line 119 of file itkFEMRegistrationFilter.h.
| typedef itk::VectorIndexSelectionCastImageFilter<FieldType,FloatImageType> itk::fem::FEMRegistrationFilter< TMovingImage, TFixedImage >::IndexSelectCasterType |
Definition at line 141 of file itkFEMRegistrationFilter.h.
typedef InputImageType::ConstPointer itk::ImageToImageFilter< TMovingImage , TFixedImage >::InputImageConstPointer [inherited] |
Definition at line 84 of file itkImageToImageFilter.h.
typedef InputImageType::PixelType itk::ImageToImageFilter< TMovingImage , TFixedImage >::InputImagePixelType [inherited] |
Definition at line 86 of file itkImageToImageFilter.h.
typedef InputImageType::Pointer itk::ImageToImageFilter< TMovingImage , TFixedImage >::InputImagePointer [inherited] |
Definition at line 83 of file itkImageToImageFilter.h.
typedef InputImageType::RegionType itk::ImageToImageFilter< TMovingImage , TFixedImage >::InputImageRegionType [inherited] |
Definition at line 85 of file itkImageToImageFilter.h.
typedef TMovingImage itk::ImageToImageFilter< TMovingImage , TFixedImage >::InputImageType [inherited] |
Some convenient typedefs.
Definition at line 82 of file itkImageToImageFilter.h.
typedef ImageToImageFilterDetail::ImageRegionCopier<itkGetStaticConstMacro(OutputImageDimension), itkGetStaticConstMacro(InputImageDimension)> itk::ImageToImageFilter< TMovingImage , TFixedImage >::InputToOutputRegionCopierType [protected, inherited] |
Typedef for the region copier function object that converts an input region to an output region.
Definition at line 164 of file itkImageToImageFilter.h.
typedef int itk::LightObject::InternalReferenceCountType [protected, inherited] |
Define the type of the reference count according to the target. This allows the use of atomic operations
Definition at line 139 of file itkLightObject.h.
| typedef InterpolatorType::Pointer itk::fem::FEMRegistrationFilter< TMovingImage, TFixedImage >::InterpolatorPointer |
Definition at line 148 of file itkFEMRegistrationFilter.h.
| typedef VectorInterpolateImageFunction<FieldType,CoordRepType> itk::fem::FEMRegistrationFilter< TMovingImage, TFixedImage >::InterpolatorType |
Definition at line 147 of file itkFEMRegistrationFilter.h.
| typedef std::vector<typename LoadLandmark::Pointer> itk::fem::FEMRegistrationFilter< TMovingImage, TFixedImage >::LandmarkArrayType |
Definition at line 133 of file itkFEMRegistrationFilter.h.
| typedef LinearSystemWrapperItpack itk::fem::FEMRegistrationFilter< TMovingImage, TFixedImage >::LinearSystemSolverType |
Definition at line 126 of file itkFEMRegistrationFilter.h.
| typedef Load::ArrayType itk::fem::FEMRegistrationFilter< TMovingImage, TFixedImage >::LoadArray |
Definition at line 130 of file itkFEMRegistrationFilter.h.
| typedef MaterialLinearElasticity itk::fem::FEMRegistrationFilter< TMovingImage, TFixedImage >::MaterialType |
Definition at line 137 of file itkFEMRegistrationFilter.h.
| typedef PDEDeformableRegistrationFunction<FixedImageType,MovingImageType,FieldType> itk::fem::FEMRegistrationFilter< TMovingImage, TFixedImage >::MetricBaseType |
Definition at line 172 of file itkFEMRegistrationFilter.h.
| typedef MetricBaseType::Pointer itk::fem::FEMRegistrationFilter< TMovingImage, TFixedImage >::MetricBaseTypePointer |
Definition at line 174 of file itkFEMRegistrationFilter.h.
| typedef TMovingImage itk::fem::FEMRegistrationFilter< TMovingImage, TFixedImage >::MovingImageType |
Definition at line 114 of file itkFEMRegistrationFilter.h.
typedef Superclass::OutputImagePixelType itk::ImageToImageFilter< TMovingImage , TFixedImage >::OutputImagePixelType [inherited] |
Reimplemented from itk::ImageSource< TFixedImage >.
Definition at line 79 of file itkImageToImageFilter.h.
typedef OutputImageType::Pointer itk::ImageSource< TFixedImage >::OutputImagePointer [inherited] |
Definition at line 69 of file itkImageSource.h.
typedef Superclass::OutputImageRegionType itk::ImageToImageFilter< TMovingImage , TFixedImage >::OutputImageRegionType [inherited] |
Superclass typedefs.
Reimplemented from itk::ImageSource< TFixedImage >.
Definition at line 75 of file itkImageToImageFilter.h.
typedef TFixedImage itk::ImageSource< TFixedImage >::OutputImageType [inherited] |
Some convenient typedefs.
Definition at line 65 of file itkImageSource.h.
typedef ImageToImageFilterDetail::ImageRegionCopier<itkGetStaticConstMacro(InputImageDimension), itkGetStaticConstMacro(OutputImageDimension)> itk::ImageToImageFilter< TMovingImage , TFixedImage >::OutputToInputRegionCopierType [protected, inherited] |
Typedef for the region copier function object that converts an output region to an input