ITK  6.0.0
Insight Toolkit
Public Types | Public Member Functions | Static Public Member Functions | Protected Member Functions | Private Attributes | List of all members
itk::ObjectToObjectMultiMetricv4< TFixedDimension, TMovingDimension, TVirtualImage, TInternalComputationValueType > Class Template Reference

#include <itkObjectToObjectMultiMetricv4.h>

Detailed Description

template<unsigned int TFixedDimension, unsigned int TMovingDimension, typename TVirtualImage = Image<double, TFixedDimension>, class TInternalComputationValueType = double>
class itk::ObjectToObjectMultiMetricv4< TFixedDimension, TMovingDimension, TVirtualImage, TInternalComputationValueType >

This class takes one ore more ObjectToObject metrics and assigns weights to their derivatives to compute a single result.

This class takes N ObjectToObject-derived component metrics and assigns a weight to each of the metrics' derivatives. It then computes a weighted measure of the metric. The GetValue() and GetValueAndDerivative() methods compute the measure and derivative using the following calculation:

metric value = Sum_j ( w_j * M_j ) (see important note below)

and the GetDerivative() method computes the derivative by computing:

derivative = Sum_j ( w_j * dM_j / ||dM_j|| ) * ( Sum_j( ||dM_j|| ) / J )

Note
The metric value is unit-less, and thus it is difficult to compute a combined metric. This metric returns the metric value in three ways: 1) GetValue() returns the computed value of only the first component metric. This result is stored in m_Value and also returned by GetCurrentValue(). 2) GetValueArray() returns an itkArray of metric values, one for each component metric. It only has meaning after a call to GetValue(), GetDerivative() or GetValueAndDerivative(). 3) GetWeightedValue() returns a combined metric value of all component metrics, using the assigned weights. It only has meaning after a call to GetValue(), GetDerivative() or GetValueAndDerivative().

The assigned weights are normalized internally to sum to one before use, and the weights default to 1/N, where N is the number of component metrics.

Note
Each component metric must use the same transform parameters object. That is, each metric must be evaluating the same parameters by evaluating the same transform. Except, if a component transform is a CompositeTransform, in which case it must be set to optimize a single transform, and that transform must be the same as the transform in other component metrics.
Each component metric must be setup independently, except for the metric transforms which can optionally be set from this class. That is, each component's images or point sets, fixed transforms and options must be set independently. The only methods in this metric for setting up the component metrics is SetMovingTransform(). The corresponding Set accesor is also available. When Set{Fixed/Moving}Transform() is not used this metric's m_{Fixed/Moving}Transform member is assigned to the fixed/moving transform assigned to the first component metric.

Each component will be initialized by this metric in the call to Initialize().

Note
When used with an itkRegistrationParameterScalesEstimator estimator, and the multi-metric holds one or more point-set metrics, the user must assign a virtual domain point set for sampling to ensure proper sampling within the point set metrics. In order to generate valid shift estimations, such a virtual domain point set must include mapped points from the fixed point set. See RegistrationParameterScalesEstimator::SetVirtualDomainPointSet() and PointSetToPointSetMetricv4::GetVirtualTransformedPointSet(). If there are two different point sets, then the virtual domain point set should be a union of the two for completeness.
If the user does not explicitly assign a virtual domain, then the first valid virtual domain found in the component metrics will be used a virtual domain for this multi-metric, which will be queried by classes such as registration parameter estimators. Each component metric will still use its own virtual domain for internal calculations when evaluated, so it is possible to use different virtual domains for each metric if desired. If no component metric has a virtual domain defined, then by default the virtual domain is unbounded. When the transform is high dimensional (e.g. DisplacementFieldTransform) then there must be a virtual domain that matches the space of the transform field. Note that when used with a DisplacementFieldTransform, both Image and PointSet metrics will automatically create a matching virtual domain during initialization if one has not been assigned by the user.

Definition at line 96 of file itkObjectToObjectMultiMetricv4.h.

+ Inheritance diagram for itk::ObjectToObjectMultiMetricv4< TFixedDimension, TMovingDimension, TVirtualImage, TInternalComputationValueType >:
+ Collaboration diagram for itk::ObjectToObjectMultiMetricv4< TFixedDimension, TMovingDimension, TVirtualImage, TInternalComputationValueType >:

Public Types

using ConstPointer = SmartPointer< const Self >
 
