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

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

Computes the Kubler Lieblach(KL) metric between the histogram of the two images to be registered and a training histogram. More...

#include <itkKullbackLeiblerCompareHistogramImageToImageMetric.h>

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

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

Collaboration graph
[legend]
List of all members.

Public Types

typedef KullbackLeiblerCompareHistogramImageToImageMetric Self
typedef CompareHistogramImageToImageMetric<
TFixedImage, TMovingImage > 
Superclass
typedef SmartPointer< SelfPointer
typedef SmartPointer< const
Self
ConstPointer
typedef Superclass::RealType RealType
typedef Superclass::TransformType TransformType
typedef Superclass::TransformPointer TransformPointer
typedef Superclass::ConstPointer TransformConstPointer
typedef Superclass::TransformParametersType TransformParametersType
typedef Superclass::TransformJacobianType TransformJacobianType
typedef Superclass::GradientPixelType GradientPixelType
typedef Superclass::MeasureType MeasureType
typedef Superclass::DerivativeType DerivativeType
typedef Superclass::FixedImageType FixedImageType
typedef Superclass::MovingImageType MovingImageType
typedef Superclass::FixedImageConstPointer FixedImageConstPointer
typedef Superclass::MovingImageConstPointer MovingImageConstPointer
typedef Superclass::HistogramType HistogramType
typedef Superclass::HistogramSizeType HistogramSizeType
typedef Superclass::MeasurementVectorType HistogramMeasurementVectorType
typedef Superclass::HistogramFrequencyType HistogramFrequencyType
typedef Superclass::HistogramIteratorType HistogramIteratorType
typedef Superclass::HistogramPointerType HistogramPointerType
typedef Superclass::InterpolatorType InterpolatorType
typedef Superclass::InterpolatorPointer InterpolatorPointer

Public Member Functions

virtual const char * GetNameOfClass () const
virtual void SetEpsilon (double _arg)
virtual const double & GetEpsilon ()
unsigned int GetNumberOfParameters (void) const
void Initialize () throw (ExceptionObject)

Static Public Member Functions

Pointer New ()

Protected Member Functions

void FormTrainingHistogram () throw (ExceptionObject)
virtual MeasureType EvaluateMeasure (HistogramType &histogram) const
 KullbackLeiblerCompareHistogramImageToImageMetric ()
virtual ~KullbackLeiblerCompareHistogramImageToImageMetric ()
void PrintSelf (std::ostream &os, Indent indent) const

Protected Attributes

double m_Epsilon

Detailed Description

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

Computes the Kubler Lieblach(KL) metric between the histogram of the two images to be registered and a training histogram.

This class is templated over the type of the fixed and moving images to be compared.

This class computers the KL-metric by comparing the histograms of the testing histogram formed by the overlap of intensities in the images, to a training histogram. It is based on the following paper:

Albert C.S. Chung, William M. Wells III, Alexander Norbash, and W. Eric L. Grimson, Multi-modal Image Registration by Minimising Kullback-Leibler Distance, In Medical Image Computing and Computer-Assisted Intervention - MICCAI 2002, LNCS 2489, pp. 525 - 532.

The metric is given by KL(P_test||P_train) = Sum_{i1,i2} P_test(i1,i2) log (P_test(i1,i2)/P_train(i1,i2)) where P_test and P_train are probabilities given my normalized histograms, and i1 and i2 are the intensity bins in the histogram.

