NifTK  16.4.1 - 0798f20
CMIC's Translational Medical Imaging Platform
Public Types | Public Member Functions | Static Public Attributes | Protected Member Functions | Protected Attributes | List of all members
itk::SimilarityMeasure< TFixedImage, TMovingImage > Class Template Referenceabstract

Abstract base class, implementing TemplateMethod [2] for similarity measures. More...

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

Public Types

typedef SimilarityMeasure Self
 
typedef
ImageToImageMetricWithConstraint
< TFixedImage, TMovingImage > 
Superclass
 
typedef SmartPointer< SelfPointer
 
typedef SmartPointer< const SelfConstPointer
 
typedef Superclass::TransformType TransformType
 
typedef itk::UCLBaseTransform
< double,
TFixedImage::ImageDimension,
TMovingImage::ImageDimension > 
UCLBaseTransformType
 
typedef
Superclass::TransformPointer 
TransformPointer
 
typedef
Superclass::TransformParametersType 
TransformParametersType
 
typedef
Superclass::TransformJacobianType 
TransformJacobianType
 
typedef Superclass::InputPointType InputPointType
 
typedef Superclass::OutputPointType OutputPointType
 
typedef Superclass::MeasureType MeasureType
 
typedef Superclass::DerivativeType DerivativeType
 
typedef Superclass::FixedImageType FixedImageType
 
typedef FixedImageType::SizeType FixedImageSizeType
 
typedef
Superclass::FixedImageType::PixelType 
FixedImagePixelType
 
typedef Superclass::MovingImageType MovingImageType
 
typedef MovingImageType::SizeType MovingImageSizeType
 
typedef
Superclass::MovingImageType::PixelType 
MovingImagePixelType
 
typedef
Superclass::FixedImageConstPointer 
FixedImageConstPointer
 
typedef
Superclass::MovingImageConstPointer 
MovingImageConstPointer
 
typedef ImageFileWriter
< TFixedImage > 
ImageFileWriterType
 
typedef
Superclass::InterpolatorType 
InterpolatorType
 
typedef Image< char,
TFixedImage::ImageDimension > 
MidwayImageType
 
typedef Image< float,
TFixedImage::ImageDimension > 
FloatImageType
 
typedef Image< unsigned char,
TFixedImage::ImageDimension > 
UnsignedCharImageType
 
typedef
SignedMaurerDistanceMapImageFilter
< UnsignedCharImageType,
FloatImageType
FixedDistanceMapImageFilterType
 
typedef
SignedMaurerDistanceMapImageFilter
< UnsignedCharImageType,
FloatImageType
MovingDistanceMapImageFilterType
 
typedef
LinearInterpolateImageFunction
< FloatImageType, double > 
DistanceMapLinearInterpolatorType
 
typedef
itk::EulerAffineTransform
< double,
TFixedImage::ImageDimension,
TMovingImage::ImageDimension > 
AffineTransformType
 
typedef const
ImageMaskSpatialObject
< TFixedImage::ImageDimension > 
FixedMaskType
 
typedef const
ImageMaskSpatialObject
< TMovingImage::ImageDimension > 
MovingMaskType
 
- Public Types inherited from itk::ImageToImageMetricWithConstraint< TFixedImage, TMovingImage >
typedef
ImageToImageMetricWithConstraint 
Self
 
typedef ImageToImageMetric
< TFixedImage, TMovingImage > 
Superclass
 
typedef SmartPointer< SelfPointer
 
typedef SmartPointer< const SelfConstPointer
 
typedef itk::Constraint ConstraintType
 
typedef ConstraintType::Pointer ConstraintPointer
 
typedef MetricDerivativeBridge
< TFixedImage, TMovingImage > 
MetricDerivativeBridgeType
 
typedef
MetricDerivativeBridgeType::Pointer 
MetricDerivativePointer
 
typedef Superclass::MeasureType MeasureType
 
typedef Superclass::DerivativeType DerivativeType
 
typedef Superclass::ParametersType TransformParametersType
 

Public Member Functions

virtual const char * GetClassName () const
 
void Initialize () throw (ExceptionObject)
 
void InitializeIntensityBounds () throw (ExceptionObject)
 
void SetIntensityBounds (const FixedImagePixelType fixedLower, const FixedImagePixelType fixedUpper, const MovingImagePixelType movingLower, const MovingImagePixelType movingUpper)
 
virtual FixedImagePixelType GetFixedLowerBound () const
 
virtual FixedImagePixelType GetFixedUpperBound () const
 
virtual MovingImagePixelType GetMovingLowerBound () const
 
virtual MovingImagePixelType GetMovingUpperBound () const
 
virtual long int GetNumberOfFixedSamples ()
 
virtual long int GetNumberOfMovingSamples ()
 
virtual void SetTwoSidedMetric (bool _arg)
 
virtual bool GetTwoSidedMetric ()
 
virtual void SetWriteFixedImage (bool _arg)
 
virtual bool GetWriteFixedImage ()
 
virtual void SetFixedImageFileName (std::string _arg)
 
virtual std::string GetFixedImageFileName ()
 
virtual void SetFixedImageFileExt (std::string _arg)
 
virtual std::string GetFixedImageFileExt ()
 