using MetricBaseConstPointer = typename MetricType::ConstPointer
 
using MetricBasePointer = typename MetricType::Pointer
 
using MetricQueueType = std::deque< MetricBasePointer >
 
using MetricType = Superclass
 
using MetricValueArrayType = Array< MeasureType >
 
using ObjectType = typename Superclass::ObjectType
 
using Pointer = SmartPointer< Self >
 
using Self = ObjectToObjectMultiMetricv4
 
using Superclass = ObjectToObjectMetric< TFixedDimension, TMovingDimension, TVirtualImage, TInternalComputationValueType >
 
using WeightsArrayType = Array< WeightValueType >
 
using WeightValueType = typename DerivativeType::ValueType
 
- Public Types inherited from itk::ObjectToObjectMetric< TFixedDimension, TMovingDimension, TVirtualImage, TInternalComputationValueType >
using ConstPointer = SmartPointer< const Self >
 
using CoordinateRepresentationType = TInternalComputationValueType
 
using DimensionType = SizeValueType
 
using FixedInputPointType = typename FixedTransformType::InputPointType
 
using FixedOutputPointType = typename FixedTransformType::OutputPointType
 
using FixedTransformJacobianType = typename FixedTransformType::JacobianType
 
using FixedTransformParametersType = typename FixedTransformType::ParametersType
 
using FixedTransformPointer = typename FixedTransformType::Pointer
 
using FixedTransformType = Transform< TInternalComputationValueType, TVirtualImage::ImageDimension, TFixedDimension >
 
using InternalComputationValueType = TInternalComputationValueType
 
using JacobianType = typename FixedTransformType::JacobianType
 
using MetricCategoryType = typename Superclass::MetricCategoryEnum
 
using MovingDisplacementFieldTransformType = DisplacementFieldTransform< CoordinateRepresentationType, Self::MovingDimension >
 
using MovingInputPointType = typename MovingTransformType::InputPointType
 
using MovingOutputPointType = typename MovingTransformType::OutputPointType
 
using MovingTransformJacobianType = typename MovingTransformType::JacobianType
 
using MovingTransformParametersType = typename MovingTransformType::ParametersType
 
using MovingTransformPointer = typename MovingTransformType::Pointer
 
using MovingTransformType = Transform< TInternalComputationValueType, TVirtualImage::ImageDimension, TMovingDimension >
 
using ObjectType = typename Superclass::Object
 
using Pointer = SmartPointer< Self >
 
using Self = ObjectToObjectMetric
 
using Superclass = ObjectToObjectMetricBaseTemplate< TInternalComputationValueType >
 
using VirtualDirectionType = typename VirtualImageType::DirectionType
 
using VirtualImageConstPointer = typename VirtualImageType::ConstPointer
 
using VirtualImagePointer = typename VirtualImageType::Pointer
 
using VirtualImageType = TVirtualImage
 
using VirtualIndexType = typename VirtualImageType::IndexType
 
using VirtualOriginType = typename VirtualImageType::PointType
 
using VirtualPixelType = typename VirtualImageType::PixelType
 
using VirtualPointSetPointer = typename VirtualPointSetType::Pointer
 
using VirtualPointSetType = PointSet< VirtualPixelType, Self::VirtualDimension >
 
using VirtualPointType = typename VirtualImageType::PointType
 
using VirtualRadiusType = typename VirtualImageType::SizeType
 
using VirtualRegionType = typename VirtualImageType::RegionType
 
using VirtualSizeType = typename VirtualRegionType::SizeType
 
using VirtualSpacingType = typename VirtualImageType::SpacingType
 
- Public Types inherited from itk::ObjectToObjectMetricBaseTemplate< TInternalComputationValueType >
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< TInternalComputationValueType >
using ConstPointer = SmartPointer< const Self >
 
using DerivativeType = Array< TInternalComputationValueType >
 
using MeasureType = TInternalComputationValueType
 
using Pointer = SmartPointer< Self >
 
using Self = SingleValuedCostFunctionv4Template
 
using Superclass = CostFunctionTemplate< TInternalComputationValueType >
 
- Public Types inherited from itk::CostFunctionTemplate< TInternalComputationValueType >
using ConstPointer = SmartPointer< const Self >
 
using ParametersType = OptimizerParameters< TInternalComputationValueType >
 
using ParametersValueType = TInternalComputationValueType
 
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

void AddMetric (MetricType *metric)
 
