Main Page   Groups   Namespace List   Class Hierarchy   Alphabetical List   Compound List   File List   Namespace Members   Compound Members   File Members   Concepts

itk::MutualInformationImageToImageMetric< TFixedImage, TMovingImage > Class Template Reference
[Similarity Metrics of Registration Methods]

Computes the mutual information between two images to be registered. More...

#include <itkMutualInformationImageToImageMetric.h>

Inheritance diagram for itk::MutualInformationImageToImageMetric< TFixedImage, TMovingImage >:

Inheritance graph
[legend]
Collaboration diagram for itk::MutualInformationImageToImageMetric< TFixedImage, TMovingImage >:

Collaboration graph
[legend]
List of all members.

Public Types

typedef MutualInformationImageToImageMetric Self
typedef ImageToImageMetric<
TFixedImage, TMovingImage > 
Superclass
typedef SmartPointer< SelfPointer
typedef SmartPointer< const
Self
ConstPointer
typedef Superclass::TransformType TransformType
typedef Superclass::TransformPointer TransformPointer
typedef Superclass::TransformJacobianType TransformJacobianType
typedef Superclass::InterpolatorType InterpolatorType
typedef Superclass::MeasureType MeasureType
typedef Superclass::DerivativeType DerivativeType
typedef Superclass::ParametersType ParametersType
typedef Superclass::FixedImageType FixedImageType
typedef Superclass::MovingImageType MovingImageType
typedef Superclass::FixedImageConstPointer FixedImageConstPointer
typedef Superclass::MovingImageConstPointer MovingImageCosntPointer
typedef FixedImageType::IndexType FixedImageIndexType
typedef FixedImageIndexType::IndexValueType FixedImageIndexValueType
typedef MovingImageType::IndexType MovingImageIndexType
typedef TransformType::InputPointType FixedImagePointType
typedef TransformType::OutputPointType MovingImagePointType

Public Member Functions

virtual const char * GetNameOfClass () const
 itkStaticConstMacro (MovingImageDimension, unsigned int, MovingImageType::ImageDimension)
void GetDerivative (const ParametersType &parameters, DerivativeType &Derivative) const
MeasureType GetValue (const ParametersType &parameters) const
void GetValueAndDerivative (const ParametersType &parameters, MeasureType &Value, DerivativeType &Derivative) const
void SetNumberOfSpatialSamples (unsigned int num)
virtual const unsigned int & GetNumberOfSpatialSamples ()
void ReinitializeSeed ()
void ReinitializeSeed (int)
virtual void SetMovingImageStandardDeviation (double _arg)
virtual const double & GetMovingImageStandardDeviation ()
virtual void SetFixedImageStandardDeviation (double _arg)
virtual double GetFixedImageStandardDeviation ()
virtual void SetKernelFunction (KernelFunction *_arg)
virtual KernelFunctionGetKernelFunction ()

Static Public Member Functions

Pointer New ()

Protected Member Functions

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

Detailed Description

template<class TFixedImage, class TMovingImage>
class itk::MutualInformationImageToImageMetric< TFixedImage, TMovingImage >

Computes the mutual information between two images to be registered.

MutualInformationImageToImageMetric computes the mutual information between a fixed and moving image to be registered.

This class is templated over the FixedImage type and the MovingImage type.

The fixed and moving images are set via methods SetFixedImage() and SetMovingImage(). This metric makes use of user specified Transform and Interpolator. The Transform is used to map points from the fixed image to the moving image domain. The Interpolator is used to evaluate the image intensity at user specified geometric points in the moving image. The Transform and Interpolator are set via methods SetTransform() and SetInterpolator().

Warning:
This metric assumes that the moving image has already been connected to the interpolator outside of this class.
The method GetValue() computes of the mutual information while method GetValueAndDerivative() computes both the mutual information and its derivatives with respect to the transform parameters.

The calculations are based on the method of Viola and Wells where the probability density distributions are estimated using Parzen windows.

By default a Gaussian kernel is used in the density estimation. Other option include Cauchy and spline-based. A user can specify the kernel passing in a pointer a KernelFunction using the SetKernelFunction() method.

Mutual information is estimated using two sample sets: one to calculate the singular and joint pdf's and one to calculate the entropy integral. By default 50 samples points are used in each set. Other values can be set via the SetNumberOfSpatialSamples() method.

Quality of the density estimate depends on the choice of the kernel's standard deviation. Optimal choice will depend on the images. It is can be shown that around the optimal variance, the mutual information estimate is relatively insensitive to small changes of the standard deviation. In our experiments, we have found that a standard deviation of 0.4 works well for images normalized to have a mean of zero and standard deviation of 1.0. The variance can be set via methods SetFixedImageStandardDeviation() and SetMovingImageStandardDeviation().