virtual void SetWriteTransformedMovingImage (bool _arg)
 
virtual bool GetWriteTransformedMovingImage ()
 
virtual void SetTransformedMovingImageFileName (std::string _arg)
 
virtual std::string GetTransformedMovingImageFileName ()
 
virtual void SetTransformedMovingImageFileExt (std::string _arg)
 
virtual std::string GetTransformedMovingImageFileExt ()
 
virtual void SetDirectVoxelComparison (bool _arg)
 
virtual bool GetDirectVoxelComparison ()
 
virtual void SetSymmetricMetric (int _arg)
 
virtual int GetSymmetricMetric ()
 
virtual void SetIsUpdateMatrix (bool _arg)
 
virtual bool GetIsUpdateMatrix ()
 
virtual void SetTransformedMovingImagePadValue (MovingImagePixelType _arg)
 
virtual MovingImagePixelType GetTransformedMovingImagePadValue ()
 
virtual void SetUseWeighting (bool _arg)
 
virtual bool GetUseWeighting ()
 
virtual void SetWeightingDistanceThreshold (double _arg)
 
virtual double GetWeightingDistanceThreshold ()
 
virtual void SetFixedImageInterpolator (InterpolatorType *_arg)
 
virtual void SetMovingImageInterpolator (InterpolatorType *_arg)
 
virtual InterpolatorTypeGetFixedImageInterpolator ()
 
virtual InterpolatorTypeGetMovingImageInterpolator ()
 
virtual void SetFixedImageTransform (TransformType *_arg)
 
virtual TransformTypeGetFixedImageTransform ()
 
virtual void SetInitialiseIntensityBoundsUsingMask (bool _arg)
 
virtual bool GetInitialiseIntensityBoundsUsingMask ()
 
virtual void SetIsResampleWholeImage (bool _arg)
 
virtual bool GetIsResampleWholeImage ()
 
virtual bool ShouldBeMaximized ()
 
virtual const TFixedImage * GetTransformedMovingImage () const
 
virtual const TFixedImage * GetTransformedFixedImage () const
 
double GetMeasureOfParameterChange (TransformParametersType lastP, TransformParametersType p)
 
- Public Member Functions inherited from itk::ImageToImageMetricWithConstraint< TFixedImage, TMovingImage >
virtual void SetDerivativeBridge (MetricDerivativeBridgeType *_arg)
 
virtual
MetricDerivativeBridgeType
GetDerivativeBridge ()
 
virtual void SetConstraint (ConstraintType *_arg)
 
virtual ConstraintTypeGetConstraint ()
 
virtual void SetWeightingFactor (double _arg)
 
virtual double GetWeightingFactor ()
 
virtual void SetUseConstraintGradient (bool _arg)
 
virtual bool GetUseConstraintGradient () const
 
virtual void SetPrintOutMetricEvaluation (bool _arg)
 
virtual bool GetPrintOutMetricEvaluation ()
 
virtual MeasureType GetValue (const TransformParametersType &parameters) const
 
virtual void GetConstraintDerivative (const TransformParametersType &parameters, DerivativeType &derivative) const
 
virtual void GetDerivative (const TransformParametersType &parameters, DerivativeType &derivative) const
 
virtual void GetValueAndDerivative (const TransformParametersType &parameters, MeasureType &Value, DerivativeType &derivative) const
 

Static Public Attributes

static const int SYMMETRIC_METRIC_AVERAGE
 
static const int SYMMETRIC_METRIC_MID_WAY
 
static const int SYMMETRIC_METRIC_BOTH_FIXED_AND_MOVING_TRANSFORM
 

Protected Member Functions

 SimilarityMeasure ()
 
virtual ~SimilarityMeasure ()
 
void PrintSelf (std::ostream &os, Indent indent) const
 
virtual MeasureType GetSimilarity (const TransformParametersType &parameters) const
 
virtual void ResetCostFunction ()=0
 
virtual void AggregateCostFunctionPair (FixedImagePixelType fixedValue, MovingImagePixelType movingValue)=0
 
virtual void AggregateCostFunctionPairWithWeighting (FixedImagePixelType fixedValue, MovingImagePixelType movingValue, double weight)
 
virtual MeasureType FinalizeCostFunction ()=0
 
void WriteImage (const TFixedImage *image, std::string filename) const
 
virtual MeasureType GetSymmetricSimilarity (const TransformParametersType &parameters)
 
virtual MeasureType GetSymmetricSimilarityAtHalfway (const TransformParametersType &parameters)
 
virtual MeasureType GetSimilarityUsingFixedAndMovingImageTransforms (const TransformParametersType &parameters)
 
virtual void InitializeSymmetricMetric ()
 
virtual void InitializeDistanceWeightings ()
 
- Protected Member Functions inherited from itk::ImageToImageMetricWithConstraint< TFixedImage, TMovingImage >
 ImageToImageMetricWithConstraint ()
 
virtual ~ImageToImageMetricWithConstraint ()
 
void PrintSelf (std::ostream &os, Indent indent) const
 
virtual void GetCostFunctionDerivative (const TransformParametersType &parameters, DerivativeType &derivative) const =0
 

Protected Attributes

TFixedImage::Pointer m_TransformedMovingImage
 