void ClearMetricQueue ()
 
void GetDerivative (DerivativeType &) const override
 
MetricCategoryType GetMetricCategory () const override
 
const MetricQueueTypeGetMetricQueue () const
 
virtual WeightsArrayType GetMetricWeights ()
 
const char * GetNameOfClass () const override
 
SizeValueType GetNumberOfMetrics () const
 
MeasureType GetValue () const override
 
void GetValueAndDerivative (MeasureType &firstValue, DerivativeType &derivativeResult) const override
 
MetricValueArrayType GetValueArray () const
 
MeasureType GetWeightedValue () const
 
void Initialize () override
 
void SetFixedObject (const ObjectType *) override
 
void SetFixedTransform (FixedTransformType *) override
 
virtual void SetMetricWeights (WeightsArrayType _arg)
 
void SetMovingObject (const ObjectType *) override
 
void SetMovingTransform (MovingTransformType *) override
 
bool SupportsArbitraryVirtualDomainSamples () const override
 
- Public Member Functions inherited from itk::ObjectToObjectMetric< TFixedDimension, TMovingDimension, TVirtualImage, TInternalComputationValueType >
OffsetValueType ComputeParameterOffsetFromVirtualIndex (const VirtualIndexType &index, const NumberOfParametersType &numberOfLocalParameters) const
 
OffsetValueType ComputeParameterOffsetFromVirtualPoint (const VirtualPointType &point, const NumberOfParametersType &numberOfLocalParameters) const
 
MetricCategoryType GetMetricCategory () const override
 
virtual FixedTransformTypeGetModifiableFixedTransform ()
 
virtual MovingTransformTypeGetModifiableMovingTransform ()
 
virtual VirtualImageTypeGetModifiableVirtualImage ()
 
const char * GetNameOfClass () const override
 
NumberOfParametersType GetNumberOfLocalParameters () const override
 
NumberOfParametersType GetNumberOfParameters () const override
 
virtual SizeValueType GetNumberOfValidPoints () const
 
const ParametersTypeGetParameters () const override
 
const MovingTransformTypeGetTransform ()
 
VirtualDirectionType GetVirtualDirection () const
 
virtual const TimeStampGetVirtualDomainTimeStamp () const
 
VirtualOriginType GetVirtualOrigin () const
 
const VirtualRegionTypeGetVirtualRegion () const
 
VirtualSpacingType GetVirtualSpacing () const
 
bool HasLocalSupport () const override
 
void Initialize () override
 
void SetParameters (ParametersType &params) override
 
void SetTransform (MovingTransformType *transform)
 
void SetVirtualDomain (const VirtualSpacingType &spacing, const VirtualOriginType &origin, const VirtualDirectionType &direction, const VirtualRegionType &region)
 
void SetVirtualDomainFromImage (const VirtualImageType *virtualImage)
 
void UpdateTransformParameters (const DerivativeType &derivative, TInternalComputationValueType factor) override
 
bool IsInsideVirtualDomain (const VirtualPointType &point) const
 
bool IsInsideVirtualDomain (const VirtualIndexType &index) const
 
- Public Member Functions inherited from itk::ObjectToObjectMetricBaseTemplate< TInternalComputationValueType >
MeasureType GetCurrentValue () const
 
virtual GradientSourceEnum GetGradientSource () const
 
bool GetGradientSourceIncludesFixed () const
 
bool GetGradientSourceIncludesMoving () const
 
virtual void SetGradientSource (GradientSourceEnum _arg)
 
virtual const ObjectTypeGetFixedObject () const
 
virtual const ObjectTypeGetMovingObject () const
 
- 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
 
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 void Delete ()
 
virtual int GetReferenceCount () const
 
void Print (std::ostream &os, Indent indent=0) const
 

Static Public Member Functions

static Pointer New ()
 
- 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 ()
 

Protected Member Functions

 ObjectToObjectMultiMetricv4 ()
 
void PrintSelf (std::ostream &os, Indent indent) const override
 
 ~ObjectToObjectMultiMetricv4 () override=default
 
- Protected Member Functions inherited from itk::ObjectToObjectMetric< TFixedDimension, TMovingDimension, TVirtualImage, TInternalComputationValueType >
const MovingDisplacementFieldTransformTypeGetMovingDisplacementFieldTransform () const
 
 ObjectToObjectMetric ()
 
void PrintSelf (std::ostream &os, Indent indent) const override
 
