18 #ifndef itkObjectToObjectMetricBase_h
19 #define itkObjectToObjectMetricBase_h
23 #include "ITKOptimizersv4Export.h"
61 extern ITKOptimizersv4_EXPORT std::ostream &
63 extern ITKOptimizersv4_EXPORT std::ostream &
89 template <
typename TInternalComputationValueType =
double>
109 using typename Superclass::MeasureType;
112 using typename Superclass::DerivativeType;
116 using typename Superclass::ParametersType;
124 itkSetConstObjectMacro(FixedObject,
ObjectType);
125 itkGetConstObjectMacro(FixedObject,
ObjectType);
129 itkSetConstObjectMacro(MovingObject,
ObjectType);
130 itkGetConstObjectMacro(MovingObject,
ObjectType);
134 #if !defined(ITK_LEGACY_REMOVE)
138 static constexpr
GradientSourceEnum GRADIENT_SOURCE_FIXED = GradientSourceEnum::GRADIENT_SOURCE_FIXED;
139 static constexpr
GradientSourceEnum GRADIENT_SOURCE_MOVING = GradientSourceEnum::GRADIENT_SOURCE_MOVING;
140 static constexpr
GradientSourceEnum GRADIENT_SOURCE_BOTH = GradientSourceEnum::GRADIENT_SOURCE_BOTH;
160 GetGradientSourceIncludesFixed()
const;
165 GetGradientSourceIncludesMoving()
const;
182 GetValue()
const override = 0;
193 GetValueAndDerivative(MeasureType & value,
DerivativeType & derivative)
const override = 0;
199 GetNumberOfParameters()
const override = 0;
201 GetNumberOfLocalParameters()
const = 0;
210 GetParameters()
const = 0;
215 HasLocalSupport()
const = 0;
233 GetCurrentValue()
const;
236 #if !defined(ITK_LEGACY_REMOVE)
238 static constexpr
MetricCategoryEnum UNKNOWN_METRIC = MetricCategoryEnum::UNKNOWN_METRIC;
239 static constexpr
MetricCategoryEnum OBJECT_METRIC = MetricCategoryEnum::OBJECT_METRIC;
241 static constexpr
MetricCategoryEnum POINT_SET_METRIC = MetricCategoryEnum::POINT_SET_METRIC;
249 return MetricCategoryEnum::UNKNOWN_METRIC;
257 PrintSelf(std::ostream & os,
Indent indent)
const override;
266 mutable MeasureType m_Value{};
273 #ifndef ITK_MANUAL_INSTANTIATION
274 # include "itkObjectToObjectMetricBase.hxx"