TFixedImage::Pointer m_TransformedFixedImage
 
InterpolatorType::Pointer m_FixedImageInterpolator
 
InterpolatorType::Pointer m_MovingImageInterpolator
 
FixedImagePixelType m_FixedLowerBound
 
FixedImagePixelType m_FixedUpperBound
 
MovingImagePixelType m_MovingLowerBound
 
MovingImagePixelType m_MovingUpperBound
 
bool m_UseWeighting
 
double m_WeightingDistanceThreshold
 
MidwayImageType::Pointer m_MidwayImage
 
FixedDistanceMapImageFilterType::Pointer m_FixedDistanceMap
 
MovingDistanceMapImageFilterType::Pointer m_MovingDistanceMap
 
DistanceMapLinearInterpolatorType::Pointer m_FixedDistanceMapInterpolator
 
DistanceMapLinearInterpolatorType::Pointer m_MovingDistanceMapInterpolator
 
TransformType::Pointer m_FixedImageTransform
 
bool m_InitialiseIntensityBoundsUsingMask
 
bool m_IsResampleWholeImage
 
- Protected Attributes inherited from itk::ImageToImageMetricWithConstraint< TFixedImage, TMovingImage >
MetricDerivativePointer m_DerivativeBridge
 
ConstraintPointer m_Constraint
 
double m_WeightingFactor
 
bool m_UseConstraintGradient
 
bool m_PrintOutMetricEvaluation
 

Detailed Description

template<typename TFixedImage, typename TMovingImage>
class itk::SimilarityMeasure< TFixedImage, TMovingImage >

Abstract base class, implementing TemplateMethod [2] for similarity measures.

The simplest use of this class is to extend it and implement the virtual methods:

ResetAggregate()

AggregatePair(fixedValue, movingValue)

AggregateTotal()

See itkSSDImageToImageMetric for a simple example.

itkImageToImageMetricWithConstraint overrides the default GetValue method, and calls the virtual GetSimilarity method. This class implements the GetSimilarity method, calling the virtual methods shown above. So derived classes can either override GetValue, at which point, you are on your own, and can do whatever you like. Or, you can override GetSimilarity, which means you will have access to the constraint mechanism in the itkImageToImageMetricWithConstraint class.

Note that this class is NOT thread safe.

Member Typedef Documentation

template<typename TFixedImage , typename TMovingImage >
typedef itk::EulerAffineTransform<double, TFixedImage::ImageDimension, TMovingImage::ImageDimension> itk::SimilarityMeasure< TFixedImage, TMovingImage >::AffineTransformType
template<typename TFixedImage , typename TMovingImage >
typedef SmartPointer<const Self> itk::SimilarityMeasure< TFixedImage, TMovingImage >::ConstPointer
template<typename TFixedImage , typename TMovingImage >
typedef Superclass::DerivativeType itk::SimilarityMeasure< TFixedImage, TMovingImage >::DerivativeType
template<typename TFixedImage , typename TMovingImage >
typedef LinearInterpolateImageFunction<FloatImageType, double> itk::SimilarityMeasure< TFixedImage, TMovingImage >::DistanceMapLinearInterpolatorType
template<typename TFixedImage , typename TMovingImage >
typedef SignedMaurerDistanceMapImageFilter<UnsignedCharImageType, FloatImageType> itk::SimilarityMeasure< TFixedImage, TMovingImage >::FixedDistanceMapImageFilterType
template<typename TFixedImage , typename TMovingImage >
typedef Superclass::FixedImageConstPointer itk::SimilarityMeasure< TFixedImage, TMovingImage >::FixedImageConstPointer
template<typename TFixedImage , typename TMovingImage >
typedef Superclass::FixedImageType::PixelType itk::SimilarityMeasure< TFixedImage, TMovingImage >::FixedImagePixelType
template<typename TFixedImage , typename TMovingImage >
typedef FixedImageType::SizeType itk::SimilarityMeasure< TFixedImage, TMovingImage >::FixedImageSizeType
template<typename TFixedImage , typename TMovingImage >
typedef Superclass::FixedImageType itk::SimilarityMeasure< TFixedImage, TMovingImage >::FixedImageType
template<typename TFixedImage , typename TMovingImage >
typedef const ImageMaskSpatialObject<TFixedImage::ImageDimension> itk::SimilarityMeasure< TFixedImage, TMovingImage >::FixedMaskType
template<typename TFixedImage , typename TMovingImage >
typedef Image<float, TFixedImage::ImageDimension> itk::SimilarityMeasure< TFixedImage, TMovingImage >::FloatImageType
template<typename TFixedImage , typename TMovingImage >
typedef ImageFileWriter<TFixedImage> itk::SimilarityMeasure< TFixedImage, TMovingImage >::ImageFileWriterType
template<typename TFixedImage , typename TMovingImage >
typedef Superclass::InputPointType itk::SimilarityMeasure< TFixedImage, TMovingImage >::InputPointType
template<typename TFixedImage , typename TMovingImage >
typedef Superclass::InterpolatorType itk::SimilarityMeasure< TFixedImage, TMovingImage >::InterpolatorType
template<typename TFixedImage , typename TMovingImage >
typedef Superclass::MeasureType itk::SimilarityMeasure< TFixedImage, TMovingImage >::MeasureType
template<typename TFixedImage , typename TMovingImage >
typedef Image<char, TFixedImage::ImageDimension> itk::SimilarityMeasure< TFixedImage, TMovingImage >::MidwayImageType
template<typename TFixedImage , typename TMovingImage >
typedef SignedMaurerDistanceMapImageFilter<UnsignedCharImageType, FloatImageType> itk::SimilarityMeasure< TFixedImage, TMovingImage >::MovingDistanceMapImageFilterType
template<typename TFixedImage , typename TMovingImage >
typedef Superclass::MovingImageConstPointer itk::SimilarityMeasure< TFixedImage, TMovingImage >::MovingImageConstPointer
template<typename TFixedImage , typename TMovingImage >
typedef Superclass::MovingImageType::PixelType itk::SimilarityMeasure< TFixedImage, TMovingImage >::MovingImagePixelType
template<typename TFixedImage , typename TMovingImage >
typedef MovingImageType::SizeType itk::SimilarityMeasure< TFixedImage, TMovingImage >::MovingImageSizeType
template<typename TFixedImage , typename TMovingImage >
typedef Superclass::MovingImageType itk::SimilarityMeasure< TFixedImage, TMovingImage >::MovingImageType
template<typename TFixedImage , typename TMovingImage >
typedef const ImageMaskSpatialObject<TMovingImage::ImageDimension> itk::SimilarityMeasure< TFixedImage, TMovingImage >::MovingMaskType
template<typename TFixedImage , typename TMovingImage >
typedef Superclass::OutputPointType itk::SimilarityMeasure< TFixedImage, TMovingImage >::OutputPointType
template<typename TFixedImage , typename TMovingImage >
typedef SmartPointer<Self> itk::SimilarityMeasure< TFixedImage, TMovingImage >::Pointer
template<typename TFixedImage , typename TMovingImage >
typedef SimilarityMeasure itk::SimilarityMeasure< TFixedImage, TMovingImage >::Self