bool TransformPhysicalPointToVirtualIndex (const VirtualPointType &, VirtualIndexType &) const
 
void TransformVirtualIndexToPhysicalPoint (const VirtualIndexType &, VirtualPointType &) const
 
virtual void VerifyDisplacementFieldSizeAndPhysicalSpace ()
 
bool VerifyNumberOfValidPoints (MeasureType &value, DerivativeType &derivative) const
 
 ~ObjectToObjectMetric () override=default
 
- Protected Member Functions inherited from itk::ObjectToObjectMetricBaseTemplate< TInternalComputationValueType >
 ObjectToObjectMetricBaseTemplate ()
 
 ~ObjectToObjectMetricBaseTemplate () override=default
 
- Protected Member Functions inherited from itk::SingleValuedCostFunctionv4Template< TInternalComputationValueType >
 SingleValuedCostFunctionv4Template ()=default
 
 ~SingleValuedCostFunctionv4Template () override=default
 
- Protected Member Functions inherited from itk::CostFunctionTemplate< TInternalComputationValueType >
 CostFunctionTemplate ()=default
 
 ~CostFunctionTemplate () override=default
 
- Protected Member Functions inherited from itk::Object
 Object ()
 
bool PrintObservers (std::ostream &os, Indent indent) const
 
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 PrintTrailer (std::ostream &os, Indent indent) const
 
virtual ~LightObject ()
 

Private Attributes

MetricQueueType m_MetricQueue {}
 
MetricValueArrayType m_MetricValueArray {}
 
WeightsArrayType m_MetricWeights {}
 

Additional Inherited Members

- Static Public Attributes inherited from itk::ObjectToObjectMetric< TFixedDimension, TMovingDimension, TVirtualImage, TInternalComputationValueType >
static constexpr DimensionType FixedDimension
 
static constexpr DimensionType MovingDimension
 
static constexpr DimensionType VirtualDimension
 
- Protected Attributes inherited from itk::ObjectToObjectMetric< TFixedDimension, TMovingDimension, TVirtualImage, TInternalComputationValueType >
FixedTransformPointer m_FixedTransform
 
MovingTransformPointer m_MovingTransform
 
SizeValueType m_NumberOfValidPoints
 
bool m_UserHasSetVirtualDomain
 
VirtualImagePointer m_VirtualImage
 
- Protected Attributes inherited from itk::ObjectToObjectMetricBaseTemplate< TInternalComputationValueType >
ObjectConstPointer m_FixedObject {}
 
GradientSourceEnum m_GradientSource {}
 
ObjectConstPointer m_MovingObject {}
 
MeasureType m_Value {}
 
- Protected Attributes inherited from itk::LightObject
std::atomic< int > m_ReferenceCount {}
 

Member Typedef Documentation

◆ ConstPointer

template<unsigned int TFixedDimension, unsigned int TMovingDimension, typename TVirtualImage = Image<double, TFixedDimension>, class TInternalComputationValueType = double>
using itk::ObjectToObjectMultiMetricv4< TFixedDimension, TMovingDimension, TVirtualImage, TInternalComputationValueType >::ConstPointer = SmartPointer<const Self>

Definition at line 107 of file itkObjectToObjectMultiMetricv4.h.

◆ MetricBaseConstPointer

template<unsigned int TFixedDimension, unsigned int TMovingDimension, typename TVirtualImage = Image<double, TFixedDimension>, class TInternalComputationValueType = double>
using itk::ObjectToObjectMultiMetricv4< TFixedDimension, TMovingDimension, TVirtualImage, TInternalComputationValueType >::MetricBaseConstPointer = typename MetricType::ConstPointer

Definition at line 129 of file itkObjectToObjectMultiMetricv4.h.

◆ MetricBasePointer

template<unsigned int TFixedDimension, unsigned int TMovingDimension, typename TVirtualImage = Image<double, TFixedDimension>, class TInternalComputationValueType = double>
using itk::ObjectToObjectMultiMetricv4< TFixedDimension, TMovingDimension, TVirtualImage, TInternalComputationValueType >::MetricBasePointer = typename MetricType::Pointer

Definition at line 128 of file itkObjectToObjectMultiMetricv4.h.

◆ MetricQueueType

