ITK  6.0.0
Insight Toolkit
Public Types | Public Member Functions | Protected Member Functions | Protected Attributes | List of all members
itk::ObjectToObjectMetricBaseTemplate< TInternalComputationValueType > Class Template Referenceabstract

#include <itkObjectToObjectMetricBase.h>

Detailed Description

template<typename TInternalComputationValueType = double>
class itk::ObjectToObjectMetricBaseTemplate< TInternalComputationValueType >

Base class for all object-to-object similarity metrics added in ITKv4.

This is the abstract base class for a hierarchy of similarity metrics that may, in derived classes, operate on meshes, images, etc. This class computes a value that measures the similarity between the two objects.

Derived classes must provide implementations for: GetValue GetDerivative GetValueAndDerivative Initialize GetNumberOfParameters GetNumberOfLocalParameters GetParameters SetParameters HasLocalSupport UpdateTransformParameters

Definition at line 90 of file itkObjectToObjectMetricBase.h.

+ Inheritance diagram for itk::ObjectToObjectMetricBaseTemplate< TInternalComputationValueType >:
+ Collaboration diagram for itk::ObjectToObjectMetricBaseTemplate< TInternalComputationValueType >:

Public Types

using ConstPointer = SmartPointer< const Self >
 
using CoordinateRepresentationType = TInternalComputationValueType
 
using DerivativeValueType = typename DerivativeType::ValueType
 
using GradientSourceEnum = itk::ObjectToObjectMetricBaseTemplateEnums::GradientSource
 
using MetricCategoryEnum = itk::ObjectToObjectMetricBaseTemplateEnums::MetricCategory
 
using NumberOfParametersType = unsigned int
 
using ObjectConstPointer = typename ObjectType::ConstPointer
 
using ObjectType = Object
 
using ParametersValueType = TInternalComputationValueType
 
using Pointer = SmartPointer< Self >
 
using Self = ObjectToObjectMetricBaseTemplate
 
using Superclass = SingleValuedCostFunctionv4Template< TInternalComputationValueType >
 
- Public Types inherited from itk::SingleValuedCostFunctionv4Template< double >
using ConstPointer = SmartPointer< const Self >
 
using DerivativeType = Array< double >
 
using MeasureType = double
 
using Pointer = SmartPointer< Self >
 
using Self = SingleValuedCostFunctionv4Template
 
using Superclass = CostFunctionTemplate< double >
 
- Public Types inherited from itk::CostFunctionTemplate< double >
using ConstPointer = SmartPointer< const Self >
 
using ParametersType = OptimizerParameters< double >
 
using ParametersValueType = double
 
using Pointer = SmartPointer< Self >
 
using Self = CostFunctionTemplate
 
using Superclass = Object
 
- Public Types inherited from itk::Object
using ConstPointer = SmartPointer< const Self >
 
using Pointer = SmartPointer< Self >
 
using Self = Object
 
using Superclass = LightObject
 
- Public Types inherited from itk::LightObject
using ConstPointer = SmartPointer< const Self >
 
using Pointer = SmartPointer< Self >
 
using Self = LightObject
 

Public Member Functions

MeasureType GetCurrentValue () const
 
virtual void GetDerivative (DerivativeType &) const =0
 
virtual GradientSourceEnum GetGradientSource () const
 
bool GetGradientSourceIncludesFixed () const
 
bool GetGradientSourceIncludesMoving () const
 
virtual MetricCategoryEnum GetMetricCategory () const
 
const char * GetNameOfClass () const override
 
virtual const ParametersTypeGetParameters () const =0
 
MeasureType GetValue () const override=0
 
void GetValueAndDerivative (MeasureType &value, DerivativeType &derivative) const override=0
 
virtual bool HasLocalSupport () const =0
 
virtual void Initialize ()=0
 
virtual void SetGradientSource (GradientSourceEnum _arg)
 
virtual void SetParameters (ParametersType &params)=0
 
virtual void UpdateTransformParameters (const DerivativeType &derivative, ParametersValueType factor=NumericTraits< ParametersValueType >::OneValue())=0
 