Standard class typedefs.

template<typename TFixedImage , typename TMovingImage >
typedef ImageToImageMetricWithConstraint<TFixedImage, TMovingImage > itk::SimilarityMeasure< TFixedImage, TMovingImage >::Superclass
template<typename TFixedImage , typename TMovingImage >
typedef Superclass::TransformJacobianType itk::SimilarityMeasure< TFixedImage, TMovingImage >::TransformJacobianType
template<typename TFixedImage , typename TMovingImage >
typedef Superclass::TransformParametersType itk::SimilarityMeasure< TFixedImage, TMovingImage >::TransformParametersType
template<typename TFixedImage , typename TMovingImage >
typedef Superclass::TransformPointer itk::SimilarityMeasure< TFixedImage, TMovingImage >::TransformPointer
template<typename TFixedImage , typename TMovingImage >
typedef Superclass::TransformType itk::SimilarityMeasure< TFixedImage, TMovingImage >::TransformType

Types transferred from the base class

template<typename TFixedImage , typename TMovingImage >
typedef itk::UCLBaseTransform<double, TFixedImage::ImageDimension, TMovingImage::ImageDimension> itk::SimilarityMeasure< TFixedImage, TMovingImage >::UCLBaseTransformType
template<typename TFixedImage , typename TMovingImage >
typedef Image<unsigned char, TFixedImage::ImageDimension> itk::SimilarityMeasure< TFixedImage, TMovingImage >::UnsignedCharImageType

Constructor & Destructor Documentation

template<typename TFixedImage , typename TMovingImage >
itk::SimilarityMeasure< TFixedImage, TMovingImage >::SimilarityMeasure ( )
protected
template<typename TFixedImage , typename TMovingImage >
virtual itk::SimilarityMeasure< TFixedImage, TMovingImage >::~SimilarityMeasure ( )
inlineprotectedvirtual

Member Function Documentation

template<typename TFixedImage , typename TMovingImage >
virtual void itk::SimilarityMeasure< TFixedImage, TMovingImage >::AggregateCostFunctionPair ( FixedImagePixelType  fixedValue,
MovingImagePixelType  movingValue 
)
protectedpure virtual
template<typename TFixedImage , typename TMovingImage >
virtual void itk::SimilarityMeasure< TFixedImage, TMovingImage >::AggregateCostFunctionPairWithWeighting ( FixedImagePixelType  fixedValue,
MovingImagePixelType  movingValue,
double  weight 
)
inlineprotectedvirtual

Use this method to add corresponding pairs of image values, called repeatedly during a single value of the cost function. With weighting.

Reimplemented in itk::NCCImageToImageMetric< TFixedImage, TMovingImage >.

