ITK  4.2.0
Insight Segmentation and Registration Toolkit
Classes | Public Types | Public Member Functions | Static Public Member Functions | Static Public Attributes | Protected Member Functions | Private Types | Private Member Functions | Private Attributes
itk::MutualInformationImageToImageMetric< TFixedImage, TMovingImage > Class Template Reference

#include <itkMutualInformationImageToImageMetric.h>

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

List of all members.

Classes

class  SpatialSample

Public Types

typedef SmartPointer< const SelfConstPointer
typedef Superclass::DerivativeType DerivativeType
typedef
Superclass::FixedImageConstPointer 
FixedImageConstPointer
typedef FixedImageType::IndexType FixedImageIndexType
typedef
FixedImageIndexType::IndexValueType 
FixedImageIndexValueType
typedef
TransformType::InputPointType 
FixedImagePointType
typedef Superclass::FixedImageType FixedImageType
typedef
Superclass::InterpolatorType 
InterpolatorType
typedef KernelFunctionBase
< double > 
KernelFunctionType
typedef Superclass::MeasureType MeasureType
typedef
Superclass::MovingImageConstPointer 
MovingImageCosntPointer
typedef MovingImageType::IndexType MovingImageIndexType
typedef
TransformType::OutputPointType 
MovingImagePointType
typedef Superclass::MovingImageType MovingImageType
typedef Superclass::ParametersType ParametersType
typedef SmartPointer< SelfPointer
typedef
MutualInformationImageToImageMetric 
Self
typedef ImageToImageMetric
< TFixedImage, TMovingImage > 
Superclass
typedef
Superclass::TransformJacobianType 
TransformJacobianType
typedef
Superclass::TransformPointer 
TransformPointer
typedef Superclass::TransformType TransformType
- Public Types inherited from itk::ImageToImageMetric< TFixedImage, TMovingImage >
typedef std::vector
< FixedImageIndexType
FixedImageIndexContainer
typedef
FixedImageMaskType::ConstPointer 
FixedImageMaskConstPointer
typedef FixedImageMaskType::Pointer FixedImageMaskPointer
typedef SpatialObject
< itkGetStaticConstMacro(FixedImageDimension) > 
FixedImageMaskType
typedef TFixedImage::PixelType FixedImagePixelType
typedef FixedImageType::RegionType FixedImageRegionType
typedef
TransformType::InputPointType 
InputPointType
typedef InterpolatorType::Pointer InterpolatorPointer
typedef
MovingImageType::ConstPointer 
MovingImageConstPointer
typedef
MovingImageMaskType::ConstPointer 
MovingImageMaskConstPointer
typedef
MovingImageMaskType::Pointer 
MovingImageMaskPointer
typedef SpatialObject
< itkGetStaticConstMacro(MovingImageDimension) > 
MovingImageMaskType
typedef TMovingImage::PixelType MovingImagePixelType
typedef MultiThreader MultiThreaderType
typedef
TransformType::OutputPointType 
OutputPointType
typedef
TransformType::ParametersType 
TransformParametersType
typedef NumericTraits
< MovingImagePixelType >
::RealType 
RealType
typedef CovariantVector
< RealType,
itkGetStaticConstMacro(MovingImageDimension) > 
GradientPixelType
typedef Image
< GradientPixelType,
itkGetStaticConstMacro(MovingImageDimension) > 
GradientImageType
typedef SmartPointer
< GradientImageType
GradientImagePointer
typedef
GradientRecursiveGaussianImageFilter
< MovingImageType,
GradientImageType
GradientImageFilterType
typedef
GradientImageFilterType::Pointer 
GradientImageFilterPointer
- Public Types inherited from itk::SingleValuedCostFunction
typedef
Superclass::ParametersValueType 
ParametersValueType
- Public Types inherited from itk::CostFunction
- Public Types inherited from itk::Object
- Public Types inherited from itk::LightObject

Public Member Functions