virtual void SetFixedObject (const ObjectType *_arg)
 
virtual const ObjectTypeGetFixedObject () const
 
virtual void SetMovingObject (const ObjectType *_arg)
 
virtual const ObjectTypeGetMovingObject () const
 
NumberOfParametersType GetNumberOfParameters () const override=0
 
virtual NumberOfParametersType GetNumberOfLocalParameters () const =0
 
- Public Member Functions inherited from itk::SingleValuedCostFunctionv4Template< double >
const char * GetNameOfClass () const override
 
virtual MeasureType GetValue () const=0
 
virtual void GetValueAndDerivative (MeasureType &value, DerivativeType &derivative) const=0
 
const char * GetNameOfClass () const override
 
virtual unsigned int GetNumberOfParameters () const=0
 
- Public Member Functions inherited from itk::Object
unsigned long AddObserver (const EventObject &event, Command *cmd) const
 
unsigned long AddObserver (const EventObject &event, std::function< void(const EventObject &)> function) const
 
LightObject::Pointer CreateAnother () const override
 
virtual void DebugOff () const
 
virtual void DebugOn () const
 
CommandGetCommand (unsigned long tag)
 
bool GetDebug () const
 
MetaDataDictionaryGetMetaDataDictionary ()
 
const MetaDataDictionaryGetMetaDataDictionary () const
 
virtual ModifiedTimeType GetMTime () const
 
const char * GetNameOfClass () const override
 
virtual const TimeStampGetTimeStamp () const
 
bool HasObserver (const EventObject &event) const
 
void InvokeEvent (const EventObject &)
 
void InvokeEvent (const EventObject &) const
 
virtual void Modified () const
 
void Register () const override
 
void RemoveAllObservers ()
 
void RemoveObserver (unsigned long tag) const
 
void SetDebug (bool debugFlag) const
 
void SetReferenceCount (int) override
 
void UnRegister () const noexcept override
 
void SetMetaDataDictionary (const MetaDataDictionary &rhs)
 
void SetMetaDataDictionary (MetaDataDictionary &&rrhs)
 
virtual void SetObjectName (std::string _arg)
 
virtual const std::string & GetObjectName () const
 
- Public Member Functions inherited from itk::LightObject
Pointer Clone () const
 
virtual Pointer CreateAnother () const
 
virtual void Delete ()
 
virtual const char * GetNameOfClass () const
 
virtual int GetReferenceCount () const
 
void Print (std::ostream &os, Indent indent=0) const
 
virtual void Register () const
 
virtual void SetReferenceCount (int)
 
virtual void UnRegister () const noexcept
 

Protected Member Functions

 ObjectToObjectMetricBaseTemplate ()
 
void PrintSelf (std::ostream &os, Indent indent) const override
 
 ~ObjectToObjectMetricBaseTemplate () override=default
 
- Protected Member Functions inherited from itk::SingleValuedCostFunctionv4Template< double >
 SingleValuedCostFunctionv4Template ()=default
 
 ~SingleValuedCostFunctionv4Template () override=default
 
- Protected Member Functions inherited from itk::CostFunctionTemplate< double >
 CostFunctionTemplate ()=default
 
void PrintSelf (std::ostream &os, Indent indent) const override
 
 ~CostFunctionTemplate () override=default
 
- Protected Member Functions inherited from itk::Object
 Object ()
 
bool PrintObservers (std::ostream &os, Indent indent) const
 
void PrintSelf (std::ostream &os, Indent indent) const override
 
virtual void SetTimeStamp (const TimeStamp &timeStamp)
 
 ~Object () override
 
- Protected Member Functions inherited from itk::LightObject
virtual LightObject::Pointer InternalClone () const
 
 LightObject ()
 
virtual void PrintHeader (std::ostream &os, Indent indent) const
 
virtual void PrintSelf (std::ostream &os, Indent indent) const
 
virtual void PrintTrailer (std::ostream &os, Indent indent) const
 
virtual ~LightObject ()
 

Protected Attributes

ObjectConstPointer m_FixedObject {}
 