template<unsigned int TFixedDimension, unsigned int TMovingDimension, typename TVirtualImage = Image<double, TFixedDimension>, class TInternalComputationValueType = double>
using itk::ObjectToObjectMultiMetricv4< TFixedDimension, TMovingDimension, TVirtualImage, TInternalComputationValueType >::MetricQueueType = std::deque<MetricBasePointer>

Definition at line 130 of file itkObjectToObjectMultiMetricv4.h.

◆ MetricType

template<unsigned int TFixedDimension, unsigned int TMovingDimension, typename TVirtualImage = Image<double, TFixedDimension>, class TInternalComputationValueType = double>
using itk::ObjectToObjectMultiMetricv4< TFixedDimension, TMovingDimension, TVirtualImage, TInternalComputationValueType >::MetricType = Superclass

type alias related to the metric queue

Definition at line 127 of file itkObjectToObjectMultiMetricv4.h.

◆ MetricValueArrayType

template<unsigned int TFixedDimension, unsigned int TMovingDimension, typename TVirtualImage = Image<double, TFixedDimension>, class TInternalComputationValueType = double>
using itk::ObjectToObjectMultiMetricv4< TFixedDimension, TMovingDimension, TVirtualImage, TInternalComputationValueType >::MetricValueArrayType = Array<MeasureType>

Definition at line 136 of file itkObjectToObjectMultiMetricv4.h.

◆ ObjectType

template<unsigned int TFixedDimension, unsigned int TMovingDimension, typename TVirtualImage = Image<double, TFixedDimension>, class TInternalComputationValueType = double>
using itk::ObjectToObjectMultiMetricv4< TFixedDimension, TMovingDimension, TVirtualImage, TInternalComputationValueType >::ObjectType = typename Superclass::ObjectType

Definition at line 132 of file itkObjectToObjectMultiMetricv4.h.

◆ Pointer

template<unsigned int TFixedDimension, unsigned int TMovingDimension, typename TVirtualImage = Image<double, TFixedDimension>, class TInternalComputationValueType = double>
using itk::ObjectToObjectMultiMetricv4< TFixedDimension, TMovingDimension, TVirtualImage, TInternalComputationValueType >::Pointer = SmartPointer<Self>

Definition at line 106 of file itkObjectToObjectMultiMetricv4.h.

◆ Self

template<unsigned int TFixedDimension, unsigned int TMovingDimension, typename TVirtualImage = Image<double, TFixedDimension>, class TInternalComputationValueType = double>
using itk::ObjectToObjectMultiMetricv4< TFixedDimension, TMovingDimension, TVirtualImage, TInternalComputationValueType >::Self = ObjectToObjectMultiMetricv4

Standard class type aliases

Definition at line 103 of file itkObjectToObjectMultiMetricv4.h.

◆ Superclass

template<unsigned int TFixedDimension, unsigned int TMovingDimension, typename TVirtualImage = Image<double, TFixedDimension>, class TInternalComputationValueType = double>
using itk::ObjectToObjectMultiMetricv4< TFixedDimension, TMovingDimension, TVirtualImage, TInternalComputationValueType >::Superclass = ObjectToObjectMetric<TFixedDimension, TMovingDimension, TVirtualImage, TInternalComputationValueType>

Definition at line 105 of file itkObjectToObjectMultiMetricv4.h.

◆ WeightsArrayType

template<unsigned int TFixedDimension, unsigned int TMovingDimension, typename TVirtualImage = Image<double, TFixedDimension>, class TInternalComputationValueType = double>
using itk::ObjectToObjectMultiMetricv4< TFixedDimension, TMovingDimension, TVirtualImage, TInternalComputationValueType >::WeightsArrayType = Array<WeightValueType>

Definition at line 135 of file itkObjectToObjectMultiMetricv4.h.

◆ WeightValueType

template<unsigned int TFixedDimension, unsigned int TMovingDimension, typename TVirtualImage = Image<double, TFixedDimension>, class TInternalComputationValueType = double>
using itk::ObjectToObjectMultiMetricv4< TFixedDimension, TMovingDimension, TVirtualImage, TInternalComputationValueType >::WeightValueType = typename DerivativeType::ValueType

Definition at line 134 of file itkObjectToObjectMultiMetricv4.h.

Constructor & Destructor Documentation

◆ ObjectToObjectMultiMetricv4()

