template<class TFixedImage, class TMovingImage, class TVirtualImage = TFixedImage>
class itk::MattesMutualInformationImageToImageMetricv4< TFixedImage, TMovingImage, TVirtualImage >
Computes the mutual information between two images to be registered using the method of Mattes et al.
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 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.
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.
- Warning
- Local-support transforms are not yet supported. If used, an exception is thrown during Initialize().
- Note
- The per-iteration post-processing code is not multi-threaded, but could be readily be made so for a small performance gain. See GetValueCommonAfterThreadedExecution(), GetValueAndDerivative() and threader::AfterThreadedExecution().
The algorithm and much of the code was copied from the previous Mattes MI metric, i.e. itkMattesMutualInformationImageToImageMetric.
See MattesMutualInformationImageToImageMetricv4GetValueAndDerivativeThreader::ProcessPoint for poritons of the algorithm implementation.
See ImageToImageMetricv4 for details of common metric operation and options.
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. Vol.22, No.1, January 2003. pp.120-128. [3] "Optimization of Mutual Information for MultiResolution Image
Registration" P. Thevenaz and M. Unser IEEE Transactions in Image Processing, 9(12) December 2000.
- See Also
- itkImageToImageMetricv4
Definition at line 96 of file itkMattesMutualInformationImageToImageMetricv4.h.
|
typedef SmartPointer< const Self > | ConstPointer |
|
typedef Superclass::DerivativeType | DerivativeType |
|
typedef DerivativeType::ValueType | DerivativeValueType |
|
typedef
Superclass::FixedImageGradientType | FixedImageGradientType |
|
typedef
Superclass::FixedImageIndexType | FixedImageIndexType |
|
typedef
Superclass::FixedImagePixelType | FixedImagePixelType |
|
typedef
Superclass::FixedImagePointType | FixedImagePointType |
|
typedef Superclass::FixedImageType | FixedImageType |
|
typedef
Superclass::FixedSampledPointSetPointer | FixedSampledPointSetPointer |
|
typedef Superclass::JacobianType | JacobianType |
|
typedef Image< PDFValueType, 3 > | JointPDFDerivativesType |
|
typedef Image< PDFValueType, 2 > | JointPDFType |
|
typedef Superclass::MeasureType | MeasureType |
|
typedef
Superclass::MovingImageGradientType | MovingImageGradientType |
|
typedef
Superclass::MovingImagePixelType | MovingImagePixelType |
|
typedef
Superclass::MovingImagePointType | MovingImagePointType |
|
typedef
Superclass::MovingTransformType | MovingTransformType |
|
typedef double | PDFValueType |
|
typedef SmartPointer< Self > | Pointer |
|
typedef
MattesMutualInformationImageToImageMetricv4 | Self |
|
typedef ImageToImageMetricv4
< TFixedImage, TMovingImage,
TVirtualImage > | Superclass |
|
typedef
Superclass::VirtualImageType | VirtualImageType |
|
typedef
Superclass::VirtualIndexType | VirtualIndexType |
|
typedef
Superclass::VirtualPointSetType | VirtualPointSetType |
|
typedef
Superclass::VirtualPointType | VirtualPointType |
|
typedef SmartPointer< const Self > | ConstPointer |
|
typedef
Superclass::CoordinateRepresentationType | CoordinateRepresentationType |
|
typedef
MetricTraits::DefaultFixedImageGradientCalculator | DefaultFixedImageGradientCalculator |
|
typedef
MetricTraits::DefaultFixedImageGradientFilter | DefaultFixedImageGradientFilter |
|
typedef
MetricTraits::DefaultMovingImageGradientCalculator | DefaultMovingImageGradientCalculator |
|
typedef
MetricTraits::DefaultMovingImageGradientFilter | DefaultMovingImageGradientFilter |
|
typedef Superclass::DerivativeType | DerivativeType |
|
typedef DerivativeType::ValueType | DerivativeValueType |
|
typedef Superclass::DimensionType | DimensionType |
|
typedef
MetricTraits::FixedGradientPixelType | FixedGradientPixelType |
|
typedef CovariantVector
< typename
FixedImageGradientType::ValueType,
FixedImageDimension > | FixedImageComponentGradientType |
|
typedef
FixedImageType::ConstPointer | FixedImageConstPointer |
|
typedef
FixedImageGradientCalculatorType::Pointer | FixedImageGradientCalculatorPointer |
|
typedef
MetricTraits::FixedImageGradientCalculatorType | FixedImageGradientCalculatorType |
|
typedef
FixedImageGradientFilterType::Pointer | FixedImageGradientFilterPointer |
|
typedef
MetricTraits::FixedImageGradientFilterType | FixedImageGradientFilterType |
|
typedef
FixedImageGradientImageType::Pointer | FixedImageGradientImagePointer |
|
typedef
MetricTraits::FixedImageGradientImageType | FixedImageGradientImageType |
|
typedef
MetricTraits::FixedImageGradientType | FixedImageGradientType |
|
typedef FixedImageType::IndexType | FixedImageIndexType |
|
typedef
FixedImageMaskType::ConstPointer | FixedImageMaskConstPointer |
|
typedef FixedImageMaskType::Pointer | FixedImageMaskPointer |
|
typedef SpatialObject
< itkGetStaticConstMacro(FixedImageDimension) > | FixedImageMaskType |
|
typedef FixedImageType::PixelType | FixedImagePixelType |
|
typedef FixedImageType::Pointer | FixedImagePointer |
|
typedef FixedImageType::PointType | FixedImagePointType |
|
typedef TFixedImage | FixedImageType |
|
typedef
Superclass::FixedInputPointType | FixedInputPointType |
|
typedef
FixedInterpolatorType::Pointer | FixedInterpolatorPointer |
|
typedef
InterpolateImageFunction
< FixedImageType,
CoordinateRepresentationType > | FixedInterpolatorType |
|
typedef
Superclass::FixedOutputPointType | FixedOutputPointType |
|
typedef FixedImagePixelType | FixedPixelType |
|
typedef MetricTraits::FixedRealType | FixedRealType |
|
typedef
FixedSampledPointSetType::ConstPointer | FixedSampledPointSetConstPointer |
|
typedef
FixedSampledPointSetType::Pointer | FixedSampledPointSetPointer |
|
typedef PointSet< typename
FixedImageType::PixelType,
itkGetStaticConstMacro(FixedImageDimension)> | FixedSampledPointSetType |
|
typedef NumericTraits
< FixedRealType >
::ScalarRealType | FixedScalarRealType |
|
typedef
Superclass::FixedTransformJacobianType | FixedTransformJacobianType |
|
typedef
Superclass::FixedTransformParametersType | FixedTransformParametersType |
|
typedef
Superclass::FixedTransformPointer | FixedTransformPointer |
|
typedef
Superclass::FixedTransformType | FixedTransformType |
|
typedef
Superclass::GradientSourceType | GradientSourceType |
|
typedef Superclass::DimensionType | ImageDimensionType |
|
typedef
Superclass::InternalComputationValueType | InternalComputationValueType |
|
typedef Superclass::JacobianType | JacobianType |
|
typedef Superclass::MeasureType | MeasureType |
|
typedef
DefaultImageToImageMetricTraitsv4
< TFixedImage, TMovingImage,
TVirtualImage > | MetricTraits |
|
typedef
MetricTraits::MovingGradientPixelType | MovingGradientPixelType |
|
typedef CovariantVector
< typename
MovingImageGradientType::ValueType,
MovingImageDimension > | MovingImageComponentGradientType |
|
typedef
MovingImageType::ConstPointer | MovingImageConstPointer |
|
typedef
MovingImageGradientCalculatorType::Pointer | MovingImageGradientCalculatorPointer |
|
typedef
MetricTraits::MovingImageGradientCalculatorType | MovingImageGradientCalculatorType |
|
typedef
MovingImageGradientFilterType::Pointer | MovingImageGradientFilterPointer |
|
typedef
MetricTraits::MovingImageGradientFilterType | MovingImageGradientFilterType |
|
typedef
MovingImageGradientImageType::Pointer | MovingImageGradientImagePointer |
|
typedef
MetricTraits::MovingImageGradientImageType | MovingImageGradientImageType |
|
typedef
MetricTraits::MovingImageGradientType | MovingImageGradientType |
|
typedef MovingImageType::IndexType | MovingImageIndexType |
|
typedef
MovingImageMaskType::ConstPointer | MovingImageMaskConstPointer |
|
typedef
MovingImageMaskType::Pointer | MovingImageMaskPointer |
|
typedef SpatialObject
< itkGetStaticConstMacro(MovingImageDimension) > | MovingImageMaskType |
|
typedef MovingImageType::PixelType | MovingImagePixelType |
|
typedef MovingImageType::Pointer | MovingImagePointer |
|
typedef MovingImageType::PointType | MovingImagePointType |
|
typedef MovingImageType::RegionType | MovingImageRegionType |
|
typedef TMovingImage | MovingImageType |
|
typedef
Superclass::MovingInputPointType | MovingInputPointType |
|
typedef
MovingInterpolatorType::Pointer | MovingInterpolatorPointer |
|
typedef
InterpolateImageFunction
< MovingImageType,
CoordinateRepresentationType > | MovingInterpolatorType |
|
typedef
Superclass::MovingOutputPointType | MovingOutputPointType |
|
typedef MovingImagePixelType | MovingPixelType |
|
typedef
MetricTraits::MovingRealType | MovingRealType |
|
typedef NumericTraits
< MovingRealType >
::ScalarRealType | MovingScalarRealType |
|
typedef
Superclass::MovingTransformJacobianType | MovingTransformJacobianType |
|
typedef
Superclass::MovingTransformParametersType | MovingTransformParametersType |
|
typedef
Superclass::MovingTransformPointer | MovingTransformPointer |
|
typedef
Superclass::MovingTransformType | MovingTransformType |
|
typedef
Superclass::NumberOfParametersType | NumberOfParametersType |
|
typedef Superclass::ParametersType | ParametersType |
|
typedef
Superclass::ParametersValueType | ParametersValueType |
|
typedef SmartPointer< Self > | Pointer |
|
typedef ImageToImageMetricv4 | Self |
|
typedef ObjectToObjectMetric
< TFixedImage::ImageDimension,
TMovingImage::ImageDimension,
TVirtualImage > | Superclass |
|
typedef
Superclass::VirtualDirectionType | VirtualDirectionType |
|
typedef CovariantVector
< typename
VirtualImageGradientType::ValueType,
VirtualImageDimension > | VirtualImageComponentGradientType |
|
typedef
MetricTraits::VirtualImageGradientType | VirtualImageGradientType |
|
typedef
Superclass::VirtualImagePointer | VirtualImagePointer |
|
typedef
Superclass::VirtualImageType | VirtualImageType |
|
typedef
Superclass::VirtualIndexType | VirtualIndexType |
|
typedef
Superclass::VirtualPointType | VirtualOriginType |
|
typedef
Superclass::VirtualPixelType | VirtualPixelType |
|
typedef
Superclass::VirtualPointSetPointer | VirtualPointSetPointer |
|
typedef
Superclass::VirtualPointSetType | VirtualPointSetType |
|
typedef
Superclass::VirtualPointType | VirtualPointType |
|
typedef Superclass::VirtualSizeType | VirtualRadiusType |
|
typedef
Superclass::VirtualRegionType | VirtualRegionType |
|
typedef Superclass::VirtualSizeType | VirtualSizeType |
|
typedef
Superclass::VirtualSpacingType | VirtualSpacingType |
|
typedef SmartPointer< const Self > | ConstPointer |
|
typedef
Superclass::ParametersValueType | CoordinateRepresentationType |
|
typedef Superclass::DerivativeType | DerivativeType |
|
typedef
Superclass::DerivativeValueType | DerivativeValueType |
|
typedef SizeValueType | DimensionType |
|
typedef
FixedTransformType::InputPointType | FixedInputPointType |
|
typedef
FixedTransformType::OutputPointType | FixedOutputPointType |
|
typedef
FixedTransformType::JacobianType | FixedTransformJacobianType |
|
typedef
FixedTransformType::ParametersType | FixedTransformParametersType |
|
typedef FixedTransformType::Pointer | FixedTransformPointer |
|
typedef Transform
< ParametersValueType,
TVirtualImage::ImageDimension,
TFixedDimension > | FixedTransformType |
|
typedef
Superclass::InternalComputationValueType | InternalComputationValueType |
|
typedef
FixedTransformType::JacobianType | JacobianType |
|
typedef Superclass::MeasureType | MeasureType |
|
typedef
DisplacementFieldTransform
< CoordinateRepresentationType,
itkGetStaticConstMacro(MovingDimension) > | MovingDisplacementFieldTransformType |
|
typedef
MovingTransformType::InputPointType | MovingInputPointType |
|
typedef
MovingTransformType::OutputPointType | MovingOutputPointType |
|
typedef
MovingTransformType::JacobianType | MovingTransformJacobianType |
|
typedef
MovingTransformType::ParametersType | MovingTransformParametersType |
|
typedef
MovingTransformType::Pointer | MovingTransformPointer |
|
typedef Transform
< ParametersValueType,
TVirtualImage::ImageDimension,
TMovingDimension > | MovingTransformType |
|
typedef
Superclass::NumberOfParametersType | NumberOfParametersType |
|
typedef Superclass::ParametersType | ParametersType |
|
typedef
Superclass::ParametersValueType | ParametersValueType |
|
typedef SmartPointer< Self > | Pointer |
|
typedef ObjectToObjectMetric | Self |
|
typedef ObjectToObjectMetricBase | Superclass |
|
typedef
VirtualImageType::DirectionType | VirtualDirectionType |
|
typedef
VirtualImageType::ConstPointer | VirtualImageConstPointer |
|
typedef VirtualImageType::Pointer | VirtualImagePointer |
|
typedef TVirtualImage | VirtualImageType |
|
typedef VirtualImageType::IndexType | VirtualIndexType |
|
typedef VirtualImageType::PointType | VirtualOriginType |
|
typedef VirtualImageType::PixelType | VirtualPixelType |
|
typedef
VirtualPointSetType::Pointer | VirtualPointSetPointer |
|
typedef PointSet
< VirtualPixelType,
itkGetStaticConstMacro(VirtualDimension)> | VirtualPointSetType |
|
typedef VirtualImageType::PointType | VirtualPointType |
|
typedef VirtualImageType::SizeType | VirtualRadiusType |
|
typedef
VirtualImageType::RegionType | VirtualRegionType |
|
typedef VirtualRegionType::SizeType | VirtualSizeType |
|
typedef
VirtualImageType::SpacingType | VirtualSpacingType |
|
typedef SmartPointer< const Self > | ConstPointer |
|
typedef
Superclass::ParametersValueType | CoordinateRepresentationType |
|
typedef Superclass::DerivativeType | DerivativeType |
|
typedef DerivativeType::ValueType | DerivativeValueType |
|
enum | GradientSourceType {
GRADIENT_SOURCE_FIXED =0,
GRADIENT_SOURCE_MOVING,
GRADIENT_SOURCE_BOTH
} |
|
typedef double | InternalComputationValueType |
|
typedef Superclass::MeasureType | MeasureType |
|
typedef unsigned int | NumberOfParametersType |
|
typedef Superclass::ParametersType | ParametersType |
|
typedef
Superclass::ParametersValueType | ParametersValueType |
|
typedef SmartPointer< Self > | Pointer |
|
typedef ObjectToObjectMetricBase | Self |
|
typedef SingleValuedCostFunctionv4 | Superclass |
|
typedef SmartPointer< const Self > | ConstPointer |
|
typedef Array
< ParametersValueType > | DerivativeType |
|
typedef double | MeasureType |
|
typedef Superclass::ParametersType | ParametersType |
|
typedef
Superclass::ParametersValueType | ParametersValueType |
|
typedef SmartPointer< Self > | Pointer |
|
typedef SingleValuedCostFunctionv4 | Self |
|
typedef CostFunction | Superclass |
|
typedef SmartPointer< const Self > | ConstPointer |
|
typedef OptimizerParameters
< ParametersValueType > | ParametersType |
|
typedef double | ParametersValueType |
|
typedef SmartPointer< Self > | Pointer |
|
typedef CostFunction | Self |
|
typedef Object | Superclass |
|
typedef SmartPointer< const Self > | ConstPointer |
|
typedef SmartPointer< Self > | Pointer |
|
typedef Object | Self |
|
typedef LightObject | Superclass |
|
typedef SmartPointer< const Self > | ConstPointer |
|
typedef SmartPointer< Self > | Pointer |
|
typedef LightObject | Self |
|