GradientSourceEnum m_GradientSource {}
 
ObjectConstPointer m_MovingObject {}
 
MeasureType m_Value {}
 
- Protected Attributes inherited from itk::LightObject
std::atomic< int > m_ReferenceCount {}
 

Additional Inherited Members

- Static Public Member Functions inherited from itk::Object
static bool GetGlobalWarningDisplay ()
 
static void GlobalWarningDisplayOff ()
 
static void GlobalWarningDisplayOn ()
 
static Pointer New ()
 
static void SetGlobalWarningDisplay (bool val)
 
- Static Public Member Functions inherited from itk::LightObject
static void BreakOnError ()
 
static Pointer New ()
 

Member Typedef Documentation

◆ ConstPointer

template<typename TInternalComputationValueType = double>
using itk::ObjectToObjectMetricBaseTemplate< TInternalComputationValueType >::ConstPointer = SmartPointer<const Self>

Definition at line 100 of file itkObjectToObjectMetricBase.h.

◆ CoordinateRepresentationType

template<typename TInternalComputationValueType = double>
using itk::ObjectToObjectMetricBaseTemplate< TInternalComputationValueType >::CoordinateRepresentationType = TInternalComputationValueType

Type used for representing object components

Definition at line 106 of file itkObjectToObjectMetricBase.h.

◆ DerivativeValueType

template<typename TInternalComputationValueType = double>
using itk::ObjectToObjectMetricBaseTemplate< TInternalComputationValueType >::DerivativeValueType = typename DerivativeType::ValueType

Definition at line 113 of file itkObjectToObjectMetricBase.h.

◆ GradientSourceEnum

template<typename TInternalComputationValueType = double>
using itk::ObjectToObjectMetricBaseTemplate< TInternalComputationValueType >::GradientSourceEnum = itk::ObjectToObjectMetricBaseTemplateEnums::GradientSource

Definition at line 133 of file itkObjectToObjectMetricBase.h.

◆ MetricCategoryEnum

template<typename TInternalComputationValueType = double>
using itk::ObjectToObjectMetricBaseTemplate< TInternalComputationValueType >::MetricCategoryEnum = itk::ObjectToObjectMetricBaseTemplateEnums::MetricCategory

Definition at line 235 of file itkObjectToObjectMetricBase.h.

◆ NumberOfParametersType

template<typename TInternalComputationValueType = double>
using itk::ObjectToObjectMetricBaseTemplate< TInternalComputationValueType >::NumberOfParametersType = unsigned int

Type to represent the number of parameters that are being optimized at any given iteration of the optimizer.

Definition at line 176 of file itkObjectToObjectMetricBase.h.

◆ ObjectConstPointer

template<typename TInternalComputationValueType = double>
using itk::ObjectToObjectMetricBaseTemplate< TInternalComputationValueType >::ObjectConstPointer = typename ObjectType::ConstPointer

Definition at line 121 of file itkObjectToObjectMetricBase.h.

◆ ObjectType

template<typename TInternalComputationValueType = double>
using itk::ObjectToObjectMetricBaseTemplate< TInternalComputationValueType >::ObjectType = Object

Type of object.

Definition at line 120 of file itkObjectToObjectMetricBase.h.

◆ ParametersValueType

template<typename TInternalComputationValueType = double>
using itk::ObjectToObjectMetricBaseTemplate< TInternalComputationValueType >::ParametersValueType = TInternalComputationValueType

Definition at line 117 of file itkObjectToObjectMetricBase.h.

◆ Pointer

template<typename TInternalComputationValueType = double>
using itk::ObjectToObjectMetricBaseTemplate< TInternalComputationValueType >::Pointer = SmartPointer<Self>

Definition at line 99 of file itkObjectToObjectMetricBase.h.

◆ Self

template<typename TInternalComputationValueType = double>
using itk::ObjectToObjectMetricBaseTemplate< TInternalComputationValueType >::Self = ObjectToObjectMetricBaseTemplate

Standard class type aliases.

Definition at line 97 of file itkObjectToObjectMetricBase.h.

◆ Superclass