template<typename TFixedImage , typename TMovingImage >
virtual MeasureType itk::SimilarityMeasure< TFixedImage, TMovingImage >::FinalizeCostFunction ( )
protectedpure virtual
template<typename TFixedImage , typename TMovingImage >
virtual const char* itk::SimilarityMeasure< TFixedImage, TMovingImage >::GetClassName ( ) const
virtual
template<typename TFixedImage , typename TMovingImage >
virtual bool itk::SimilarityMeasure< TFixedImage, TMovingImage >::GetDirectVoxelComparison ( )
virtual
template<typename TFixedImage , typename TMovingImage >
virtual std::string itk::SimilarityMeasure< TFixedImage, TMovingImage >::GetFixedImageFileExt ( )
virtual
template<typename TFixedImage , typename TMovingImage >
virtual std::string itk::SimilarityMeasure< TFixedImage, TMovingImage >::GetFixedImageFileName ( )
virtual
template<typename TFixedImage , typename TMovingImage >
virtual InterpolatorType* itk::SimilarityMeasure< TFixedImage, TMovingImage >::GetFixedImageInterpolator ( )
virtual
template<typename TFixedImage , typename TMovingImage >
virtual TransformType* itk::SimilarityMeasure< TFixedImage, TMovingImage >::GetFixedImageTransform ( )
virtual
template<typename TFixedImage , typename TMovingImage >
virtual FixedImagePixelType itk::SimilarityMeasure< TFixedImage, TMovingImage >::GetFixedLowerBound ( ) const
virtual

Get FixedLowerBound, lowest intensity value to use in fixed image.

template<typename TFixedImage , typename TMovingImage >
virtual FixedImagePixelType itk::SimilarityMeasure< TFixedImage, TMovingImage >::GetFixedUpperBound ( ) const
virtual

Get FixedUpperBound, highest intensity value to use in fixed image.

template<typename TFixedImage , typename TMovingImage >
virtual bool itk::SimilarityMeasure< TFixedImage, TMovingImage >::GetInitialiseIntensityBoundsUsingMask ( )
virtual
template<typename TFixedImage , typename TMovingImage >
virtual bool itk::SimilarityMeasure< TFixedImage, TMovingImage >::GetIsResampleWholeImage ( )
virtual
template<typename TFixedImage , typename TMovingImage >
virtual bool itk::SimilarityMeasure< TFixedImage, TMovingImage >::GetIsUpdateMatrix ( )
virtual
template<typename TFixedImage , typename TMovingImage >
double itk::SimilarityMeasure< TFixedImage, TMovingImage >::GetMeasureOfParameterChange ( TransformParametersType  lastP,
TransformParametersType  p 
)

Get a measure of the change of parameters between two successive iterations.

template<typename TFixedImage , typename TMovingImage >
virtual InterpolatorType* itk::SimilarityMeasure< TFixedImage, TMovingImage >::GetMovingImageInterpolator ( )
virtual
template<typename TFixedImage , typename TMovingImage >
virtual MovingImagePixelType itk::SimilarityMeasure< TFixedImage, TMovingImage >::GetMovingLowerBound ( ) const
virtual

Get MovingLowerBound, lowest intensity value to use in moving image.

template<typename TFixedImage , typename TMovingImage >
virtual MovingImagePixelType itk::SimilarityMeasure< TFixedImage, TMovingImage >::GetMovingUpperBound ( ) const
virtual

Get MovingUpperBound, highest intensity value to use in moving image.

template<typename TFixedImage , typename TMovingImage >
virtual long int itk::SimilarityMeasure< TFixedImage, TMovingImage >::GetNumberOfFixedSamples ( )
virtual

Get the number of samples used in the most recent evaluation of the measure.

template<typename TFixedImage , typename TMovingImage >
virtual long int itk::SimilarityMeasure< TFixedImage, TMovingImage >::GetNumberOfMovingSamples ( )
virtual

Get the number of samples used in the most recent evaluation of the measure.

template<typename TFixedImage , typename TMovingImage >
virtual MeasureType itk::SimilarityMeasure< TFixedImage, TMovingImage >::GetSimilarity ( const TransformParametersType parameters) const
protectedvirtual

itkImageToImageMetric implements GetValue, which calls this GetSimilarity, which calls ResetAggregate, AggregatePair, AggregateTotal, which subclasses should override.

Implements itk::ImageToImageMetricWithConstraint< TFixedImage, TMovingImage >.

template<typename TFixedImage , typename TMovingImage >
virtual MeasureType itk::SimilarityMeasure< TFixedImage, TMovingImage >::GetSimilarityUsingFixedAndMovingImageTransforms ( const TransformParametersType parameters)
protectedvirtual

Get the similarity given both the fixed and moving image transform.

template<typename TFixedImage , typename TMovingImage >
virtual int itk::SimilarityMeasure< TFixedImage, TMovingImage >::GetSymmetricMetric ( )
virtual
template<typename TFixedImage , typename TMovingImage >
virtual MeasureType itk::SimilarityMeasure< TFixedImage, TMovingImage >::GetSymmetricSimilarity ( const TransformParametersType parameters)
protectedvirtual

Return the symmetrical similarity measure by evaluating the similarity both ways.

  1. FixedImage and TransformedMovingImage: transforming the moving image into the space of fixed image.
  2. TransformedFixedImage and MovingImage: transforming the fixeed image into the space of moving image.
template<typename TFixedImage , typename TMovingImage >
virtual MeasureType itk::SimilarityMeasure< TFixedImage, TMovingImage >::GetSymmetricSimilarityAtHalfway ( const TransformParametersType parameters)
protectedvirtual

Return the symmetrical similarity measure by evaluating the similarity at the mid-point.

We are directly looking for the midway transformation, i.e. we evaluate similiary(A(T^-1) + B(T)).