virtual ::itk::LightObject::Pointer CreateAnother (void) const
void GetDerivative (const ParametersType &parameters, DerivativeType &Derivative) const
virtual const char * GetNameOfClass () const
virtual const unsigned int & GetNumberOfSpatialSamples ()
MeasureType GetValue (const ParametersType &parameters) const
void GetValueAndDerivative (const ParametersType &parameters, MeasureType &Value, DerivativeType &Derivative) const
void ReinitializeSeed ()
void ReinitializeSeed (int)
void SetNumberOfSpatialSamples (unsigned int num)
virtual void SetMovingImageStandardDeviation (double _arg)
virtual const double & GetMovingImageStandardDeviation ()
virtual void SetFixedImageStandardDeviation (double _arg)
virtual double GetFixedImageStandardDeviation () const
virtual void SetKernelFunction (KernelFunctionType *_arg)
virtual KernelFunctionTypeGetKernelFunction ()
- Public Member Functions inherited from itk::ImageToImageMetric< TFixedImage, TMovingImage >
virtual void ComputeGradient (void)
virtual const FixedImageTypeGetFixedImage ()
virtual const
FixedImageRegionType
GetFixedImageRegion ()
virtual const FixedImagePixelTypeGetFixedImageSamplesIntensityThreshold ()
virtual const GradientImageTypeGetGradientImage ()
virtual const InterpolatorTypeGetInterpolator ()
virtual const MovingImageTypeGetMovingImage ()
SizeValueType GetNumberOfMovingImageSamples (void)
unsigned int GetNumberOfParameters (void) const
virtual const SizeValueTypeGetNumberOfPixelsCounted ()
virtual const TransformTypeGetTransform ()
virtual const bool & GetUseAllPixels ()
virtual const bool & GetUseFixedImageIndexes ()
virtual const bool & GetUseFixedImageSamplesIntensityThreshold ()
virtual const bool & GetUseSequentialSampling ()
virtual void Initialize (void) throw ( ExceptionObject )
virtual void MultiThreadingInitialize (void) throw ( ExceptionObject )
virtual void SetFixedImage (const FixedImageType *_arg)
void SetFixedImageIndexes (const FixedImageIndexContainer &indexes)
void SetFixedImageRegion (const FixedImageRegionType reg)
void SetFixedImageSamplesIntensityThreshold (const FixedImagePixelType &thresh)
virtual void SetInterpolator (InterpolatorType *_arg)
virtual void SetMovingImage (const MovingImageType *_arg)
void SetNumberOfSpatialSamples (SizeValueType num)
virtual void SetTransform (TransformType *_arg)
void SetTransformParameters (const ParametersType &parameters) const
void SetUseAllPixels (bool useAllPixels)
void SetUseFixedImageIndexes (bool useIndex)
void SetUseFixedImageSamplesIntensityThreshold (bool useThresh)
void SetUseSequentialSampling (bool sequentialSampling)
void UseAllPixelsOff (void)
void UseAllPixelsOn (void)
virtual void SetMovingImageMask (MovingImageMaskType *_arg)
virtual void SetMovingImageMask (const MovingImageMaskType *_arg)
virtual const MovingImageMaskTypeGetMovingImageMask ()
virtual void SetFixedImageMask (FixedImageMaskType *_arg)
virtual void SetFixedImageMask (const FixedImageMaskType *_arg)
virtual const FixedImageMaskTypeGetFixedImageMask ()
void SetNumberOfThreads (ThreadIdType numberOfThreads)
virtual const ThreadIdTypeGetNumberOfThreads ()
virtual void SetComputeGradient (bool _arg)
virtual const bool & GetComputeGradient ()
virtual void ComputeGradientOn ()
virtual void ComputeGradientOff ()
virtual void SetNumberOfFixedImageSamples (SizeValueType numSamples)
virtual const SizeValueTypeGetNumberOfFixedImageSamples ()
virtual void SetUseCachingOfBSplineWeights (bool _arg)
virtual const bool & GetUseCachingOfBSplineWeights ()
virtual void UseCachingOfBSplineWeightsOn ()
virtual void UseCachingOfBSplineWeightsOff ()
virtual const MultiThreaderTypeGetThreader ()
const TransformPointerGetThreaderTransform ()

Static Public Member Functions

static Pointer New ()

Static Public Attributes

static const unsigned int MovingImageDimension = MovingImageType::ImageDimension
- Static Public Attributes inherited from itk::ImageToImageMetric< TFixedImage, TMovingImage >
static const unsigned int FixedImageDimension = TFixedImage::ImageDimension

Protected Member Functions

 MutualInformationImageToImageMetric ()