template<typename TInternalComputationValueType = double>
using itk::ObjectToObjectMetricBaseTemplate< TInternalComputationValueType >::Superclass = SingleValuedCostFunctionv4Template<TInternalComputationValueType>

Definition at line 98 of file itkObjectToObjectMetricBase.h.

Constructor & Destructor Documentation

◆ ObjectToObjectMetricBaseTemplate()

template<typename TInternalComputationValueType = double>
itk::ObjectToObjectMetricBaseTemplate< TInternalComputationValueType >::ObjectToObjectMetricBaseTemplate ( )
protected

◆ ~ObjectToObjectMetricBaseTemplate()

template<typename TInternalComputationValueType = double>
itk::ObjectToObjectMetricBaseTemplate< TInternalComputationValueType >::~ObjectToObjectMetricBaseTemplate ( )
overrideprotecteddefault

Member Function Documentation

◆ GetCurrentValue()

template<typename TInternalComputationValueType = double>
MeasureType itk::ObjectToObjectMetricBaseTemplate< TInternalComputationValueType >::GetCurrentValue ( ) const

Get the current metric value stored in m_Value. This is only meaningful after a call to GetValue() or GetValueAndDerivative(). Note that this would normally be called GetValue, but that name is used for historical reasons by GetValue() to compute the current metric value and store it in m_Value.

◆ GetDerivative()

template<typename TInternalComputationValueType = double>
virtual void itk::ObjectToObjectMetricBaseTemplate< TInternalComputationValueType >::GetDerivative ( DerivativeType ) const
pure virtual

◆ GetFixedObject()

template<typename TInternalComputationValueType = double>
virtual const ObjectType * itk::ObjectToObjectMetricBaseTemplate< TInternalComputationValueType >::GetFixedObject ( ) const
virtual

Get/Set the Fixed Object.

◆ GetGradientSource()

template<typename TInternalComputationValueType = double>
virtual GradientSourceEnum itk::ObjectToObjectMetricBaseTemplate< TInternalComputationValueType >::GetGradientSource ( ) const
virtual

Get gradient source. See GetGradientSourceIncludesFixed and GetGradientSourceIncludesMoving for convenience methods.

◆ GetGradientSourceIncludesFixed()

template<typename TInternalComputationValueType = double>
bool itk::ObjectToObjectMetricBaseTemplate< TInternalComputationValueType >::GetGradientSourceIncludesFixed ( ) const

Return true of m_GradientSource is either GRADIENT_SOURCE_FIXED or GRADIENT_SOURCE_BOTH. Convenience method.

◆ GetGradientSourceIncludesMoving()

template<typename TInternalComputationValueType = double>
bool itk::ObjectToObjectMetricBaseTemplate< TInternalComputationValueType >::GetGradientSourceIncludesMoving ( ) const

Return true of m_GradientSource is either GRADIENT_SOURCE_MOVING or GRADIENT_SOURCE_BOTH. Convenience method.

◆ GetMetricCategory()

template<typename TInternalComputationValueType = double>
virtual MetricCategoryEnum itk::ObjectToObjectMetricBaseTemplate< TInternalComputationValueType >::GetMetricCategory ( ) const
inlinevirtual

◆ GetMovingObject()

template<typename TInternalComputationValueType = double>
virtual const ObjectType * itk::ObjectToObjectMetricBaseTemplate< TInternalComputationValueType >::GetMovingObject ( ) const
virtual

Get/Set the Moving Object.

◆ GetNameOfClass()

template<typename TInternalComputationValueType = double>
const char * itk::ObjectToObjectMetricBaseTemplate< TInternalComputationValueType >::GetNameOfClass ( ) const
overridevirtual

◆ GetNumberOfLocalParameters()

template<typename TInternalComputationValueType = double>
virtual NumberOfParametersType itk::ObjectToObjectMetricBaseTemplate< TInternalComputationValueType >::GetNumberOfLocalParameters ( ) const
pure virtual

◆ GetNumberOfParameters()

