#include <itkMattesMutualInformationImageToImageMetric.h>
Inheritance diagram for itk::MattesMutualInformationImageToImageMetric:
Public Types | |
typedef MattesMutualInformationImageToImageMetric | Self |
typedef ImageToImageMetric< TFixedImage, TMovingImage > | Superclass |
typedef SmartPointer< Self > | Pointer |
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 Methods | |
virtual const char * | GetClassName () const |
itkStaticConstMacro (MovingImageDimension, unsigned int, MovingImageType::ImageDimension) | |
void | Initialize (void) throw ( ExceptionObject ) |
void | GetDerivative (const ParametersType ¶meters, DerivativeType &Derivative) const |
MeasureType | GetValue (const ParametersType ¶meters) const |
void | GetValueAndDerivative (const ParametersType ¶meters, MeasureType &Value, DerivativeType &Derivative) const |
virtual void | SetNumberOfSpatialSamples (unsigned long _arg) |
virtual unsigned long | GetNumberOfSpatialSamples () |
virtual void | SetNumberOfHistogramBins (unsigned long _arg) |
virtual unsigned long | GetNumberOfHistogramBins () |
Static Public Methods | |
Pointer | New () |
Protected Methods | |
MattesMutualInformationImageToImageMetric () | |
virtual | ~MattesMutualInformationImageToImageMetric () |
void | PrintSelf (std::ostream &os, Indent indent) const |
MattesMutualInformationImageToImageMetric 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().
If a BSplineInterpolationFunction is used, this class obtain image derivatives from the BSpline interpolator. Otherwise, image derivatives are computed using central differencing.
The calculations are based on the method of Mattes et al [1,2] where the probability density distribution are estimated using Parzen histograms. Since the fixed image PDF does not contribute to the derivatives, it does not need to be smooth. Hence, a zero order (box car) BSpline kernel is used for the fixed image intensity PDF. On the other hand, to ensure smoothness a third order BSpline kernel is used for the moving image intensity PDF.
On Initialize(), the FixedImage is uniformly sampled within the FixedImageRegion. The number of samples used can be set via SetNumberOfSpatialSamples(). Typically, the number of spatial samples used should increase with the image size.
During each call of GetValue(), GetDerivatives(), GetValueAndDerivatives(), marginal and joint intensity PDF's values are estimated at discrete position or bins. The number of bins used can be set via SetNumberOfHistogramBins(). To handle data with arbitray magnitude and dynamic range, the image intensity is scale such that any contribution to the histogram will fall into a valid bin.
One the PDF's have been contructed, the mutual information is obtained by doubling summing over the discrete PDF values.
Notes: 1. This class returns the negative mutual information value. 2. This class in not thread safe due the private data structures used to the store the sampled points and the marginal and joint pdfs.
References: [1] "Nonrigid multimodality image registration" D. Mattes, D. R. Haynor, H. Vesselle, T. Lewellen and W. Eubank Medical Imaging 2001: Image Processing, 2001, pp. 1609-1620. [2] "PET-CT Image Registration in the Chest Using Free-form Deformations" D. Mattes, D. R. Haynor, H. Vesselle, T. Lewellen and W. Eubank IEEE Transactions in Medical Imaging. To Appear. [3] "Optimization of Mutual Information for MultiResolution Image Registration" P. Thevenaz and M. Unser IEEE Transactions in Image Processing, 9(12) December 2000.
Definition at line 111 of file itkMattesMutualInformationImageToImageMetric.h.
|
Reimplemented from itk::ImageToImageMetric< TFixedImage, TMovingImage >. Definition at line 120 of file itkMattesMutualInformationImageToImageMetric.h. |
|
Type of the derivative. Reimplemented from itk::ImageToImageMetric< TFixedImage, TMovingImage >. Definition at line 134 of file itkMattesMutualInformationImageToImageMetric.h. |
|
Reimplemented from itk::ImageToImageMetric< TFixedImage, TMovingImage >. Definition at line 138 of file itkMattesMutualInformationImageToImageMetric.h. |
|
Index and Point typedef support. Definition at line 142 of file itkMattesMutualInformationImageToImageMetric.h. |
|
Definition at line 143 of file itkMattesMutualInformationImageToImageMetric.h. |
|
Definition at line 145 of file itkMattesMutualInformationImageToImageMetric.h. |
|
Type of the fixed Image. Reimplemented from itk::ImageToImageMetric< TFixedImage, TMovingImage >. Definition at line 136 of file itkMattesMutualInformationImageToImageMetric.h. |
|
Type of the Interpolator Base class Reimplemented from itk::ImageToImageMetric< TFixedImage, TMovingImage >. Definition at line 132 of file itkMattesMutualInformationImageToImageMetric.h. |
|
Type of the measure. Reimplemented from itk::ImageToImageMetric< TFixedImage, TMovingImage >. Definition at line 133 of file itkMattesMutualInformationImageToImageMetric.h. |
|
Definition at line 139 of file itkMattesMutualInformationImageToImageMetric.h. |
|
Definition at line 144 of file itkMattesMutualInformationImageToImageMetric.h. |
|
Definition at line 146 of file itkMattesMutualInformationImageToImageMetric.h. |
|
Type of the moving Image. Reimplemented from itk::ImageToImageMetric< TFixedImage, TMovingImage >. Definition at line 137 of file itkMattesMutualInformationImageToImageMetric.h. |
|
Type of the parameters. Reimplemented from itk::ImageToImageMetric< TFixedImage, TMovingImage >. Definition at line 135 of file itkMattesMutualInformationImageToImageMetric.h. |
|
Reimplemented from itk::ImageToImageMetric< TFixedImage, TMovingImage >. Definition at line 119 of file itkMattesMutualInformationImageToImageMetric.h. |
|
Standard class typedefs. Reimplemented from itk::ImageToImageMetric< TFixedImage, TMovingImage >. Definition at line 117 of file itkMattesMutualInformationImageToImageMetric.h. |
|
Reimplemented from itk::ImageToImageMetric< TFixedImage, TMovingImage >. Definition at line 118 of file itkMattesMutualInformationImageToImageMetric.h. |
|
Reimplemented from itk::ImageToImageMetric< TFixedImage, TMovingImage >. Definition at line 131 of file itkMattesMutualInformationImageToImageMetric.h. |
|
Reimplemented from itk::ImageToImageMetric< TFixedImage, TMovingImage >. Definition at line 130 of file itkMattesMutualInformationImageToImageMetric.h. |
|
Types inherited from Superclass. Reimplemented from itk::ImageToImageMetric< TFixedImage, TMovingImage >. Definition at line 129 of file itkMattesMutualInformationImageToImageMetric.h. |
|
|
|
Definition at line 188 of file itkMattesMutualInformationImageToImageMetric.h. |
|
Run-time type information (and related methods). Reimplemented from itk::ImageToImageMetric< TFixedImage, TMovingImage >. |
|
Get the derivatives of the match measure. Implements itk::SingleValuedCostFunction. |
|
Number of bins to used in the histogram. Typical value is 50. |
|
Number of spatial samples to used to compute metric |
|
Get the value. Implements itk::SingleValuedCostFunction. |
|
Get the value and derivatives for single valued optimizers. Reimplemented from itk::SingleValuedCostFunction. |
|
Initialize the Metric by (1) making sure that all the components are present and plugged together correctly, (2) uniformly select NumberOfSpatialSamples within the FixedImageRegion, and (3) allocate memory for pdf data structures. Reimplemented from itk::ImageToImageMetric< TFixedImage, TMovingImage >. |
|
The moving image dimension. |
|
Method for creation through the object factory. Reimplemented from itk::Object. |
|
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 >. |
|
Number of bins to used in the histogram. Typical value is 50. |
|
Number of spatial samples to used to compute metric |