void PrintSelf (std::ostream &os, Indent indent) const
virtual ~MutualInformationImageToImageMetric ()
- Protected Member Functions inherited from itk::ImageToImageMetric< TFixedImage, TMovingImage >
virtual void ComputeImageDerivatives (const MovingImagePointType &mappedPoint, ImageDerivativesType &gradient, ThreadIdType threadID) const
void GetValueAndDerivativeMultiThreadedInitiate (void) const
void GetValueAndDerivativeMultiThreadedPostProcessInitiate (void) const
void GetValueAndDerivativeMultiThreadedPreProcessInitiate (void) const
virtual void GetValueAndDerivativeThread (ThreadIdType threadID) const
virtual void GetValueAndDerivativeThreadPostProcess (ThreadIdType, bool) const
virtual void GetValueAndDerivativeThreadPreProcess (ThreadIdType, bool) const
virtual bool GetValueAndDerivativeThreadProcessSample (ThreadIdType, SizeValueType, const MovingImagePointType &, double, const ImageDerivativesType &) const
void GetValueMultiThreadedInitiate (void) const
void GetValueMultiThreadedPostProcessInitiate (void) const
void GetValueMultiThreadedPreProcessInitiate (void) const
virtual void GetValueThread (ThreadIdType threadID) const
virtual void GetValueThreadPostProcess (ThreadIdType, bool) const
virtual void GetValueThreadPreProcess (ThreadIdType, bool) const
virtual bool GetValueThreadProcessSample (ThreadIdType, SizeValueType, const MovingImagePointType &, double) const
 ImageToImageMetric ()
virtual void PreComputeTransformValues (void)
virtual void SampleFixedImageIndexes (FixedImageSampleContainer &samples) const
virtual void SampleFixedImageRegion (FixedImageSampleContainer &samples) const
virtual void SampleFullFixedImageRegion (FixedImageSampleContainer &samples) const
virtual void SynchronizeTransforms () const
virtual void TransformPoint (unsigned int sampleNumber, MovingImagePointType &mappedPoint, bool &sampleWithinSupportRegion, double &movingImageValue, ThreadIdType threadID) const
virtual void TransformPointWithDerivatives (unsigned int sampleNumber, MovingImagePointType &mappedPoint, bool &sampleWithinSupportRegion, double &movingImageValue, ImageDerivativesType &gradient, ThreadIdType threadID) const
virtual ~ImageToImageMetric ()
- Protected Member Functions inherited from itk::SingleValuedCostFunction
 SingleValuedCostFunction ()
virtual ~SingleValuedCostFunction ()
- Protected Member Functions inherited from itk::CostFunction
 CostFunction ()
virtual ~CostFunction ()
- Protected Member Functions inherited from itk::Object
 Object ()
bool PrintObservers (std::ostream &os, Indent indent) const
virtual void SetTimeStamp (const TimeStamp &time)
virtual ~Object ()
- Protected Member Functions inherited from itk::LightObject
virtual LightObject::Pointer InternalClone () const
 LightObject ()
virtual void PrintHeader (std::ostream &os, Indent indent) const
virtual void PrintTrailer (std::ostream &os, Indent indent) const
virtual ~LightObject ()

Private Types

typedef
Superclass::CoordinateRepresentationType 
CoordinateRepresentationType
typedef
CentralDifferenceImageFunction
< MovingImageType,
CoordinateRepresentationType
DerivativeFunctionType
typedef std::vector
< SpatialSample
SpatialSampleContainer

Private Member Functions

void CalculateDerivatives (const FixedImagePointType &, DerivativeType &) const
 MutualInformationImageToImageMetric (const Self &)
void operator= (const Self &)
virtual void SampleFixedImageDomain (SpatialSampleContainer &samples) const

Private Attributes

DerivativeFunctionType::Pointer m_DerivativeCalculator
double m_FixedImageStandardDeviation
KernelFunctionType::Pointer m_KernelFunction
double m_MinProbability
double m_MovingImageStandardDeviation
unsigned int m_NumberOfSpatialSamples
int m_RandomSeed
bool m_ReseedIterator
SpatialSampleContainer m_SampleA
SpatialSampleContainer m_SampleB

Additional Inherited Members