template<typename TInternalComputationValueType = double>
NumberOfParametersType itk::ObjectToObjectMetricBaseTemplate< TInternalComputationValueType >::GetNumberOfParameters ( ) const
overridepure virtual

◆ GetParameters()

template<typename TInternalComputationValueType = double>
virtual const ParametersType & itk::ObjectToObjectMetricBaseTemplate< TInternalComputationValueType >::GetParameters ( ) const
pure virtual

◆ GetValue()

template<typename TInternalComputationValueType = double>
MeasureType itk::ObjectToObjectMetricBaseTemplate< TInternalComputationValueType >::GetValue ( ) const
overridepure virtual

◆ GetValueAndDerivative()

template<typename TInternalComputationValueType = double>
void itk::ObjectToObjectMetricBaseTemplate< TInternalComputationValueType >::GetValueAndDerivative ( MeasureType value,
DerivativeType derivative 
) const
overridepure virtual

◆ HasLocalSupport()

template<typename TInternalComputationValueType = double>
virtual bool itk::ObjectToObjectMetricBaseTemplate< TInternalComputationValueType >::HasLocalSupport ( ) const
pure virtual

◆ Initialize()

template<typename TInternalComputationValueType = double>
virtual void itk::ObjectToObjectMetricBaseTemplate< TInternalComputationValueType >::Initialize ( )
pure virtual

Initialize the Metric by making sure that all the components are present and plugged together correctly, and initializing internal variables as required. This is for one-time initialization, e.g. before starting an optimization process.

Implemented in itk::ObjectToObjectMetric< TFixedDimension, TMovingDimension, TVirtualImage, TParametersValueType >, itk::ObjectToObjectMetric< TFixedImage::ImageDimension, TMovingImage::ImageDimension, TFixedImage, double >, itk::ObjectToObjectMetric< TFixedPointSet::PointDimension, TMovingPointSet::PointDimension, Image< double, TFixedPointSet::PointDimension >, double >, itk::ObjectToObjectMetric< TFixedDimension, TMovingDimension, Image< double, TFixedDimension >, double >, itk::ANTSNeighborhoodCorrelationImageToImageMetricv4< TFixedImage, TMovingImage, TVirtualImage, TInternalComputationValueType, TMetricTraits >, itk::DemonsImageToImageMetricv4< TFixedImage, TMovingImage, TVirtualImage, TInternalComputationValueType, TMetricTraits >, itk::ExpectationBasedPointSetToPointSetMetricv4< TFixedPointSet, TMovingPointSet, TInternalComputationValueType >, itk::ImageToImageMetricv4< TFixedImage, TMovingImage, TVirtualImage, TInternalComputationValueType, TMetricTraits >, itk::ImageToImageMetricv4< TFixedImage, TMovingImage, TFixedImage, double, DefaultImageToImageMetricTraitsv4< TFixedImage, TMovingImage, TFixedImage, double > >, itk::JensenHavrdaCharvatTsallisPointSetToPointSetMetricv4< TPointSet, TInternalComputationValueType >, itk::JointHistogramMutualInformationImageToImageMetricv4< TFixedImage, TMovingImage, TVirtualImage, TInternalComputationValueType, TMetricTraits >, itk::LabeledPointSetToPointSetMetricv4< TFixedPointSet, TMovingPointSet, TInternalComputationValueType >, itk::MattesMutualInformationImageToImageMetricv4< TFixedImage, TMovingImage, TVirtualImage, TInternalComputationValueType, TMetricTraits >, itk::ObjectToObjectMultiMetricv4< TFixedDimension, TMovingDimension, TVirtualImage, TInternalComputationValueType >, itk::PointSetToPointSetMetricWithIndexv4< TFixedPointSet, TMovingPointSet, TInternalComputationValueType >, itk::PointSetToPointSetMetricWithIndexv4< TFixedPointSet, TFixedPointSet, double >, and itk::PointSetToPointSetMetricWithIndexv4< TPointSet, TPointSet, double >.

◆ PrintSelf()

template<typename TInternalComputationValueType = double>
void itk::ObjectToObjectMetricBaseTemplate< TInternalComputationValueType >::PrintSelf ( std::ostream &  os,
Indent  indent 
) const
overrideprotectedvirtual

