Inheritance diagram for itk::MattesMutualInformationImageToImageMetric< TFixedImage, TMovingImage >:
This class is templated over the FixedImage type and the MovingImage type.
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.
The option UseAllPixelOn() disables the random sampling and uses all the pixels of the FixedImageRegion in order to estimate the joint intensity PDF.
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. 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.
|
| typedef std::vector< FixedImageSpatialSample > | FixedImageSpatialSampleContainer |
| FixedImageSpatialSampleContainer | m_FixedImageSamples |
| virtual void | SampleFixedImageDomain (FixedImageSpatialSampleContainer &samples) |
| virtual void | SampleFullFixedImageDomain (FixedImageSpatialSampleContainer &samples) |
| virtual void | TransformPoint (unsigned int sampleNumber, const ParametersType ¶meters, MovingImagePointType &mappedPoint, bool &sampleWithinSupportRegion, double &movingImageValue) const |
Public Types |
| typedef Superclass::BSplineTransformIndexArrayType | BSplineTransformIndexArrayType |
| typedef Superclass::BSplineTransformWeightsType | BSplineTransformWeightsType |
typedef SmartPointer< const
Self > | ConstPointer |
typedef SmartPointer< const
Self > | ConstPointer |
| typedef Superclass::CoordinateRepresentationType | CoordinateRepresentationType |
| typedef Superclass::CoordinateRepresentationType | CoordinateRepresentationType |
| typedef Superclass::DerivativeType | DerivativeType |
| typedef Superclass::DerivativeType | DerivativeType |
| typedef Superclass::FixedImageConstPointer | FixedImageConstPointer |
| typedef Superclass::FixedImageConstPointer | FixedImageConstPointer |
| typedef std::vector< FixedImageIndexType > | FixedImageIndexContainer |
| typedef FixedImageType::IndexType | FixedImageIndexType |
| typedef FixedImageIndexType::IndexValueType | FixedImageIndexValueType |
| typedef FixedImageMaskType::Pointer | FixedImageMaskPointer |
| typedef FixedImageMaskType::Pointer | FixedImageMaskPointer |
| typedef SpatialObject< itkGetStaticConstMacro(FixedImageDimension) > | FixedImageMaskType |
| typedef SpatialObject< itkGetStaticConstMacro(FixedImageDimension) > | FixedImageMaskType |
| typedef TFixedImage::PixelType | FixedImagePixelType |
| typedef TransformType::InputPointType | FixedImagePointType |
| typedef FixedImageType::RegionType | FixedImageRegionType |
| typedef FixedImageType::RegionType | FixedImageRegionType |
| typedef Superclass::FixedImageSampleContainer | FixedImageSampleContainer |
| typedef Superclass::FixedImageType | FixedImageType |
| typedef Superclass::FixedImageType | FixedImageType |
| typedef Superclass::ImageDerivativesType | ImageDerivativesType |
| typedef Superclass::IndexValueType | IndexValueType |
| typedef Superclass::InputPointType | InputPointType |
| typedef InterpolatorType::Pointer | InterpolatorPointer |
| typedef InterpolatorType::Pointer | InterpolatorPointer |
| typedef Superclass::InterpolatorType | InterpolatorType |
| typedef Superclass::InterpolatorType | InterpolatorType |
| typedef Superclass::MeasureType | MeasureType |
| typedef Superclass::MeasureType | MeasureType |
| typedef Superclass::MovingImageConstPointer | MovingImageConstPointer |
| typedef Superclass::MovingImageConstPointer | MovingImageCosntPointer |
| typedef MovingImageType::IndexType | MovingImageIndexType |
| typedef MovingImageMaskType::Pointer | MovingImageMaskPointer |
| typedef MovingImageMaskType::Pointer | MovingImageMaskPointer |
| typedef SpatialObject< itkGetStaticConstMacro(MovingImageDimension) > | MovingImageMaskType |
| typedef SpatialObject< itkGetStaticConstMacro(MovingImageDimension) > | MovingImageMaskType |
| typedef TMovingImage::PixelType | MovingImagePixelType |
| typedef TMovingImage::PixelType | MovingImagePixelType |
| typedef Superclass::MovingImagePointType | MovingImagePointType |
| typedef TransformType::OutputPointType | MovingImagePointType |
| typedef Superclass::MovingImageType | MovingImageType |
| typedef Superclass::MovingImageType | MovingImageType |
| typedef Superclass::OutputPointType | OutputPointType |
| typedef Superclass::ParametersType | ParametersType |
| typedef Superclass::ParametersType | ParametersType |
| typedef double | ParametersValueType |
| typedef SmartPointer< Self > | Pointer |
| typedef SmartPointer< Self > | Pointer |
| typedef MattesMutualInformationImageToImageMetric | Self |
| typedef MattesMutualInformationImageToImageMetric | Self |
typedef ImageToImageMetric<
TFixedImage, TMovingImage > | Superclass |
typedef ImageToImageMetric<
TFixedImage, TMovingImage > | Superclass |
| typedef Superclass::TransformJacobianType | TransformJacobianType |
| typedef Superclass::TransformJacobianType | TransformJacobianType |
| typedef TransformType::ParametersType | TransformParametersType |
| typedef TransformType::ParametersType | TransformParametersType |
| typedef Superclass::TransformPointer | TransformPointer |
| typedef Superclass::TransformPointer | TransformPointer |
| typedef Superclass::TransformType | TransformType |
| typedef Superclass::TransformType | TransformType |
| typedef Superclass::WeightsValueType | WeightsValueType |
|
| typedef GradientImageFilterType::Pointer | GradientImageFilterPointer |
typedef GradientRecursiveGaussianImageFilter<
MovingImageType, GradientImageType > | GradientImageFilterType |
| typedef SmartPointer< GradientImageType > | GradientImagePointer |
typedef Image< GradientPixelType,
itkGetStaticConstMacro(MovingImageDimension)> | GradientImageType |
typedef CovariantVector< RealType,
itkGetStaticConstMacro(MovingImageDimension)> | GradientPixelType |
typedef NumericTraits< MovingImagePixelType
>::RealType | RealType |
|
| typedef GradientImageFilterType::Pointer | GradientImageFilterPointer |
typedef GradientRecursiveGaussianImageFilter<
MovingImageType, GradientImageType > | GradientImageFilterType |
| typedef SmartPointer< GradientImageType > | GradientImagePointer |
typedef Image< GradientPixelType,
itkGetStaticConstMacro(MovingImageDimension)> | GradientImageType |
typedef CovariantVector< RealType,
itkGetStaticConstMacro(MovingImageDimension)> | GradientPixelType |
typedef NumericTraits< MovingImagePixelType
>::RealType | RealType |
Public Member Functions |
| virtual void | ComputeGradient (void) |
| virtual void | ComputeGradient () |
| virtual LightObject::Pointer | CreateAnother () const |
| virtual void | DebugOff () const |
| virtual void | DebugOn () const |
| virtual void | Delete () |
| Command * | GetCommand (unsigned long tag) |
| bool | GetDebug () const |
| virtual void | GetDerivative (const ParametersType ¶meters, DerivativeType &derivative) const=0 |
| void | GetDerivative (const ParametersType ¶meters, DerivativeType &Derivative) const |
| void | GetDerivative (const ParametersType ¶meters, DerivativeType &Derivative) const |
| virtual const FixedImageType * | GetFixedImage () |
| virtual const FixedImageType * | GetFixedImage () |
| virtual const FixedImageRegionType & | GetFixedImageRegion () |
| virtual const FixedImageRegionType & | GetFixedImageRegion () |
| virtual const GradientImageType * | GetGradientImage () |
| virtual const GradientImageType * | GetGradientImage () |
| virtual const InterpolatorType * | GetInterpolator () |
| virtual const InterpolatorType * | GetInterpolator () |
| const MetaDataDictionary & | GetMetaDataDictionary (void) const |
| MetaDataDictionary & | GetMetaDataDictionary (void) |
| virtual const MovingImageType * | GetMovingImage () |
| virtual const MovingImageType * | GetMovingImage () |
| virtual unsigned long | GetMTime () const |
| virtual const char * | GetNameOfClass () const |
| virtual const char * | GetNameOfClass () const |
| virtual const unsigned long & | GetNumberOfFixedImageSamples () |
| unsigned int | GetNumberOfParameters (void) const |
| unsigned int | GetNumberOfParameters (void) const |
| virtual const unsigned long & | GetNumberOfPixelsCounted () |
| virtual const unsigned long & | GetNumberOfPixelsCounted () |
| virtual int | GetReferenceCount () const |
| virtual const TransformType * | GetTransform () |
| virtual const TransformType * | GetTransform () |
| virtual MeasureType | GetValue (const ParametersType ¶meters) const=0 |
| MeasureType | GetValue (const ParametersType ¶meters) const |
| MeasureType | GetValue (const ParametersType ¶meters) const |
| void | GetValueAndDerivative (const ParametersType ¶meters, MeasureType &Value, DerivativeType &Derivative) const |
| void | GetValueAndDerivative (const ParametersType ¶meters, MeasureType &Value, DerivativeType &Derivative) const |
| bool | HasObserver (const EventObject &event) const |
| virtual void | Initialize (void) throw ( ExceptionObject ) |
| virtual void | Initialize (void) throw ( ExceptionObject ) |
| void | InvokeEvent (const EventObject &) const |
| void | InvokeEvent (const EventObject &) |
| | itkStaticConstMacro (MovingImageDimension, unsigned int, MovingImageType::ImageDimension) |
| | itkStaticConstMacro (MovingImageDimension, unsigned int, MovingImageType::ImageDimension) |
| virtual void | Modified () const |
| virtual void | MultiThreadingInitialize (void) throw ( ExceptionObject ) |
| void | Print (std::ostream &os, Indent indent=0) const |
| virtual void | Register () const |
| void | RemoveAllObservers () |
| void | RemoveObserver (unsigned long tag) |
| void | SetDebug (bool debugFlag) const |
| virtual void | SetFixedImage (const FixedImageType *_arg) |
| virtual void | SetFixedImage (const FixedImageType *_arg) |
| void | SetFixedImageIndexes (const FixedImageIndexContainer &indexes) |
| virtual void | SetFixedImageRegion (FixedImageRegionType _arg) |
| virtual void | SetFixedImageRegion (FixedImageRegionType _arg) |
| virtual void | SetInterpolator (InterpolatorType *_arg) |
| virtual void | SetInterpolator (InterpolatorType *_arg) |
| void | SetMetaDataDictionary (const MetaDataDictionary &rhs) |
| virtual void | SetMovingImage (const MovingImageType *_arg) |
| virtual void | SetMovingImage (const MovingImageType *_arg) |
| virtual void | SetReferenceCount (int) |
| virtual void | SetTransform (TransformType *_arg) |
| virtual void | SetTransform (TransformType *_arg) |
| void | SetTransformParameters (const ParametersType ¶meters) const |
| void | SetTransformParameters (const ParametersType ¶meters) const |
| virtual void | UnRegister () const |
|
| unsigned long | AddObserver (const EventObject &event, Command *) const |
| unsigned long | AddObserver (const EventObject &event, Command *) |
|
| virtual void | ComputeGradientOff () |
| virtual void | ComputeGradientOn () |
| virtual const bool & | GetComputeGradient () |
| virtual void | SetComputeGradient (bool _arg) |
|
| virtual void | ComputeGradientOff () |
| virtual void | ComputeGradientOn () |
| virtual const bool & | GetComputeGradient () |
| virtual void | SetComputeGradient (bool _arg) |
|
| virtual const FixedImageMaskType * | GetFixedImageMask () |
| virtual void | SetFixedImageMask (FixedImageMaskType *_arg) |
|
| virtual const FixedImageMaskType * | GetFixedImageMask () |
| virtual void | SetFixedImageMask (FixedImageMaskType *_arg) |
|
| virtual const FixedImagePixelType & | GetFixedImageSamplesIntensityThreshold () |
| virtual const bool & | GetUseFixedImageSamplesIntensityThreshold () |
| void | SetFixedImageSamplesIntensityThreshold (const FixedImagePixelType &thresh) |
| virtual void | SetUseFixedImageSamplesIntensityThreshold (bool _arg) |
|
| virtual const MovingImageMaskType * | GetMovingImageMask () |
| virtual void | SetMovingImageMask (MovingImageMaskType *_arg) |
|
| virtual const MovingImageMaskType * | GetMovingImageMask () |
| virtual void | SetMovingImageMask (MovingImageMaskType *_arg) |
|
| virtual const unsigned long & | GetNumberOfHistogramBins () |
| virtual void | SetNumberOfHistogramBins (unsigned long _arg) |
|
| virtual const unsigned long & | GetNumberOfHistogramBins () |
| virtual void | SetNumberOfHistogramBins (unsigned long _arg) |
|
| virtual const unsigned long & | GetNumberOfMovingImageSamples () |
| unsigned long | GetNumberOfPixelsCounter (void) |
|
| virtual const unsigned long & | GetNumberOfSpatialSamples () |
| virtual void | SetNumberOfSpatialSamples (unsigned long _arg) |
|
| virtual const unsigned int & | GetNumberOfThreads () |
| virtual void | SetNumberOfThreads (unsigned int _arg) |
|
| virtual const bool & | GetUseAllPixels () |
| virtual void | SetUseAllPixels (bool _arg) |
| virtual void | UseAllPixelsOff () |
| virtual void | UseAllPixelsOn () |
|
| virtual const bool & | GetUseCachingOfBSplineWeights () |
| virtual void | SetUseCachingOfBSplineWeights (bool _arg) |
| virtual void | UseCachingOfBSplineWeightsOff () |
| virtual void | UseCachingOfBSplineWeightsOn () |
|
| virtual const bool & | GetUseExplicitPDFDerivatives () |
| virtual void | SetUseExplicitPDFDerivatives (bool _arg) |
| virtual void | UseExplicitPDFDerivativesOff () |
| virtual void | UseExplicitPDFDerivativesOn () |
|
| virtual const bool & | GetUseExplicitPDFDerivatives () |
| virtual void | SetUseExplicitPDFDerivatives (bool _arg) |
| virtual void | UseExplicitPDFDerivativesOff () |
| virtual void | UseExplicitPDFDerivativesOn () |
|
| virtual void | GetValueAndDerivative (const ParametersType ¶meters, MeasureType &value, DerivativeType &derivative) const |
|
| | itkStaticConstMacro (FixedImageDimension, unsigned int, TFixedImage::ImageDimension) |
| | itkStaticConstMacro (MovingImageDimension, unsigned int, TMovingImage::ImageDimension) |
|
| void | ReinitializeSeed (int) |
| void | ReinitializeSeed () |
|
| virtual void | SetNumberOfFixedImageSamples (unsigned long numSamples) |
Static Public Member Functions |
| static void | BreakOnError () |
| static Pointer | New () |
| static Pointer | New () |
|
| static bool | GetGlobalWarningDisplay () |
| static void | GlobalWarningDisplayOff () |
| static void | GlobalWarningDisplayOn () |
| static void | SetGlobalWarningDisplay (bool flag) |
Protected Types |
typedef FixedArray< unsigned
long,::itk::GetImageDimension<
FixedImageType >::ImageDimension > | BSplineParametersOffsetType |
| typedef MultiThreader | MultiThreaderType |
Protected Member Functions |
| virtual void | ComputeImageDerivatives (const MovingImagePointType &mappedPoint, ImageDerivativesType &gradient, unsigned int threadID) const |
| void | GetValueAndDerivativeMultiThreadedInitiate (void) const |
| void | GetValueAndDerivativeMultiThreadedPostProcessInitiate (void) const |
| void | GetValueAndDerivativeMultiThreadedPreProcessInitiate (void) const |
| void | GetValueAndDerivativeThread (unsigned int threadID) const |
| void | GetValueMultiThreadedInitiate (void) const |
| void | GetValueMultiThreadedPostProcessInitiate (void) const |
| void | GetValueMultiThreadedPreProcessInitiate (void) const |
| void | GetValueThread (unsigned int threadID) const |
| | itkStaticConstMacro (DeformationSplineOrder, unsigned int, 3) |
| | MattesMutualInformationImageToImageMetric () |
| | MattesMutualInformationImageToImageMetric () |
| void | NumberOfFixedImageSamplesUpdated () |
| bool | PrintObservers (std::ostream &os, Indent indent) const |
| void | PrintSelf (std::ostream &os, Indent indent) const |
| void | PrintSelf (std::ostream &os, Indent indent) const |
| virtual void | SampleFixedImageDomain (FixedImageSampleContainer &samples) const |
| virtual void | SampleFixedImageIndexes (FixedImageSampleContainer &samples) |
| virtual void | SampleFullFixedImageDomain (FixedImageSampleContainer &samples) |
| void | SynchronizeTransforms () const |
| virtual void | TransformPoint (unsigned int sampleNumber, MovingImagePointType &mappedPoint, bool &sampleWithinSupportRegion, double &movingImageValue, unsigned int threadID) const |
| virtual void | TransformPointWithDerivatives (unsigned int sampleNumber, MovingImagePointType &mappedPoint, bool &sampleWithinSupportRegion, double &movingImageValue, ImageDerivativesType &gradient, unsigned int threadID) const |
| virtual | ~MattesMutualInformationImageToImageMetric () |
| virtual | ~MattesMutualInformationImageToImageMetric () |
|
| virtual void | PrintHeader (std::ostream &os, Indent indent) const |
| virtual void | PrintTrailer (std::ostream &os, Indent indent) const |
Static Protected Member Functions |
| 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 |
| BSplineParametersOffsetType | m_BSplineParametersOffset |
| MovingImagePointArrayType | m_BSplinePreTransformPointsArray |
| BSplineTransformIndexArrayType | m_BSplineTransformIndices |
| BSplineTransformWeightsType | m_BSplineTransformWeights |
| bool | m_ComputeGradient |
| FixedImageConstPointer | m_FixedImage |
| FixedImageIndexContainer | m_FixedImageIndexes |
| FixedImageMaskPointer | m_FixedImageMask |
| FixedImagePixelType | m_FixedImageSamplesIntensityThreshold |
| GradientImagePointer | m_GradientImage |
| InterpolatorPointer | m_Interpolator |
| MovingImageConstPointer | m_MovingImage |
| MovingImageMaskPointer | m_MovingImageMask |
| unsigned long | m_NumberOfFixedImageSamples |
| unsigned long | m_NumberOfMovingImageSamples |
| unsigned long | m_NumberOfPixelsCounted |
| unsigned int | m_NumberOfThreads |
| ParametersType | m_Parameters |
| volatile int | m_ReferenceCount |
| SimpleFastMutexLock | m_ReferenceCountLock |
| MultiThreaderType::Pointer | m_Threader |
| BSplineTransformIndexArrayType * | m_ThreaderBSplineTransformIndices |
| BSplineTransformWeightsType * | m_ThreaderBSplineTransformWeights |
| unsigned int | m_ThreaderChunkSize |
| unsigned int * | m_ThreaderNumberOfMovingImageSamples |
| MultiThreaderParameterType | m_ThreaderParameter |
| unsigned int | m_ThreaderSizeOfLastChunk |
| TransformPointer * | m_ThreaderTransform |
| TransformPointer | m_Transform |
| bool | m_UseFixedImageIndexes |
| bool | m_UseFixedImageSamplesIntensityThreshold |
| BooleanArrayType | m_WithinBSplineSupportRegionArray |
| bool | m_WithinThreadPostProcess |
| bool | m_WithinThreadPreProcess |