template<unsigned int TFixedDimension, unsigned int TMovingDimension, typename TVirtualImage = Image<double, TFixedDimension>, class TInternalComputationValueType = double>
itk::ObjectToObjectMultiMetricv4< TFixedDimension, TMovingDimension, TVirtualImage, TInternalComputationValueType >::ObjectToObjectMultiMetricv4 ( )
protected

◆ ~ObjectToObjectMultiMetricv4()

template<unsigned int TFixedDimension, unsigned int TMovingDimension, typename TVirtualImage = Image<double, TFixedDimension>, class TInternalComputationValueType = double>
itk::ObjectToObjectMultiMetricv4< TFixedDimension, TMovingDimension, TVirtualImage, TInternalComputationValueType >::~ObjectToObjectMultiMetricv4 ( )
overrideprotecteddefault

Member Function Documentation

◆ AddMetric()

template<unsigned int TFixedDimension, unsigned int TMovingDimension, typename TVirtualImage = Image<double, TFixedDimension>, class TInternalComputationValueType = double>
void itk::ObjectToObjectMultiMetricv4< TFixedDimension, TMovingDimension, TVirtualImage, TInternalComputationValueType >::AddMetric ( MetricType metric)

Add a metric to the queue.

◆ ClearMetricQueue()

template<unsigned int TFixedDimension, unsigned int TMovingDimension, typename TVirtualImage = Image<double, TFixedDimension>, class TInternalComputationValueType = double>
void itk::ObjectToObjectMultiMetricv4< TFixedDimension, TMovingDimension, TVirtualImage, TInternalComputationValueType >::ClearMetricQueue ( )

Clear the metric queue.

◆ GetDerivative()

template<unsigned int TFixedDimension, unsigned int TMovingDimension, typename TVirtualImage = Image<double, TFixedDimension>, class TInternalComputationValueType = double>
void itk::ObjectToObjectMultiMetricv4< TFixedDimension, TMovingDimension, TVirtualImage, TInternalComputationValueType >::GetDerivative ( DerivativeType ) const
overridevirtual

This method returns the derivative based on the current transformation(s).

Implements itk::ObjectToObjectMetricBaseTemplate< TInternalComputationValueType >.

◆ GetMetricCategory()

template<unsigned int TFixedDimension, unsigned int TMovingDimension, typename TVirtualImage = Image<double, TFixedDimension>, class TInternalComputationValueType = double>
MetricCategoryType itk::ObjectToObjectMultiMetricv4< TFixedDimension, TMovingDimension, TVirtualImage, TInternalComputationValueType >::GetMetricCategory ( ) const
inlineoverridevirtual

Get metric category

Reimplemented from itk::ObjectToObjectMetricBaseTemplate< TInternalComputationValueType >.

Definition at line 218 of file itkObjectToObjectMultiMetricv4.h.

◆ GetMetricQueue()

template<unsigned int TFixedDimension, unsigned int TMovingDimension, typename TVirtualImage = Image<double, TFixedDimension>, class TInternalComputationValueType = double>
const MetricQueueType& itk::ObjectToObjectMultiMetricv4< TFixedDimension, TMovingDimension, TVirtualImage, TInternalComputationValueType >::GetMetricQueue ( ) const

Get the metrics queue

◆ GetMetricWeights()

template<unsigned int TFixedDimension, unsigned int TMovingDimension, typename TVirtualImage = Image<double, TFixedDimension>, class TInternalComputationValueType = double>
virtual WeightsArrayType itk::ObjectToObjectMultiMetricv4< TFixedDimension, TMovingDimension, TVirtualImage, TInternalComputationValueType >::GetMetricWeights ( )
virtual

◆ GetNameOfClass()

template<unsigned int TFixedDimension, unsigned int TMovingDimension, typename TVirtualImage = Image<double, TFixedDimension>, class TInternalComputationValueType = double>
const char* itk::ObjectToObjectMultiMetricv4< TFixedDimension, TMovingDimension, TVirtualImage, TInternalComputationValueType >::GetNameOfClass ( ) const
overridevirtual

◆ GetNumberOfMetrics()

template<unsigned int TFixedDimension, unsigned int TMovingDimension, typename TVirtualImage = Image<double, TFixedDimension>, class TInternalComputationValueType = double>
SizeValueType itk::ObjectToObjectMultiMetricv4< TFixedDimension, TMovingDimension, TVirtualImage, TInternalComputationValueType >::GetNumberOfMetrics ( ) const

Get the number of metrics.

◆ GetValue()

