Public Types | Public Member Functions | Static Public Member Functions | Protected Member Functions | Protected Attributes

mitk::MetricFactory< TPixelType, VImageDimension > Class Template Reference
[Classes related to rigid registration]

This class creates a metric for a rigid registration process. More...

#include <mitkMetricFactory.h>

List of all members.

Public Types

typedef MetricFactory Self
typedef itk::Object Superclass
typedef itk::SmartPointer< SelfPointer
typedef itk::SmartPointer
< const Self
ConstPointer
typedef itk::Image< TPixelType,
VImageDimension > 
FixedImageType
typedef itk::Image< unsigned
char, VImageDimension > 
FixedMaskImageType
typedef
itk::ImageMaskSpatialObject
< VImageDimension > 
FixedImageMaskType
typedef itk::Image< TPixelType,
VImageDimension > 
MovingImageType
typedef itk::Image< unsigned
char, VImageDimension > 
MovingMaskImageType
typedef
itk::ImageMaskSpatialObject
< VImageDimension > 
MovingImageMaskType
typedef
itk::ImageToImageMetric
< FixedImageType,
MovingImageType
MetricType
typedef MetricType::Pointer MetricPointer

Public Member Functions

virtual const char * GetClassName () const
MetricPointer GetMetric ()
 Returns the metric which then can be used in combination with a transform, an optimizer and an interpolator within a registration pipeline.
void SetMetricParameters (MetricParameters::Pointer metricParameters)
 Sets the instance to the metric parameters class which holds all parameters for the new metric.
MetricParameters::Pointer GetMetricParameters ()
 Returns the instance to the metric parameters class which holds all parameters for the new metric.

Static Public Member Functions

static Pointer New ()

Protected Member Functions

 MetricFactory ()
 ~MetricFactory ()

Protected Attributes

MetricParameters::Pointer m_MetricParameters

Detailed Description

template<class TPixelType, unsigned int VImageDimension>
class mitk::MetricFactory< TPixelType, VImageDimension >

This class creates a metric for a rigid registration process.

This class will e.g. be instantiated by mitkImageRegistrationMethod and a metric corresponding to the integer value stored in mitkMetricParameters will be created. Therefore SetMetricParameters() has to be called with an instance of mitkMetricParameters, which holds all parameter informations for the new metric.

GetMetric() returns the metric which then can be used in combination with a transform, an optimizer and an interpolator within a registration pipeline.

Author:
Daniel Stein

Definition at line 45 of file mitkMetricFactory.h.


Member Typedef Documentation

template<class TPixelType, unsigned int VImageDimension>
typedef itk::SmartPointer<const Self> mitk::MetricFactory< TPixelType, VImageDimension >::ConstPointer

Definition at line 26 of file mitkMetricFactory.h.

template<class TPixelType, unsigned int VImageDimension>
typedef itk::ImageMaskSpatialObject< VImageDimension > mitk::MetricFactory< TPixelType, VImageDimension >::FixedImageMaskType

Definition at line 33 of file mitkMetricFactory.h.

template<class TPixelType, unsigned int VImageDimension>
typedef itk::Image< TPixelType, VImageDimension > mitk::MetricFactory< TPixelType, VImageDimension >::FixedImageType

Definition at line 29 of file mitkMetricFactory.h.

template<class TPixelType, unsigned int VImageDimension>
typedef itk::Image< unsigned char, VImageDimension > mitk::MetricFactory< TPixelType, VImageDimension >::FixedMaskImageType

Definition at line 32 of file mitkMetricFactory.h.

template<class TPixelType, unsigned int VImageDimension>
typedef MetricType::Pointer mitk::MetricFactory< TPixelType, VImageDimension >::MetricPointer

Definition at line 39 of file mitkMetricFactory.h.

template<class TPixelType, unsigned int VImageDimension>
typedef itk::ImageToImageMetric< FixedImageType, MovingImageType > mitk::MetricFactory< TPixelType, VImageDimension >::MetricType

Definition at line 38 of file mitkMetricFactory.h.

template<class TPixelType, unsigned int VImageDimension>
typedef itk::ImageMaskSpatialObject< VImageDimension > mitk::MetricFactory< TPixelType, VImageDimension >::MovingImageMaskType

Definition at line 36 of file mitkMetricFactory.h.

template<class TPixelType, unsigned int VImageDimension>
typedef itk::Image< TPixelType, VImageDimension > mitk::MetricFactory< TPixelType, VImageDimension >::MovingImageType

Definition at line 34 of file mitkMetricFactory.h.

template<class TPixelType, unsigned int VImageDimension>
typedef itk::Image< unsigned char, VImageDimension > mitk::MetricFactory< TPixelType, VImageDimension >::MovingMaskImageType

Definition at line 35 of file mitkMetricFactory.h.