template<typename TFixedImage , typename TMovingImage >
virtual const TFixedImage* itk::SimilarityMeasure< TFixedImage, TMovingImage >::GetTransformedFixedImage ( ) const
inlinevirtual

Return the transformed moving image.

template<typename TFixedImage , typename TMovingImage >
virtual const TFixedImage* itk::SimilarityMeasure< TFixedImage, TMovingImage >::GetTransformedMovingImage ( ) const
inlinevirtual

Return the transformed moving image.

template<typename TFixedImage , typename TMovingImage >
virtual std::string itk::SimilarityMeasure< TFixedImage, TMovingImage >::GetTransformedMovingImageFileExt ( )
virtual
template<typename TFixedImage , typename TMovingImage >
virtual std::string itk::SimilarityMeasure< TFixedImage, TMovingImage >::GetTransformedMovingImageFileName ( )
virtual
template<typename TFixedImage , typename TMovingImage >
virtual MovingImagePixelType itk::SimilarityMeasure< TFixedImage, TMovingImage >::GetTransformedMovingImagePadValue ( )
virtual
template<typename TFixedImage , typename TMovingImage >
virtual bool itk::SimilarityMeasure< TFixedImage, TMovingImage >::GetTwoSidedMetric ( )
virtual
template<typename TFixedImage , typename TMovingImage >
virtual bool itk::SimilarityMeasure< TFixedImage, TMovingImage >::GetUseWeighting ( )
virtual
template<typename TFixedImage , typename TMovingImage >
virtual double itk::SimilarityMeasure< TFixedImage, TMovingImage >::GetWeightingDistanceThreshold ( )
virtual
template<typename TFixedImage , typename TMovingImage >
virtual bool itk::SimilarityMeasure< TFixedImage, TMovingImage >::GetWriteFixedImage ( )
virtual
template<typename TFixedImage , typename TMovingImage >
virtual bool itk::SimilarityMeasure< TFixedImage, TMovingImage >::GetWriteTransformedMovingImage ( )
virtual
template<typename TFixedImage , typename TMovingImage >
void itk::SimilarityMeasure< TFixedImage, TMovingImage >::Initialize ( )
throw (ExceptionObject
)

Initializes the metric. This is declared virtual in base class.

template<typename TFixedImage , typename TMovingImage >
virtual void itk::SimilarityMeasure< TFixedImage, TMovingImage >::InitializeDistanceWeightings ( )
protectedvirtual

Initializes the distance weightings.

template<typename TFixedImage , typename TMovingImage >
void itk::SimilarityMeasure< TFixedImage, TMovingImage >::InitializeIntensityBounds ( )
throw (ExceptionObject
)

Called from within Initialize

template<typename TFixedImage , typename TMovingImage >
virtual void itk::SimilarityMeasure< TFixedImage, TMovingImage >::InitializeSymmetricMetric ( )
protectedvirtual

Initializes the symmetric metric.

template<typename TFixedImage , typename TMovingImage >
void itk::SimilarityMeasure< TFixedImage, TMovingImage >::PrintSelf ( std::ostream &  os,
Indent  indent 
) const
protected
template<typename TFixedImage , typename TMovingImage >
virtual void itk::SimilarityMeasure< TFixedImage, TMovingImage >::ResetCostFunction ( )
protectedpure virtual
template<typename TFixedImage , typename TMovingImage >
virtual void itk::SimilarityMeasure< TFixedImage, TMovingImage >::SetDirectVoxelComparison ( bool  _arg)
virtual

Set/Get this flag to do direct voxel comparison. If this is true, we just iterate through the image, comparing voxel for voxel. There is minimal checking, so we assume the size is identical. This is useful for block matching.

template<typename TFixedImage , typename TMovingImage >
virtual void itk::SimilarityMeasure< TFixedImage, TMovingImage >::SetFixedImageFileExt ( std::string  _arg)
virtual

Set/Get the file ext to dump to. Default to "nii".

template<typename TFixedImage , typename TMovingImage >
virtual void itk::SimilarityMeasure< TFixedImage, TMovingImage >::SetFixedImageFileName ( std::string  _arg)
virtual

Set/Get the file name to dump to. Default to "tmp.similarity.fixed"

template<typename TFixedImage , typename TMovingImage >
virtual void itk::SimilarityMeasure< TFixedImage, TMovingImage >::SetFixedImageInterpolator ( InterpolatorType _arg)
virtual

Set/Get interpolators.

template<typename TFixedImage , typename TMovingImage >
virtual void itk::SimilarityMeasure< TFixedImage, TMovingImage >::SetFixedImageTransform ( TransformType _arg)
virtual

Set/Get FixedImageTransform.

template<typename TFixedImage , typename TMovingImage >
virtual void itk::SimilarityMeasure< TFixedImage, TMovingImage >::SetInitialiseIntensityBoundsUsingMask ( bool  _arg)
virtual

Set/Get m_InitialiseIntensityBoundsUsingMask.

template<typename TFixedImage , typename TMovingImage >
void itk::SimilarityMeasure< TFixedImage, TMovingImage >::SetIntensityBounds ( const FixedImagePixelType  fixedLower,
const FixedImagePixelType  fixedUpper,
const MovingImagePixelType  movingLower,
const MovingImagePixelType  movingUpper 
)