PARAMETERS
Epsilon is added to every bin in both histograms. This prevents division by zero problems. Epsilon should generally be set to a number smaller than one divided by the total number bins in the histogram. So, for a 256 by 256 histogram, Epsilon should be much less than 1e-5. Tests have shown that choices of epsilon are not very important as long as it is small enough. The default is 1e-12. I doubt you will need to change it.
Author:
Samson Timoner
SUPPORT
This work was supported by the Functional Imaging Research in Schizophrenia Testbed (FIRST) Biomedical Informatics Research Network (BIRN, http://www.nbirn.net), which is funded by the National Center for Research Resources at the National Institutes of Health (NIH). This work is also funded by the Neuroimage Analysis Center (P41 RR13218).

Definition at line 70 of file itkKullbackLeiblerCompareHistogramImageToImageMetric.h.


Member Typedef Documentation

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

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

Definition at line 78 of file itkKullbackLeiblerCompareHistogramImageToImageMetric.h.

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

Type of the derivative.

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

Definition at line 98 of file itkKullbackLeiblerCompareHistogramImageToImageMetric.h.

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

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

Definition at line 101 of file itkKullbackLeiblerCompareHistogramImageToImageMetric.h.

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

Type of the fixed Image.

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

Definition at line 99 of file itkKullbackLeiblerCompareHistogramImageToImageMetric.h.

template<class TFixedImage, class TMovingImage>
typedef Superclass::GradientPixelType itk::KullbackLeiblerCompareHistogramImageToImageMetric< TFixedImage, TMovingImage >::GradientPixelType
 

Gaussian filter to compute the gradient of the Moving Image

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

Definition at line 95 of file itkKullbackLeiblerCompareHistogramImageToImageMetric.h.

template<class TFixedImage, class TMovingImage>
typedef Superclass::HistogramFrequencyType itk::KullbackLeiblerCompareHistogramImageToImageMetric< TFixedImage, TMovingImage >::HistogramFrequencyType
 

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

Definition at line 110 of file itkKullbackLeiblerCompareHistogramImageToImageMetric.h.

template<class TFixedImage, class TMovingImage>
typedef Superclass::HistogramIteratorType itk::KullbackLeiblerCompareHistogramImageToImageMetric< TFixedImage, TMovingImage >::HistogramIteratorType
 

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

Definition at line 111 of file itkKullbackLeiblerCompareHistogramImageToImageMetric.h.

template<class TFixedImage, class TMovingImage>
typedef Superclass::MeasurementVectorType itk::KullbackLeiblerCompareHistogramImageToImageMetric< TFixedImage, TMovingImage >::HistogramMeasurementVectorType
 

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

Definition at line 108 of file itkKullbackLeiblerCompareHistogramImageToImageMetric.h.

template<class TFixedImage, class TMovingImage>
typedef Superclass::HistogramPointerType itk::KullbackLeiblerCompareHistogramImageToImageMetric< TFixedImage, TMovingImage >::HistogramPointerType
 

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

Definition at line 112 of file itkKullbackLeiblerCompareHistogramImageToImageMetric.h.

template<class TFixedImage, class TMovingImage>
typedef Superclass::HistogramSizeType itk::KullbackLeiblerCompareHistogramImageToImageMetric< TFixedImage, TMovingImage >::HistogramSizeType
 

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

Definition at line 106 of file itkKullbackLeiblerCompareHistogramImageToImageMetric.h.

template<class TFixedImage, class TMovingImage>
typedef Superclass::HistogramType itk::KullbackLeiblerCompareHistogramImageToImageMetric< TFixedImage, TMovingImage >::HistogramType
 

Typedefs for histogram. This should have been defined as Histogram<RealType,2> but a bug in VC++7 produced an internal compiler error with such declaration.

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

Definition at line 105 of file itkKullbackLeiblerCompareHistogramImageToImageMetric.h.

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

template<class TFixedImage, class TMovingImage>
typedef Superclass::InterpolatorPointer itk::KullbackLeiblerCompareHistogramImageToImageMetric< TFixedImage, TMovingImage >::InterpolatorPointer
 

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

Definition at line 114 of file itkKullbackLeiblerCompareHistogramImageToImageMetric.h.

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

Type of the Interpolator Base class

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

Definition at line 113 of file itkKullbackLeiblerCompareHistogramImageToImageMetric.h.

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

Type of the measure.

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

Definition at line 97 of file itkKullbackLeiblerCompareHistogramImageToImageMetric.h.

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

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

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

Definition at line 103 of file itkKullbackLeiblerCompareHistogramImageToImageMetric.h.

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

Type of the moving Image.

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

Definition at line 100 of file itkKullbackLeiblerCompareHistogramImageToImageMetric.h.

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

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

Definition at line 77 of file itkKullbackLeiblerCompareHistogramImageToImageMetric.h.

template<class TFixedImage, class TMovingImage>
typedef Superclass::RealType itk::KullbackLeiblerCompareHistogramImageToImageMetric< TFixedImage, TMovingImage >::RealType
 

Types transferred from the base class

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

Definition at line 88 of file itkKullbackLeiblerCompareHistogramImageToImageMetric.h.

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

Standard class typedefs.

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

Definition at line 75 of file itkKullbackLeiblerCompareHistogramImageToImageMetric.h.

template<class TFixedImage, class TMovingImage>
typedef CompareHistogramImageToImageMetric<TFixedImage, TMovingImage> itk::KullbackLeiblerCompareHistogramImageToImageMetric< TFixedImage, TMovingImage >::Superclass
 

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

Definition at line 76 of file itkKullbackLeiblerCompareHistogramImageToImageMetric.h.

template<class TFixedImage, class TMovingImage>
typedef Superclass::ConstPointer itk::KullbackLeiblerCompareHistogramImageToImageMetric< TFixedImage, TMovingImage >::TransformConstPointer
 

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

Definition at line 91 of file itkKullbackLeiblerCompareHistogramImageToImageMetric.h.

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

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

Definition at line 94 of file itkKullbackLeiblerCompareHistogramImageToImageMetric.h.

template<class TFixedImage, class TMovingImage>
typedef Superclass::TransformParametersType itk::KullbackLeiblerCompareHistogramImageToImageMetric< TFixedImage, TMovingImage >::TransformParametersType
 

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

Definition at line 93 of file itkKullbackLeiblerCompareHistogramImageToImageMetric.h.

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

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

Definition at line 90 of file itkKullbackLeiblerCompareHistogramImageToImageMetric.h.

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

Type of the Transform Base class

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

Definition at line 89 of file itkKullbackLeiblerCompareHistogramImageToImageMetric.h.


Constructor & Destructor Documentation

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

Constructor is protected to ensure that New() function is used to create instances.

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

Constructor is protected to ensure that New() function is used to create instances.

Definition at line 135 of file itkKullbackLeiblerCompareHistogramImageToImageMetric.h.

References itk::KullbackLeiblerCompareHistogramImageToImageMetric< TFixedImage, TMovingImage >::HistogramType, and itk::KullbackLeiblerCompareHistogramImageToImageMetric< TFixedImage, TMovingImage >::MeasureType.


Member Function Documentation

template<class TFixedImage, class TMovingImage>
virtual MeasureType itk::KullbackLeiblerCompareHistogramImageToImageMetric< TFixedImage, TMovingImage >::EvaluateMeasure HistogramType histogram  )  const [protected, virtual]
 