template<class TPixelType, unsigned int VImageDimension>
typedef itk::SmartPointer<Self> mitk::MetricFactory< TPixelType, VImageDimension >::Pointer

Definition at line 26 of file mitkMetricFactory.h.

template<class TPixelType, unsigned int VImageDimension>
typedef MetricFactory mitk::MetricFactory< TPixelType, VImageDimension >::Self

Definition at line 26 of file mitkMetricFactory.h.

template<class TPixelType, unsigned int VImageDimension>
typedef itk::Object mitk::MetricFactory< TPixelType, VImageDimension >::Superclass

Definition at line 26 of file mitkMetricFactory.h.


Constructor & Destructor Documentation

template<class TPixelType , unsigned int VImageDimension>
mitk::MetricFactory< TPixelType, VImageDimension >::MetricFactory (  ) [protected]

Definition at line 38 of file mitkMetricFactory.txx.

                                                            : m_MetricParameters(NULL)
  {
  }
template<class TPixelType, unsigned int VImageDimension>
mitk::MetricFactory< TPixelType, VImageDimension >::~MetricFactory (  ) [inline, protected]

Definition at line 65 of file mitkMetricFactory.h.


Member Function Documentation

template<class TPixelType, unsigned int VImageDimension>
virtual const char* mitk::MetricFactory< TPixelType, VImageDimension >::GetClassName (  ) const [virtual]
template<class TPixelType , unsigned int VImageDimension>
MetricFactory< TPixelType, VImageDimension >::MetricPointer mitk::MetricFactory< TPixelType, VImageDimension >::GetMetric (  )

Returns the metric which then can be used in combination with a transform, an optimizer and an interpolator within a registration pipeline.

Definition at line 45 of file mitkMetricFactory.txx.

