19 #ifndef itkObjectToObjectMultiMetricv4_h
20 #define itkObjectToObjectMultiMetricv4_h
92 template <
unsigned int TFixedDimension,
93 unsigned int TMovingDimension,
94 typename TVirtualImage = Image<double, TFixedDimension>,
95 class TInternalComputationValueType =
double>
97 :
public ObjectToObjectMetric<TFixedDimension, TMovingDimension, TVirtualImage, TInternalComputationValueType>
116 using typename Superclass::MeasureType;
117 using typename Superclass::DerivativeType;
118 using typename Superclass::DerivativeValueType;
119 using typename Superclass::ParametersType;
120 using typename Superclass::ParametersValueType;
121 using typename Superclass::NumberOfParametersType;
122 using typename Superclass::CoordinateRepresentationType;
123 using typename Superclass::MovingTransformType;
124 using typename Superclass::FixedTransformType;
151 GetNumberOfMetrics()
const;
154 Initialize()
override;
160 itkExceptionMacro(
"A single object should not be specified for the multi metric.");
167 itkExceptionMacro(
"A single object should not be specified for the multi metric.");
172 SetMovingTransform(MovingTransformType *)
override;
176 SetFixedTransform(FixedTransformType *)
override;
183 GetValue()
const override;
186 GetDerivative(DerivativeType &)
const override;
195 GetValueAndDerivative(MeasureType & firstValue, DerivativeType & derivativeResult)
const override;
200 GetValueArray()
const;
205 GetWeightedValue()
const;
208 const MetricQueueType &
209 GetMetricQueue()
const;
212 SupportsArbitraryVirtualDomainSamples()
const override;
214 using typename Superclass::MetricCategoryType;
220 return MetricCategoryType::MULTI_METRIC;
227 PrintSelf(std::ostream & os,
Indent indent)
const override;
237 #ifndef ITK_MANUAL_INSTANTIATION
238 # include "itkObjectToObjectMultiMetricv4.hxx"