template<unsigned int TFixedDimension, unsigned int TMovingDimension, typename TVirtualImage = Image<double, TFixedDimension>, class TInternalComputationValueType = double>
MeasureType itk::ObjectToObjectMultiMetricv4< TFixedDimension, TMovingDimension, TVirtualImage, TInternalComputationValueType >::GetValue ( ) const
overridevirtual

Evaluate the metrics and return the value of only the first metric.

See also
GetValueArray
GetWeightedValue

Implements itk::ObjectToObjectMetricBaseTemplate< TInternalComputationValueType >.

◆ GetValueAndDerivative()

template<unsigned int TFixedDimension, unsigned int TMovingDimension, typename TVirtualImage = Image<double, TFixedDimension>, class TInternalComputationValueType = double>
void itk::ObjectToObjectMultiMetricv4< TFixedDimension, TMovingDimension, TVirtualImage, TInternalComputationValueType >::GetValueAndDerivative ( MeasureType firstValue,
DerivativeType derivativeResult 
) const
overridevirtual

Evaluate the metric value and derivative.

Parameters
firstValuewill contain the value of only the first metric on return.
derivativeResultholds the combined derivative on return.
See also
GetValueArray
GetWeightedValue

Implements itk::ObjectToObjectMetricBaseTemplate< TInternalComputationValueType >.

◆ GetValueArray()

template<unsigned int TFixedDimension, unsigned int TMovingDimension, typename TVirtualImage = Image<double, TFixedDimension>, class TInternalComputationValueType = double>
MetricValueArrayType itk::ObjectToObjectMultiMetricv4< TFixedDimension, TMovingDimension, TVirtualImage, TInternalComputationValueType >::GetValueArray ( ) const

Returns an itkArray of metric values, one for each component metric. It only has meaning after a call to GetValue(), GetDerivative() or GetValueAndDerivative().

◆ GetWeightedValue()

template<unsigned int TFixedDimension, unsigned int TMovingDimension, typename TVirtualImage = Image<double, TFixedDimension>, class TInternalComputationValueType = double>
MeasureType itk::ObjectToObjectMultiMetricv4< TFixedDimension, TMovingDimension, TVirtualImage, TInternalComputationValueType >::GetWeightedValue ( ) const

Returns a combined metric value of all component metrics, using the assigned weights. It only has meaning after a call to GetValue(), GetDerivative() or GetValueAndDerivative().

◆ Initialize()

template<unsigned int TFixedDimension, unsigned int TMovingDimension, typename TVirtualImage = Image<double, TFixedDimension>, class TInternalComputationValueType = double>
void itk::ObjectToObjectMultiMetricv4< TFixedDimension, TMovingDimension, TVirtualImage, TInternalComputationValueType >::Initialize ( )
overridevirtual

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.

Implements itk::ObjectToObjectMetricBaseTemplate< TInternalComputationValueType >.

◆ New()

template<unsigned int TFixedDimension, unsigned int TMovingDimension, typename TVirtualImage = Image<double, TFixedDimension>, class TInternalComputationValueType = double>
static Pointer itk::ObjectToObjectMultiMetricv4< TFixedDimension, TMovingDimension, TVirtualImage, TInternalComputationValueType >::New ( )
static

New macro for creation of through a Smart Pointer

◆ PrintSelf()

template<unsigned int TFixedDimension, unsigned int TMovingDimension, typename TVirtualImage = Image<double, TFixedDimension>, class TInternalComputationValueType = double>
void itk::ObjectToObjectMultiMetricv4< TFixedDimension, TMovingDimension, TVirtualImage, 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::ObjectToObjectMetricBaseTemplate< TInternalComputationValueType >.

◆ SetFixedObject()

template<unsigned int TFixedDimension, unsigned int TMovingDimension, typename TVirtualImage = Image<double, TFixedDimension>, class TInternalComputationValueType = double>
void itk::ObjectToObjectMultiMetricv4< TFixedDimension, TMovingDimension, TVirtualImage, TInternalComputationValueType >::SetFixedObject ( const ObjectType )
inlineoverridevirtual

Set fixed object (image, point set, etc.)

Reimplemented from itk::ObjectToObjectMetricBaseTemplate< TInternalComputationValueType >.

Definition at line 158 of file itkObjectToObjectMultiMetricv4.h.

◆ SetFixedTransform()