Set fixed and moving, min and max intensity values.

template<typename TFixedImage , typename TMovingImage >
virtual void itk::SimilarityMeasure< TFixedImage, TMovingImage >::SetIsResampleWholeImage ( bool  _arg)
virtual

Set/Get IsResampleWholeImage.

template<typename TFixedImage , typename TMovingImage >
virtual void itk::SimilarityMeasure< TFixedImage, TMovingImage >::SetIsUpdateMatrix ( bool  _arg)
virtual
template<typename TFixedImage , typename TMovingImage >
virtual void itk::SimilarityMeasure< TFixedImage, TMovingImage >::SetMovingImageInterpolator ( InterpolatorType _arg)
virtual
template<typename TFixedImage , typename TMovingImage >
virtual void itk::SimilarityMeasure< TFixedImage, TMovingImage >::SetSymmetricMetric ( int  _arg)
virtual

Set/Get this flag to return the symmetrical similarity measure by evaluating the similarity both ways.

  1. FixedImage and TransformedMovingImage: transforming the moving image into the space of fixed image.
  2. TransformedFixedImage and MovingImage: transforming the fixeed image into the space of moving image.
template<typename TFixedImage , typename TMovingImage >
virtual void itk::SimilarityMeasure< TFixedImage, TMovingImage >::SetTransformedMovingImageFileExt ( std::string  _arg)
virtual

Set/Get the file ext to dump to. Default to "nii".

template<typename TFixedImage , typename TMovingImage >
virtual void itk::SimilarityMeasure< TFixedImage, TMovingImage >::SetTransformedMovingImageFileName ( std::string  _arg)
virtual

Set/Get the file name to dump to. Default to "tmp.similarity.moving"

template<typename TFixedImage , typename TMovingImage >
virtual void itk::SimilarityMeasure< TFixedImage, TMovingImage >::SetTransformedMovingImagePadValue ( MovingImagePixelType  _arg)
virtual

Set/Get the transformed moving image pad value. Default 0.

template<typename TFixedImage , typename TMovingImage >
virtual void itk::SimilarityMeasure< TFixedImage, TMovingImage >::SetTwoSidedMetric ( bool  _arg)
virtual

Set whether we are using a Two Sided Metric.

There are three ways to handle the moving image mask.

If TwoSidedMetric is true, and we have supplied a moving mask, we actually evaluate the metric twice, once using the baseline mask only and mapping points into the moving image, and once using the moving mask only mapping the points into the fixed image. We then take the mean of the two measures. This means the transformation must be invertable. The reason for this is that you don't want to inadvertently align the boundaries of the two masks.

If TwoSidedMetric is false, we evaluate the measure once, and take all the points in the baseline masked region, mapping them to the moving image, and only use them if they fall within the moving masked region. This means we are using the intersection of the two regions as the region of interest. This means you MAY cause your algorithm to be a bit prone to aligning the edges of the masks.

The alternative is to simply not supply the moving mask. In this case, the value of this flag will not matter, as there is no moving mask to worry about.

The default value is false.

This flag is used in the GetSimilarity method in this class. So if otherclasses override GetSimilarity (as they are free to do so), then this flag will probably have very little meaning.

template<typename TFixedImage , typename TMovingImage >
virtual void itk::SimilarityMeasure< TFixedImage, TMovingImage >::SetUseWeighting ( bool  _arg)
virtual

Set/Get the UseWeighting. Default false.

template<typename TFixedImage , typename TMovingImage >
virtual void itk::SimilarityMeasure< TFixedImage, TMovingImage >::SetWeightingDistanceThreshold ( double  _arg)
virtual

Set/Get the WeightingDistanceThreshold. Default 2.0mm.

template<typename TFixedImage , typename TMovingImage >
virtual void itk::SimilarityMeasure< TFixedImage, TMovingImage >::SetWriteFixedImage ( bool  _arg)
virtual

Writes a fixed image after each similarity measure evaluation.

template<typename TFixedImage , typename TMovingImage >
virtual void itk::SimilarityMeasure< TFixedImage, TMovingImage >::SetWriteTransformedMovingImage ( bool  _arg)
virtual

Writes a transformed moving image after each similarity measure evaluation.

template<typename TFixedImage , typename TMovingImage >
virtual bool itk::SimilarityMeasure< TFixedImage, TMovingImage >::ShouldBeMaximized ( )
inlinevirtual

Subclasses should implement this. Simply return true if the cost function should be maximized (like Mutual Info.) or false if it should be minimized (like Sum Squared Difference).

Reimplemented in itk::CRImageToImageMetric< TFixedImage, TMovingImage >, itk::MIImageToImageMetric< TFixedImage, TMovingImage >, itk::NCCImageToImageMetric< TFixedImage, TMovingImage >, and itk::NMIImageToImageMetric< TFixedImage, TMovingImage >.

template<typename TFixedImage , typename TMovingImage >
void itk::SimilarityMeasure< TFixedImage, TMovingImage >::WriteImage ( const TFixedImage *  image,
std::string  filename 
) const
protected

Method that actually writes one of the fixed or transformed moving images to file.

Member Data Documentation