Implementaton of this class is based on: Viola, P. and Wells III, W. (1997). "Alignment by Maximization of Mutual Information" International Journal of Computer Vision, 24(2):137-154

See also:
KernelFunction

GaussianKernelFunction

Definition at line 90 of file itkMutualInformationImageToImageMetric.h.


Member Typedef Documentation

template<class TFixedImage, class TMovingImage>
typedef SmartPointer<const Self> itk::MutualInformationImageToImageMetric< TFixedImage, TMovingImage >::ConstPointer
 

Reimplemented from itk::ImageToImageMetric< TFixedImage, TMovingImage >.

Definition at line 99 of file itkMutualInformationImageToImageMetric.h.

template<class TFixedImage, class TMovingImage>
typedef Superclass::DerivativeType itk::MutualInformationImageToImageMetric< TFixedImage, TMovingImage >::DerivativeType
 

Type of the derivative.

Reimplemented from itk::ImageToImageMetric< TFixedImage, TMovingImage >.

Definition at line 113 of file itkMutualInformationImageToImageMetric.h.

template<class TFixedImage, class TMovingImage>
typedef Superclass::FixedImageConstPointer itk::MutualInformationImageToImageMetric< TFixedImage, TMovingImage >::FixedImageConstPointer
 

Reimplemented from itk::ImageToImageMetric< TFixedImage, TMovingImage >.

Definition at line 117 of file itkMutualInformationImageToImageMetric.h.

template<class TFixedImage, class TMovingImage>
typedef FixedImageType::IndexType itk::MutualInformationImageToImageMetric< TFixedImage, TMovingImage >::FixedImageIndexType
 

Index and Point typedef support.

Definition at line 121 of file itkMutualInformationImageToImageMetric.h.

template<class TFixedImage, class TMovingImage>
typedef FixedImageIndexType::IndexValueType itk::MutualInformationImageToImageMetric< TFixedImage, TMovingImage >::FixedImageIndexValueType
 

Definition at line 122 of file itkMutualInformationImageToImageMetric.h.

template<class TFixedImage, class TMovingImage>
typedef TransformType::InputPointType itk::MutualInformationImageToImageMetric< TFixedImage, TMovingImage >::FixedImagePointType
 

Definition at line 124 of file itkMutualInformationImageToImageMetric.h.

template<class TFixedImage, class TMovingImage>
typedef Superclass::FixedImageType itk::MutualInformationImageToImageMetric< TFixedImage, TMovingImage >::FixedImageType
 

Type of the fixed Image.

Reimplemented from itk::ImageToImageMetric< TFixedImage, TMovingImage >.

Definition at line 115 of file itkMutualInformationImageToImageMetric.h.

template<class TFixedImage, class TMovingImage>
typedef Superclass::InterpolatorType itk::MutualInformationImageToImageMetric< TFixedImage, TMovingImage >::InterpolatorType
 

Type of the Interpolator Base class

Reimplemented from itk::ImageToImageMetric< TFixedImage, TMovingImage >.

Definition at line 111 of file itkMutualInformationImageToImageMetric.h.

template<class TFixedImage, class TMovingImage>
typedef Superclass::MeasureType itk::MutualInformationImageToImageMetric< TFixedImage, TMovingImage >::MeasureType
 

Type of the measure.

Reimplemented from itk::ImageToImageMetric< TFixedImage, TMovingImage >.

Definition at line 112 of file itkMutualInformationImageToImageMetric.h.

template<class TFixedImage, class TMovingImage>
typedef Superclass::MovingImageConstPointer itk::MutualInformationImageToImageMetric< TFixedImage, TMovingImage >::MovingImageCosntPointer
 

Definition at line 118 of file itkMutualInformationImageToImageMetric.h.

template<class TFixedImage, class TMovingImage>
typedef MovingImageType::IndexType itk::MutualInformationImageToImageMetric< TFixedImage, TMovingImage >::MovingImageIndexType
 

Definition at line 123 of file itkMutualInformationImageToImageMetric.h.

template<class TFixedImage, class TMovingImage>
typedef TransformType::OutputPointType itk::MutualInformationImageToImageMetric< TFixedImage, TMovingImage >::MovingImagePointType
 

Definition at line 125 of file itkMutualInformationImageToImageMetric.h.