Methods invoked by Print() to print information about the object including superclasses. Typically not called by the user (use Print() instead) but used in the hierarchical print process to combine the output of several classes.

Reimplemented from itk::Object.

Reimplemented in itk::ImageToImageMetricv4< TFixedImage, TMovingImage, TFixedImage, double, DefaultImageToImageMetricTraitsv4< TFixedImage, TMovingImage, TFixedImage, double > >, itk::PointSetToPointSetMetricWithIndexv4< TFixedPointSet, TFixedPointSet, double >, and itk::PointSetToPointSetMetricWithIndexv4< TPointSet, TPointSet, double >.

◆ SetFixedObject()

template<typename TInternalComputationValueType = double>
virtual void itk::ObjectToObjectMetricBaseTemplate< TInternalComputationValueType >::SetFixedObject ( const ObjectType _arg)
virtual

Get/Set the Fixed Object.

◆ SetGradientSource()

template<typename TInternalComputationValueType = double>
virtual void itk::ObjectToObjectMetricBaseTemplate< TInternalComputationValueType >::SetGradientSource ( GradientSourceEnum  _arg)
virtual

Set source of gradient. This variable allows the user to switch between calculating the gradient with respect to the fixed object or moving object.

See also
GradientSourceEnum

◆ SetMovingObject()

template<typename TInternalComputationValueType = double>
virtual void itk::ObjectToObjectMetricBaseTemplate< TInternalComputationValueType >::SetMovingObject ( const ObjectType _arg)
virtual

Get/Set the Moving Object.

◆ SetParameters()

template<typename TInternalComputationValueType = double>
virtual void itk::ObjectToObjectMetricBaseTemplate< TInternalComputationValueType >::SetParameters ( ParametersType params)
pure virtual

◆ UpdateTransformParameters()

template<typename TInternalComputationValueType = double>
virtual void itk::ObjectToObjectMetricBaseTemplate< TInternalComputationValueType >::UpdateTransformParameters ( const DerivativeType derivative,
ParametersValueType  factor = NumericTraitsParametersValueType >::OneValue() 
)
pure virtual

Update the parameters of the metric's active transform. Typically this call is passed through directly to the transform. factor is a scalar multiplier for each value in update, and defaults to 1.0 . derivative must be the proper size, as retrieved from GetNumberOfParameters.

Implemented in itk::ObjectToObjectMetric< TFixedImage::ImageDimension, TMovingImage::ImageDimension, TFixedImage, double >, itk::ObjectToObjectMetric< TFixedPointSet::PointDimension, TMovingPointSet::PointDimension, Image< double, TFixedPointSet::PointDimension >, double >, and itk::ObjectToObjectMetric< TFixedDimension, TMovingDimension, Image< double, TFixedDimension >, double >.

Member Data Documentation

◆ m_FixedObject

template<typename TInternalComputationValueType = double>
ObjectConstPointer itk::ObjectToObjectMetricBaseTemplate< TInternalComputationValueType >::m_FixedObject {}
protected

Fixed and Moving Objects

Definition at line 260 of file itkObjectToObjectMetricBase.h.

◆ m_GradientSource

template<typename TInternalComputationValueType = double>
GradientSourceEnum itk::ObjectToObjectMetricBaseTemplate< TInternalComputationValueType >::m_GradientSource {}
protected

Definition at line 263 of file itkObjectToObjectMetricBase.h.

◆ m_MovingObject

template<typename TInternalComputationValueType = double>
ObjectConstPointer itk::ObjectToObjectMetricBaseTemplate< TInternalComputationValueType >::m_MovingObject {}
protected

Definition at line 261 of file itkObjectToObjectMetricBase.h.

◆ m_Value

template<typename TInternalComputationValueType = double>
MeasureType itk::ObjectToObjectMetricBaseTemplate< TInternalComputationValueType >::m_Value {}
mutableprotected

Metric value, stored after evaluating

Definition at line 266 of file itkObjectToObjectMetricBase.h.


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