- Protected Types inherited from itk::ImageToImageMetric< TFixedImage, TMovingImage >
typedef std::vector< bool > BooleanArrayType
typedef
BSplineInterpolateImageFunction
< MovingImageType,
CoordinateRepresentationType
BSplineInterpolatorType
typedef FixedArray
< SizeValueType,::itk::GetImageDimension
< FixedImageType >
::ImageDimension > 
BSplineParametersOffsetType
typedef
BSplineTransformType::ParameterIndexArrayType 
BSplineTransformIndexArrayType
typedef Array2D< IndexValueTypeBSplineTransformIndicesArrayType
typedef BSplineBaseTransform
< CoordinateRepresentationType,::itk::GetImageDimension
< FixedImageType >
::ImageDimension,
itkGetStaticConstMacro(DeformationSplineOrder) > 
BSplineTransformType
typedef Array2D< WeightsValueTypeBSplineTransformWeightsArrayType
typedef
BSplineTransformType::WeightsType 
BSplineTransformWeightsType
typedef std::vector
< FixedImageSamplePoint
FixedImageSampleContainer
typedef CovariantVector
< double,
itkGetStaticConstMacro(MovingImageDimension) > 
ImageDerivativesType
typedef
BSplineTransformIndexArrayType::ValueType 
IndexValueType
typedef std::vector
< MovingImagePointType
MovingImagePointArrayType
typedef
BSplineTransformWeightsType::ValueType 
WeightsValueType
- Static Protected Member Functions inherited from itk::ImageToImageMetric< TFixedImage, TMovingImage >
static ITK_THREAD_RETURN_TYPE GetValueAndDerivativeMultiThreaded (void *arg)
static ITK_THREAD_RETURN_TYPE GetValueAndDerivativeMultiThreadedPostProcess (void *arg)
static ITK_THREAD_RETURN_TYPE GetValueAndDerivativeMultiThreadedPreProcess (void *arg)
static ITK_THREAD_RETURN_TYPE GetValueMultiThreaded (void *arg)
static ITK_THREAD_RETURN_TYPE GetValueMultiThreadedPostProcess (void *arg)
static ITK_THREAD_RETURN_TYPE GetValueMultiThreadedPreProcess (void *arg)
- Protected Attributes inherited from itk::ImageToImageMetric< TFixedImage, TMovingImage >
BSplineInterpolatorType::Pointer m_BSplineInterpolator
BSplineParametersOffsetType m_BSplineParametersOffset
MovingImagePointArrayType m_BSplinePreTransformPointsArray
BSplineTransformType::Pointer m_BSplineTransform
BSplineTransformIndexArrayType m_BSplineTransformIndices
BSplineTransformIndicesArrayType m_BSplineTransformIndicesArray
BSplineTransformWeightsType m_BSplineTransformWeights
BSplineTransformWeightsArrayType m_BSplineTransformWeightsArray
bool m_ComputeGradient
FixedImageConstPointer m_FixedImage
FixedImageIndexContainer m_FixedImageIndexes
FixedImageMaskConstPointer m_FixedImageMask
FixedImageSampleContainer m_FixedImageSamples
FixedImagePixelType m_FixedImageSamplesIntensityThreshold
GradientImagePointer m_GradientImage
InterpolatorPointer m_Interpolator
bool m_InterpolatorIsBSpline
MovingImageConstPointer m_MovingImage
MovingImageMaskConstPointer m_MovingImageMask
SizeValueType m_NumberOfFixedImageSamples
SizeValueType m_NumberOfParameters
SizeValueType m_NumberOfPixelsCounted
ThreadIdType m_NumberOfThreads
SizeValueType m_NumBSplineWeights
MultiThreaderType::Pointer m_Threader
BSplineTransformIndexArrayTypem_ThreaderBSplineTransformIndices
BSplineTransformWeightsTypem_ThreaderBSplineTransformWeights
unsigned int * m_ThreaderNumberOfMovingImageSamples
MultiThreaderParameterType m_ThreaderParameter
TransformPointerm_ThreaderTransform
TransformPointer m_Transform
bool m_TransformIsBSpline
bool m_UseAllPixels
bool m_UseCachingOfBSplineWeights
bool m_UseFixedImageIndexes
bool m_UseFixedImageSamplesIntensityThreshold
bool m_UseSequentialSampling
BooleanArrayType m_WithinBSplineSupportRegionArray
bool m_WithinThreadPostProcess
bool m_WithinThreadPreProcess
- Static Protected Attributes inherited from itk::ImageToImageMetric< TFixedImage, TMovingImage >
static const unsigned int DeformationSplineOrder = 3

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 KernelFunctionBase 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:
KernelFunctionBase
GaussianKernelFunction
Wiki Examples:

Definition at line 94 of file itkMutualInformationImageToImageMetric.h.


Member Typedef Documentation

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

Type used for representing point components

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

Definition at line 254 of file itkMutualInformationImageToImageMetric.h.

template<class TFixedImage , class TMovingImage >
typedef CentralDifferenceImageFunction< MovingImageType, CoordinateRepresentationType > itk::MutualInformationImageToImageMetric< TFixedImage, TMovingImage >::DerivativeFunctionType
private

Typedefs for using central difference calculator.

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

Definition at line 256 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 117 of file itkMutualInformationImageToImageMetric.h.

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

Index and Point typedef support.

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

Definition at line 125 of file itkMutualInformationImageToImageMetric.h.

template<class TFixedImage , class TMovingImage >
typedef FixedImageIndexType::IndexValueType itk::MutualInformationImageToImageMetric< TFixedImage, TMovingImage >::FixedImageIndexValueType
template<class TFixedImage , class TMovingImage >
typedef TransformType::InputPointType itk::MutualInformationImageToImageMetric< TFixedImage, TMovingImage >::FixedImagePointType
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 119 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 115 of file itkMutualInformationImageToImageMetric.h.

template<class TFixedImage , class TMovingImage >
typedef KernelFunctionBase<double> itk::MutualInformationImageToImageMetric< TFixedImage, TMovingImage >::KernelFunctionType

Definition at line 131 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 116 of file itkMutualInformationImageToImageMetric.h.

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

Definition at line 122 of file itkMutualInformationImageToImageMetric.h.

template<class TFixedImage , class TMovingImage >
typedef MovingImageType::IndexType itk::MutualInformationImageToImageMetric< TFixedImage, TMovingImage >::MovingImageIndexType
template<class TFixedImage , class TMovingImage >
typedef TransformType::OutputPointType itk::MutualInformationImageToImageMetric< TFixedImage, TMovingImage >::MovingImagePointType
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 120 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 118 of file itkMutualInformationImageToImageMetric.h.

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

Standard class typedefs.

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

Definition at line 100 of file itkMutualInformationImageToImageMetric.h.

template<class TFixedImage , class TMovingImage >
typedef std::vector< SpatialSample > itk::MutualInformationImageToImageMetric< TFixedImage, TMovingImage >::SpatialSampleContainer
private

SpatialSampleContainer typedef support.

Definition at line 224 of file itkMutualInformationImageToImageMetric.h.

template<class TFixedImage , class TMovingImage >
typedef ImageToImageMetric< TFixedImage, TMovingImage > itk::MutualInformationImageToImageMetric< TFixedImage, TMovingImage >::Superclass
template<class TFixedImage , class TMovingImage >
typedef Superclass::TransformJacobianType itk::MutualInformationImageToImageMetric< TFixedImage, TMovingImage >::TransformJacobianType
template<class TFixedImage , class TMovingImage >
typedef Superclass::TransformPointer itk::MutualInformationImageToImageMetric< TFixedImage, TMovingImage >::TransformPointer
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 109 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 ( )
inlineprotectedvirtual

Definition at line 199 of file itkMutualInformationImageToImageMetric.h.

template<class TFixedImage , class TMovingImage >
itk::MutualInformationImageToImageMetric< TFixedImage, TMovingImage >::MutualInformationImageToImageMetric ( const Self )
private

Member Function Documentation

template<class TFixedImage , class TMovingImage >
void itk::MutualInformationImageToImageMetric< TFixedImage, TMovingImage >::CalculateDerivatives ( const FixedImagePointType ,
DerivativeType  
) const
private

Calculate the intensity derivatives at a point

template<class TFixedImage , class TMovingImage >
virtual::itk::LightObject::Pointer itk::MutualInformationImageToImageMetric< TFixedImage, TMovingImage >::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 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 ( ) const
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 KernelFunctionType* 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.

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

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 >
static 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 >::operator= ( const Self )
private

Mutex lock to protect modification to the reference count

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

template<class TFixedImage , class TMovingImage >
void itk::MutualInformationImageToImageMetric< TFixedImage, TMovingImage >::PrintSelf ( std::ostream &  os,
Indent  indent 
) const
protectedvirtual

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 ( )