template<class TFixedImage, class TMovingImage>
typedef Superclass::MovingImageType itk::MutualInformationImageToImageMetric< TFixedImage, TMovingImage >::MovingImageType
 

Type of the moving Image.

Reimplemented from itk::ImageToImageMetric< TFixedImage, TMovingImage >.

Definition at line 116 of file itkMutualInformationImageToImageMetric.h.

template<class TFixedImage, class TMovingImage>
typedef Superclass::ParametersType itk::MutualInformationImageToImageMetric< TFixedImage, TMovingImage >::ParametersType
 

Type of the parameters.

Reimplemented from itk::ImageToImageMetric< TFixedImage, TMovingImage >.

Definition at line 114 of file itkMutualInformationImageToImageMetric.h.

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

Reimplemented from itk::ImageToImageMetric< TFixedImage, TMovingImage >.

Definition at line 98 of file itkMutualInformationImageToImageMetric.h.

template<class TFixedImage, class TMovingImage>
typedef MutualInformationImageToImageMetric itk::MutualInformationImageToImageMetric< TFixedImage, TMovingImage >::Self
 

Standard class typedefs.

Reimplemented from itk::ImageToImageMetric< TFixedImage, TMovingImage >.

Definition at line 96 of file itkMutualInformationImageToImageMetric.h.

Referenced by itk::MutualInformationImageToImageMetric< TFixedImage, TMovingImage >::~MutualInformationImageToImageMetric().

template<class TFixedImage, class TMovingImage>
typedef ImageToImageMetric< TFixedImage, TMovingImage > itk::MutualInformationImageToImageMetric< TFixedImage, TMovingImage >::Superclass
 

Reimplemented from itk::ImageToImageMetric< TFixedImage, TMovingImage >.

Definition at line 97 of file itkMutualInformationImageToImageMetric.h.

template<class TFixedImage, class TMovingImage>
typedef Superclass::TransformJacobianType itk::MutualInformationImageToImageMetric< TFixedImage, TMovingImage >::TransformJacobianType
 

Reimplemented from itk::ImageToImageMetric< TFixedImage, TMovingImage >.

Definition at line 110 of file itkMutualInformationImageToImageMetric.h.

template<class TFixedImage, class TMovingImage>
typedef Superclass::TransformPointer itk::MutualInformationImageToImageMetric< TFixedImage, TMovingImage >::TransformPointer
 

Reimplemented from itk::ImageToImageMetric< TFixedImage, TMovingImage >.

Definition at line 109 of file itkMutualInformationImageToImageMetric.h.

template<class TFixedImage, class TMovingImage>
typedef Superclass::TransformType itk::MutualInformationImageToImageMetric< TFixedImage, TMovingImage >::TransformType
 

Types inherited from Superclass.

Reimplemented from itk::ImageToImageMetric< TFixedImage, TMovingImage >.

Definition at line 108 of file itkMutualInformationImageToImageMetric.h.


Constructor & Destructor Documentation

template<class TFixedImage, class TMovingImage>
itk::MutualInformationImageToImageMetric< TFixedImage, TMovingImage >::MutualInformationImageToImageMetric  )  [protected]
 

template<class TFixedImage, class TMovingImage>
virtual itk::MutualInformationImageToImageMetric< TFixedImage, TMovingImage >::~MutualInformationImageToImageMetric  )  [inline, protected, virtual]
 

Definition at line 183 of file itkMutualInformationImageToImageMetric.h.

References itk::MutualInformationImageToImageMetric< TFixedImage, TMovingImage >::Self.


Member Function Documentation

template<class TFixedImage, class TMovingImage>
void itk::MutualInformationImageToImageMetric< TFixedImage, TMovingImage >::GetDerivative const ParametersType parameters,
DerivativeType Derivative
const [virtual]
 

Get the derivatives of the match measure.

Implements itk::SingleValuedCostFunction.

template<class TFixedImage, class TMovingImage>
virtual double itk::MutualInformationImageToImageMetric< TFixedImage, TMovingImage >::GetFixedImageStandardDeviation  )  [virtual]
 

Set/Get the fixed image intensitiy standard deviation. This defines the kernel bandwidth used in the joint probability distribution calculation. Default value is 0.4 which works well for image intensities normalized to a mean of 0 and standard deviation of 1.0. Value is clamped to be always greater than zero.

template<class TFixedImage, class TMovingImage>
virtual KernelFunction* itk::MutualInformationImageToImageMetric< TFixedImage, TMovingImage >::GetKernelFunction  )  [virtual]
 

Set/Get the kernel function. This is used to calculate the joint probability distribution. Default is the GaussianKernelFunction.