template<typename TFixedImage , typename TMovingImage >
FixedDistanceMapImageFilterType::Pointer itk::SimilarityMeasure< TFixedImage, TMovingImage >::m_FixedDistanceMap
protected

Distance map of the fixed mask. Provides weighting for de-weighting the dependency of voxels near the edges of the overlapping region. See Jenkinson (2001). Improved Optimization for the robust and accurate linear registration and motion correction of brain image.

template<typename TFixedImage , typename TMovingImage >
DistanceMapLinearInterpolatorType::Pointer itk::SimilarityMeasure< TFixedImage, TMovingImage >::m_FixedDistanceMapInterpolator
protected

Interpolator for the distance map in the fixed image.

template<typename TFixedImage , typename TMovingImage >
InterpolatorType::Pointer itk::SimilarityMeasure< TFixedImage, TMovingImage >::m_FixedImageInterpolator
protected

For symmetric registration, we need to interpolate fixed image and moveing image. Fixed image interpolator.

template<typename TFixedImage , typename TMovingImage >
TransformType::Pointer itk::SimilarityMeasure< TFixedImage, TMovingImage >::m_FixedImageTransform
protected

Transform for the fixed image.

template<typename TFixedImage , typename TMovingImage >
FixedImagePixelType itk::SimilarityMeasure< TFixedImage, TMovingImage >::m_FixedLowerBound
protected

Lowest intensity value to use in fixed image.

template<typename TFixedImage , typename TMovingImage >
FixedImagePixelType itk::SimilarityMeasure< TFixedImage, TMovingImage >::m_FixedUpperBound
protected

Highest intensity value to use in fixed image.

template<typename TFixedImage , typename TMovingImage >
bool itk::SimilarityMeasure< TFixedImage, TMovingImage >::m_InitialiseIntensityBoundsUsingMask
protected

Use the masks for the intensity bounds initialisation.

template<typename TFixedImage , typename TMovingImage >
bool itk::SimilarityMeasure< TFixedImage, TMovingImage >::m_IsResampleWholeImage
protected

Resample the whole image in GetSimilarityUsingFixedAndMovingImageTransforms.

template<typename TFixedImage , typename TMovingImage >
MidwayImageType::Pointer itk::SimilarityMeasure< TFixedImage, TMovingImage >::m_MidwayImage
protected

This image defines the space for resampling the fixed and moving images at the mid-point.

template<typename TFixedImage , typename TMovingImage >
MovingDistanceMapImageFilterType::Pointer itk::SimilarityMeasure< TFixedImage, TMovingImage >::m_MovingDistanceMap
protected

Distance map of the moving mask.

template<typename TFixedImage , typename TMovingImage >
DistanceMapLinearInterpolatorType::Pointer itk::SimilarityMeasure< TFixedImage, TMovingImage >::m_MovingDistanceMapInterpolator
protected

Interpolator for the distance map in the moving image.

template<typename TFixedImage , typename TMovingImage >
InterpolatorType::Pointer itk::SimilarityMeasure< TFixedImage, TMovingImage >::m_MovingImageInterpolator
protected

Moving image interpolator.

template<typename TFixedImage , typename TMovingImage >
MovingImagePixelType itk::SimilarityMeasure< TFixedImage, TMovingImage >::m_MovingLowerBound
protected

Lowest intensity value to use in moving image.

template<typename TFixedImage , typename TMovingImage >
MovingImagePixelType itk::SimilarityMeasure< TFixedImage, TMovingImage >::m_MovingUpperBound
protected

Highest intensity value to use in moving image.

template<typename TFixedImage , typename TMovingImage >
TFixedImage::Pointer itk::SimilarityMeasure< TFixedImage, TMovingImage >::m_TransformedFixedImage
protected

Also keep a transformed fixed image for symmetric deformable transform.

template<typename TFixedImage , typename TMovingImage >
TFixedImage::Pointer itk::SimilarityMeasure< TFixedImage, TMovingImage >::m_TransformedMovingImage
protected

As we iterate through image, its easy to calculate a transformed moving image as we go. This is essential for the deformable type metrics, and optional for simple metrics like SSD, NCC. However, we store this here, so everyone can have one.

template<typename TFixedImage , typename TMovingImage >
bool itk::SimilarityMeasure< TFixedImage, TMovingImage >::m_UseWeighting
protected

If set, use weightings from the distance maps.

template<typename TFixedImage , typename TMovingImage >
double itk::SimilarityMeasure< TFixedImage, TMovingImage >::m_WeightingDistanceThreshold
protected

The weighting distance threshold - weighting set to 1 if the distance is greater than this threshold. Otherwise, the weighting is linearly set.

template<typename TFixedImage , typename TMovingImage >
const int itk::SimilarityMeasure< TFixedImage, TMovingImage >::SYMMETRIC_METRIC_AVERAGE
static
template<typename TFixedImage , typename TMovingImage >
const int itk::SimilarityMeasure< TFixedImage, TMovingImage >::SYMMETRIC_METRIC_BOTH_FIXED_AND_MOVING_TRANSFORM
static
template<typename TFixedImage , typename TMovingImage >
const int itk::SimilarityMeasure< TFixedImage, TMovingImage >::SYMMETRIC_METRIC_MID_WAY
static

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