Evaluates the mutual information from the histogram.

Implements itk::CompareHistogramImageToImageMetric< TFixedImage, TMovingImage >.

template<class TFixedImage, class TMovingImage>
void itk::KullbackLeiblerCompareHistogramImageToImageMetric< TFixedImage, TMovingImage >::FormTrainingHistogram  )  throw (ExceptionObject) [protected]
 

Form the Histogram for the Training data

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

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

Get epsilon, the histogram frequency to use if the frequency is 0

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

Run-time type information (and related methods).

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

template<class TFixedImage, class TMovingImage>
unsigned int itk::KullbackLeiblerCompareHistogramImageToImageMetric< TFixedImage, TMovingImage >::GetNumberOfParameters void   )  const [inline, virtual]
 

Return the number of parameters required by the Transform

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

Definition at line 123 of file itkKullbackLeiblerCompareHistogramImageToImageMetric.h.

template<class TFixedImage, class TMovingImage>
void itk::KullbackLeiblerCompareHistogramImageToImageMetric< TFixedImage, TMovingImage >::Initialize  )  throw (ExceptionObject) [virtual]
 

metric. Must set all parameters first

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

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

Method for creation through the object factory.

Reimplemented from itk::Object.

template<class TFixedImage, class TMovingImage>
void itk::KullbackLeiblerCompareHistogramImageToImageMetric< TFixedImage, TMovingImage >::PrintSelf std::ostream &  os,
Indent  indent
const [protected, virtual]
 

Constructor is protected to ensure that New() function is used to create instances.

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

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

Set epsilon, which is added to each bin in both Histogram


Member Data Documentation

template<class TFixedImage, class TMovingImage>
double itk::KullbackLeiblerCompareHistogramImageToImageMetric< TFixedImage, TMovingImage >::m_Epsilon [protected]
 

Definition at line 145 of file itkKullbackLeiblerCompareHistogramImageToImageMetric.h.


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