template<class TFixedImage, class TMovingImage>
virtual const double& itk::MutualInformationImageToImageMetric< TFixedImage, TMovingImage >::GetMovingImageStandardDeviation  )  [virtual]
 

Set/Get the moving image intensitiy standard deviation. This defines the kernel bandwidth used in the joint probability distribution calculation. Default value is 0.4 which works well for image intensities normalized to a mean of 0 and standard deviation of 1.0. Value is clamped to be always greater than zero.

template<class TFixedImage, class TMovingImage>
virtual const char* itk::MutualInformationImageToImageMetric< TFixedImage, TMovingImage >::GetNameOfClass  )  const [virtual]
 

Run-time type information (and related methods).

Reimplemented from itk::ImageToImageMetric< TFixedImage, TMovingImage >.

template<class TFixedImage, class TMovingImage>
virtual const unsigned int& itk::MutualInformationImageToImageMetric< TFixedImage, TMovingImage >::GetNumberOfSpatialSamples  )  [virtual]
 

Get the number of spatial samples.

template<class TFixedImage, class TMovingImage>
MeasureType itk::MutualInformationImageToImageMetric< TFixedImage, TMovingImage >::GetValue const ParametersType parameters  )  const [virtual]
 

Get the value.

Implements itk::SingleValuedCostFunction.

template<class TFixedImage, class TMovingImage>
void itk::MutualInformationImageToImageMetric< TFixedImage, TMovingImage >::GetValueAndDerivative const ParametersType parameters,
MeasureType Value,
DerivativeType Derivative
const [virtual]
 

Get the value and derivatives for single valued optimizers.

Reimplemented from itk::SingleValuedCostFunction.

template<class TFixedImage, class TMovingImage>
itk::MutualInformationImageToImageMetric< TFixedImage, TMovingImage >::itkStaticConstMacro MovingImageDimension  ,
unsigned  int,
MovingImageType::ImageDimension 
 

Enum of the moving image dimension.

template<class TFixedImage, class TMovingImage>
Pointer itk::MutualInformationImageToImageMetric< TFixedImage, TMovingImage >::New  )  [static]
 

Method for creation through the object factory.

Reimplemented from itk::Object.

template<class TFixedImage, class TMovingImage>
void itk::MutualInformationImageToImageMetric< TFixedImage, TMovingImage >::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::ImageToImageMetric< TFixedImage, TMovingImage >.

template<class TFixedImage, class TMovingImage>
void itk::MutualInformationImageToImageMetric< TFixedImage, TMovingImage >::ReinitializeSeed int   ) 
 

template<class TFixedImage, class TMovingImage>
void itk::MutualInformationImageToImageMetric< TFixedImage, TMovingImage >::ReinitializeSeed  ) 
 

template<class TFixedImage, class TMovingImage>
virtual void itk::MutualInformationImageToImageMetric< TFixedImage, TMovingImage >::SetFixedImageStandardDeviation double  _arg  )  [virtual]
 

Set/Get the fixed image intensitiy standard deviation. This defines the kernel bandwidth used in the joint probability distribution calculation. Default value is 0.4 which works well for image intensities normalized to a mean of 0 and standard deviation of 1.0. Value is clamped to be always greater than zero.

template<class TFixedImage, class TMovingImage>
virtual void itk::MutualInformationImageToImageMetric< TFixedImage, TMovingImage >::SetKernelFunction KernelFunction _arg  )  [virtual]
 

Set/Get the kernel function. This is used to calculate the joint probability distribution. Default is the GaussianKernelFunction.

template<class TFixedImage, class TMovingImage>
virtual void itk::MutualInformationImageToImageMetric< TFixedImage, TMovingImage >::SetMovingImageStandardDeviation double  _arg  )  [virtual]
 

Set/Get the moving image intensitiy standard deviation. This defines the kernel bandwidth used in the joint probability distribution calculation. Default value is 0.4 which works well for image intensities normalized to a mean of 0 and standard deviation of 1.0. Value is clamped to be always greater than zero.

template<class TFixedImage, class TMovingImage>
void itk::MutualInformationImageToImageMetric< TFixedImage, TMovingImage >::SetNumberOfSpatialSamples unsigned int  num  ) 
 

Set the number of spatial samples. This is the number of image samples used to calculate the joint probability distribution. The number of spatial samples is clamped to be a minimum of 1. Default value is 50.


The documentation for this class was generated from the following file:
Generated at Thu May 25 01:50:14 2006 for ITK by doxygen 1.3.5 written by Dimitri van Heesch, © 1997-2000