References mitk::MetricParameters::CORRELATIONCOEFFICIENTHISTOGRAMIMAGETOIMAGEMETRIC, mitk::MetricParameters::GRADIENTDIFFERENCEIMAGETOIMAGEMETRIC, mitk::MetricParameters::KAPPASTATISTICIMAGETOIMAGEMETRIC, mitk::MetricParameters::KULLBACKLEIBLERCOMPAREHISTOGRAMIMAGETOIMAGEMETRIC, mitk::MetricParameters::MATCHCARDINALITYIMAGETOIMAGEMETRIC, mitk::MetricParameters::MATTESMUTUALINFORMATIONIMAGETOIMAGEMETRIC, mitk::MetricParameters::MEANRECIPROCALSQUAREDIFFERENCEIMAGETOIMAGEMETRIC, mitk::MetricParameters::MEANSQUARESHISTOGRAMIMAGETOIMAGEMETRIC, mitk::MetricParameters::MEANSQUARESIMAGETOIMAGEMETRIC, mitk::MetricParameters::MUTUALINFORMATIONHISTOGRAMIMAGETOIMAGEMETRIC, mitk::MetricParameters::MUTUALINFORMATIONIMAGETOIMAGEMETRIC, mitk::MetricParameters::NORMALIZEDCORRELATIONIMAGETOIMAGEMETRIC, and mitk::MetricParameters::NORMALIZEDMUTUALINFORMATIONHISTOGRAMIMAGETOIMAGEMETRIC.

  {
    int metric = m_MetricParameters->GetMetric();
    if (metric == MetricParameters::MEANSQUARESIMAGETOIMAGEMETRIC)         
    {    
      typename itk::MeanSquaresImageToImageMetric<FixedImageType, MovingImageType>::Pointer MetricPointer = itk::MeanSquaresImageToImageMetric<FixedImageType, MovingImageType>::New();          
      MetricPointer->SetComputeGradient(m_MetricParameters->GetComputeGradient());       
      return MetricPointer.GetPointer();         
    }    
    else if (metric == MetricParameters::NORMALIZEDCORRELATIONIMAGETOIMAGEMETRIC)
    {
      typename itk::NormalizedCorrelationImageToImageMetric<FixedImageType, MovingImageType>::Pointer MetricPointer = itk::NormalizedCorrelationImageToImageMetric<FixedImageType, MovingImageType>::New();
      MetricPointer->SetComputeGradient(m_MetricParameters->GetComputeGradient());
      return MetricPointer.GetPointer();
    }
    else if (metric == MetricParameters::GRADIENTDIFFERENCEIMAGETOIMAGEMETRIC)
    {
      typename itk::GradientDifferenceImageToImageMetric<FixedImageType, MovingImageType>::Pointer MetricPointer = itk::GradientDifferenceImageToImageMetric<FixedImageType, MovingImageType>::New();
      MetricPointer->SetComputeGradient(m_MetricParameters->GetComputeGradient());
      return MetricPointer.GetPointer();
    }
    else if (metric == MetricParameters::KULLBACKLEIBLERCOMPAREHISTOGRAMIMAGETOIMAGEMETRIC)
    {
      typename itk::KullbackLeiblerCompareHistogramImageToImageMetric<FixedImageType, MovingImageType>::Pointer MetricPointer = itk::KullbackLeiblerCompareHistogramImageToImageMetric<FixedImageType, MovingImageType>::New();
      unsigned int nBins = m_MetricParameters->GetNumberOfHistogramBinsKullbackLeiblerCompareHistogram();
      typename itk::KullbackLeiblerCompareHistogramImageToImageMetric<FixedImageType, MovingImageType>::HistogramType::SizeType histogramSize;
      histogramSize[0] = nBins;
      histogramSize[1] = nBins;
      MetricPointer->SetHistogramSize(histogramSize);
      MetricPointer->SetComputeGradient(m_MetricParameters->GetComputeGradient());
      return MetricPointer.GetPointer();
    }
    else if (metric == MetricParameters::CORRELATIONCOEFFICIENTHISTOGRAMIMAGETOIMAGEMETRIC)
    {
      typename itk::CorrelationCoefficientHistogramImageToImageMetric<FixedImageType, MovingImageType>::Pointer MetricPointer = itk::CorrelationCoefficientHistogramImageToImageMetric<FixedImageType, MovingImageType>::New();
      unsigned int nBins = m_MetricParameters->GetNumberOfHistogramBinsCorrelationCoefficientHistogram();
      typename itk::CorrelationCoefficientHistogramImageToImageMetric<FixedImageType, MovingImageType>::HistogramType::SizeType histogramSize;
      histogramSize[0] = nBins;
      histogramSize[1] = nBins;
      MetricPointer->SetHistogramSize(histogramSize);
      MetricPointer->SetComputeGradient(m_MetricParameters->GetComputeGradient());       
      return MetricPointer.GetPointer();         
    }    
    else if (metric == MetricParameters::MEANSQUARESHISTOGRAMIMAGETOIMAGEMETRIC)         
    {    
      typename itk::MeanSquaresHistogramImageToImageMetric<FixedImageType, MovingImageType>::Pointer MetricPointer = itk::MeanSquaresHistogramImageToImageMetric<FixedImageType, MovingImageType>::New();        
      unsigned int nBins = m_MetricParameters->GetNumberOfHistogramBinsMeanSquaresHistogram();   
      typename itk::MeanSquaresHistogramImageToImageMetric<FixedImageType, MovingImageType>::HistogramType::SizeType histogramSize;      
      histogramSize[0] = nBins;          
      histogramSize[1] = nBins;          
      MetricPointer->SetHistogramSize(histogramSize);
      MetricPointer->SetComputeGradient(m_MetricParameters->GetComputeGradient());
      return MetricPointer.GetPointer();
    }
    else if (metric == MetricParameters::MUTUALINFORMATIONHISTOGRAMIMAGETOIMAGEMETRIC)
    {
      typename itk::MutualInformationHistogramImageToImageMetric<FixedImageType, MovingImageType>::Pointer MetricPointer = itk::MutualInformationHistogramImageToImageMetric<FixedImageType, MovingImageType>::New();
      unsigned int nBins = m_MetricParameters->GetNumberOfHistogramBinsMutualInformationHistogram();
      typename itk::MutualInformationHistogramImageToImageMetric<FixedImageType, MovingImageType>::HistogramType::SizeType histogramSize;
      histogramSize[0] = nBins;
      histogramSize[1] = nBins;
      MetricPointer->SetHistogramSize(histogramSize);
      MetricPointer->SetComputeGradient(m_MetricParameters->GetComputeGradient());
      return MetricPointer.GetPointer();
    }
    else if (metric == MetricParameters::NORMALIZEDMUTUALINFORMATIONHISTOGRAMIMAGETOIMAGEMETRIC)
    {
      typename itk::NormalizedMutualInformationHistogramImageToImageMetric<FixedImageType, MovingImageType>::Pointer MetricPointer = itk::NormalizedMutualInformationHistogramImageToImageMetric<FixedImageType, MovingImageType>::New();
      unsigned int nBins = m_MetricParameters->GetNumberOfHistogramBinsNormalizedMutualInformationHistogram();
      typename itk::NormalizedMutualInformationHistogramImageToImageMetric<FixedImageType, MovingImageType>::HistogramType::SizeType histogramSize;
      histogramSize[0] = nBins;
      histogramSize[1] = nBins;
      MetricPointer->SetHistogramSize( histogramSize );
      MetricPointer->SetComputeGradient(m_MetricParameters->GetComputeGradient());
      return MetricPointer.GetPointer();
    }
    else if (metric == MetricParameters::MATTESMUTUALINFORMATIONIMAGETOIMAGEMETRIC)
    {
      typename itk::MattesMutualInformationImageToImageMetric<FixedImageType, MovingImageType>::Pointer MetricPointer = itk::MattesMutualInformationImageToImageMetric<FixedImageType, MovingImageType>::New();
      bool useSampling = m_MetricParameters->GetUseSamplesMattesMutualInformation();
      if( useSampling )
      {
        // set the number of samples to use
        MetricPointer->SetNumberOfSpatialSamples( m_MetricParameters->GetSpatialSamplesMattesMutualInformation() );
      }
      else
      {
        MetricPointer->UseAllPixelsOn();
      }
      MetricPointer->SetNumberOfHistogramBins(m_MetricParameters->GetNumberOfHistogramBinsMattesMutualInformation());
      MetricPointer->ReinitializeSeed( 76926294 );
      MetricPointer->SetComputeGradient(m_MetricParameters->GetComputeGradient());
      return MetricPointer.GetPointer();
    }
    else if (metric == MetricParameters::MEANRECIPROCALSQUAREDIFFERENCEIMAGETOIMAGEMETRIC)
    {
      typename itk::MeanReciprocalSquareDifferenceImageToImageMetric<FixedImageType, MovingImageType>::Pointer MetricPointer = itk::MeanReciprocalSquareDifferenceImageToImageMetric<FixedImageType, MovingImageType>::New();
      //------------------------------------------------------------
      // The lambda value is the intensity difference that should
      // make the metric drop by 50%
      //------------------------------------------------------------
      MetricPointer->SetLambda( m_MetricParameters->GetLambdaMeanReciprocalSquareDifference() );
      MetricPointer->SetComputeGradient(m_MetricParameters->GetComputeGradient());
      return MetricPointer.GetPointer();
    }
    else if (metric == MetricParameters::MUTUALINFORMATIONIMAGETOIMAGEMETRIC)
    {
      typename itk::MutualInformationImageToImageMetric<FixedImageType, MovingImageType>::Pointer MetricPointer = itk::MutualInformationImageToImageMetric<FixedImageType, MovingImageType>::New();
      MetricPointer->SetNumberOfSpatialSamples(m_MetricParameters->GetSpatialSamplesMutualInformation());
      MetricPointer->SetFixedImageStandardDeviation(m_MetricParameters->GetFixedImageStandardDeviationMutualInformation());
      MetricPointer->SetMovingImageStandardDeviation(m_MetricParameters->GetMovingImageStandardDeviationMutualInformation());
      MetricPointer->SetComputeGradient(m_MetricParameters->GetComputeGradient());
      return MetricPointer.GetPointer();
    }
    else if (metric == MetricParameters::MATCHCARDINALITYIMAGETOIMAGEMETRIC)
    {
      typename itk::MatchCardinalityImageToImageMetric<FixedImageType, MovingImageType>::Pointer MetricPointer = itk::MatchCardinalityImageToImageMetric<FixedImageType, MovingImageType>::New();
      MetricPointer->SetComputeGradient(m_MetricParameters->GetComputeGradient());
      return MetricPointer.GetPointer();
    }
    else if (metric == MetricParameters::KAPPASTATISTICIMAGETOIMAGEMETRIC)
    {
      typename itk::KappaStatisticImageToImageMetric<FixedImageType, MovingImageType>::Pointer MetricPointer = itk::KappaStatisticImageToImageMetric<FixedImageType, MovingImageType>::New();
      MetricPointer->SetComputeGradient(m_MetricParameters->GetComputeGradient());
      return MetricPointer.GetPointer();
    }
    return NULL;
  }
template<class TPixelType, unsigned int VImageDimension>
MetricParameters::Pointer mitk::MetricFactory< TPixelType, VImageDimension >::GetMetricParameters (  ) [inline]

Returns the instance to the metric parameters class which holds all parameters for the new metric.

Definition at line 58 of file mitkMetricFactory.h.

template<class TPixelType, unsigned int VImageDimension>
static Pointer mitk::MetricFactory< TPixelType, VImageDimension >::New (  ) [static]

Method for creation through the object factory.

template<class TPixelType, unsigned int VImageDimension>
void mitk::MetricFactory< TPixelType, VImageDimension >::SetMetricParameters ( MetricParameters::Pointer  metricParameters ) [inline]

Sets the instance to the metric parameters class which holds all parameters for the new metric.

Definition at line 50 of file mitkMetricFactory.h.


Member Data Documentation

template<class TPixelType, unsigned int VImageDimension>
MetricParameters::Pointer mitk::MetricFactory< TPixelType, VImageDimension >::m_MetricParameters [protected]

Definition at line 65 of file mitkMetricFactory.h.


The documentation for this class was generated from the following files:
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Defines