Reinitialize the seed of the random number generator that selects the sample of pixels used for estimating the image histograms and the joint histogram. By nature, this metric is not deterministic, since at each run it may select a different set of pixels. By initializing the random number generator seed to the same value you can restore determinism. On the other hand, calling the method ReinitializeSeed() without arguments will use the clock from your machine in order to have a very random initialization of the seed. This will indeed increase the non-deterministic behavior of the metric.

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

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

Reinitialize the seed of the random number generator that selects the sample of pixels used for estimating the image histograms and the joint histogram. By nature, this metric is not deterministic, since at each run it may select a different set of pixels. By initializing the random number generator seed to the same value you can restore determinism. On the other hand, calling the method ReinitializeSeed() without arguments will use the clock from your machine in order to have a very random initialization of the seed. This will indeed increase the non-deterministic behavior of the metric.

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

template<class TFixedImage , class TMovingImage >
virtual void itk::MutualInformationImageToImageMetric< TFixedImage, TMovingImage >::SampleFixedImageDomain ( SpatialSampleContainer samples) const
privatevirtual

Uniformly select samples from the fixed image buffer.

Warning:
Note that this method has a different signature than the one in the base OptImageToImageMetric and therefore they are not intended to provide polymorphism. That is, this function is not overriding the one in the base class.
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 ( KernelFunctionType _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.


Member Data Documentation

template<class TFixedImage , class TMovingImage >
DerivativeFunctionType::Pointer itk::MutualInformationImageToImageMetric< TFixedImage, TMovingImage >::m_DerivativeCalculator
private

Pointer to central difference calculator.

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

Definition at line 258 of file itkMutualInformationImageToImageMetric.h.

template<class TFixedImage , class TMovingImage >
double itk::MutualInformationImageToImageMetric< TFixedImage, TMovingImage >::m_FixedImageStandardDeviation
private

Definition at line 236 of file itkMutualInformationImageToImageMetric.h.

template<class TFixedImage , class TMovingImage >
KernelFunctionType::Pointer itk::MutualInformationImageToImageMetric< TFixedImage, TMovingImage >::m_KernelFunction
private

Definition at line 239 of file itkMutualInformationImageToImageMetric.h.

template<class TFixedImage , class TMovingImage >
double itk::MutualInformationImageToImageMetric< TFixedImage, TMovingImage >::m_MinProbability
private

Definition at line 237 of file itkMutualInformationImageToImageMetric.h.

template<class TFixedImage , class TMovingImage >
double itk::MutualInformationImageToImageMetric< TFixedImage, TMovingImage >::m_MovingImageStandardDeviation
private

Definition at line 235 of file itkMutualInformationImageToImageMetric.h.

template<class TFixedImage , class TMovingImage >
unsigned int itk::MutualInformationImageToImageMetric< TFixedImage, TMovingImage >::m_NumberOfSpatialSamples
private

Definition at line 234 of file itkMutualInformationImageToImageMetric.h.

template<class TFixedImage , class TMovingImage >
int itk::MutualInformationImageToImageMetric< TFixedImage, TMovingImage >::m_RandomSeed
private
template<class TFixedImage , class TMovingImage >
bool itk::MutualInformationImageToImageMetric< TFixedImage, TMovingImage >::m_ReseedIterator
private
template<class TFixedImage , class TMovingImage >
SpatialSampleContainer itk::MutualInformationImageToImageMetric< TFixedImage, TMovingImage >::m_SampleA
mutableprivate

Container to store sample set A - used to approximate the probability density function (pdf).

Definition at line 228 of file itkMutualInformationImageToImageMetric.h.

template<class TFixedImage , class TMovingImage >
SpatialSampleContainer itk::MutualInformationImageToImageMetric< TFixedImage, TMovingImage >::m_SampleB
mutableprivate

Container to store sample set B - used to approximate the mutual information value.

Definition at line 232 of file itkMutualInformationImageToImageMetric.h.

template<class TFixedImage , class TMovingImage >
const unsigned int itk::MutualInformationImageToImageMetric< TFixedImage, TMovingImage >::MovingImageDimension = MovingImageType::ImageDimension
static

Enum of the moving image dimension.

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

Definition at line 135 of file itkMutualInformationImageToImageMetric.h.


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