template<unsigned int TFixedDimension, unsigned int TMovingDimension, typename TVirtualImage = Image<double, TFixedDimension>, class TInternalComputationValueType = double>
void itk::ObjectToObjectMultiMetricv4< TFixedDimension, TMovingDimension, TVirtualImage, TInternalComputationValueType >::SetFixedTransform ( FixedTransformType )
overridevirtual

Set each of the component metrics to use this fixed transform.

Reimplemented from itk::ObjectToObjectMetric< TFixedDimension, TMovingDimension, TVirtualImage, TInternalComputationValueType >.

◆ SetMetricWeights()

template<unsigned int TFixedDimension, unsigned int TMovingDimension, typename TVirtualImage = Image<double, TFixedDimension>, class TInternalComputationValueType = double>
virtual void itk::ObjectToObjectMultiMetricv4< TFixedDimension, TMovingDimension, TVirtualImage, TInternalComputationValueType >::SetMetricWeights ( WeightsArrayType  _arg)
virtual

◆ SetMovingObject()

template<unsigned int TFixedDimension, unsigned int TMovingDimension, typename TVirtualImage = Image<double, TFixedDimension>, class TInternalComputationValueType = double>
void itk::ObjectToObjectMultiMetricv4< TFixedDimension, TMovingDimension, TVirtualImage, TInternalComputationValueType >::SetMovingObject ( const ObjectType )
inlineoverridevirtual

Set moving object (image, point set, etc.)

Reimplemented from itk::ObjectToObjectMetricBaseTemplate< TInternalComputationValueType >.

Definition at line 165 of file itkObjectToObjectMultiMetricv4.h.

◆ SetMovingTransform()

template<unsigned int TFixedDimension, unsigned int TMovingDimension, typename TVirtualImage = Image<double, TFixedDimension>, class TInternalComputationValueType = double>
void itk::ObjectToObjectMultiMetricv4< TFixedDimension, TMovingDimension, TVirtualImage, TInternalComputationValueType >::SetMovingTransform ( MovingTransformType )
overridevirtual

Set each of the component metrics to use this moving transform.

Reimplemented from itk::ObjectToObjectMetric< TFixedDimension, TMovingDimension, TVirtualImage, TInternalComputationValueType >.

◆ SupportsArbitraryVirtualDomainSamples()

template<unsigned int TFixedDimension, unsigned int TMovingDimension, typename TVirtualImage = Image<double, TFixedDimension>, class TInternalComputationValueType = double>
bool itk::ObjectToObjectMultiMetricv4< TFixedDimension, TMovingDimension, TVirtualImage, TInternalComputationValueType >::SupportsArbitraryVirtualDomainSamples ( ) const
overridevirtual

Returns a flag. True if arbitrary virtual domain points will always correspond to data points. False if not. For example, point-set metrics return false because only some virtual domain points will correspond to points within the point sets.

Implements itk::ObjectToObjectMetric< TFixedDimension, TMovingDimension, TVirtualImage, TInternalComputationValueType >.

Member Data Documentation

◆ m_MetricQueue

template<unsigned int TFixedDimension, unsigned int TMovingDimension, typename TVirtualImage = Image<double, TFixedDimension>, class TInternalComputationValueType = double>
MetricQueueType itk::ObjectToObjectMultiMetricv4< TFixedDimension, TMovingDimension, TVirtualImage, TInternalComputationValueType >::m_MetricQueue {}
private

Definition at line 230 of file itkObjectToObjectMultiMetricv4.h.

◆ m_MetricValueArray

template<unsigned int TFixedDimension, unsigned int TMovingDimension, typename TVirtualImage = Image<double, TFixedDimension>, class TInternalComputationValueType = double>
MetricValueArrayType itk::ObjectToObjectMultiMetricv4< TFixedDimension, TMovingDimension, TVirtualImage, TInternalComputationValueType >::m_MetricValueArray {}
mutableprivate

Definition at line 232 of file itkObjectToObjectMultiMetricv4.h.

◆ m_MetricWeights

template<unsigned int TFixedDimension, unsigned int TMovingDimension, typename TVirtualImage = Image<double, TFixedDimension>, class TInternalComputationValueType = double>
WeightsArrayType itk::ObjectToObjectMultiMetricv4< TFixedDimension, TMovingDimension, TVirtualImage, TInternalComputationValueType >::m_MetricWeights {}
private

Definition at line 231 of file itkObjectToObjectMultiMetricv4.h.


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