18 #ifndef itkObjectToObjectMetric_h
19 #define itkObjectToObjectMetric_h
88 template <
unsigned int TFixedDimension,
89 unsigned int TMovingDimension,
90 typename TVirtualImage = Image<double, TFixedDimension>,
91 typename TParametersValueType =
double>
113 using typename Superclass::MeasureType;
119 using typename Superclass::DerivativeType;
120 using typename Superclass::DerivativeValueType;
123 using typename Superclass::ParametersType;
124 using typename Superclass::NumberOfParametersType;
126 using typename Superclass::GradientSourceEnum;
134 static constexpr
DimensionType VirtualDimension = TVirtualImage::ImageDimension;
178 Initialize()
override;
181 GetNumberOfParameters()
const override;
183 GetNumberOfLocalParameters()
const override;
187 GetParameters()
const override;
189 HasLocalSupport()
const override;
191 UpdateTransformParameters(
const DerivativeType & derivative, TParametersValueType factor)
override;
250 SupportsArbitraryVirtualDomainSamples()
const = 0;
258 GetVirtualDomainTimeStamp()
const;
263 GetVirtualSpacing()
const;
268 GetVirtualOrigin()
const;
273 GetVirtualDirection()
const;
278 GetVirtualRegion()
const;
324 return MetricCategoryType::OBJECT_METRIC;
332 PrintSelf(std::ostream & os,
Indent indent)
const override;
337 VerifyDisplacementFieldSizeAndPhysicalSpace();
340 TransformPhysicalPointToVirtualIndex(
const VirtualPointType &, VirtualIndexType &)
const;
342 TransformVirtualIndexToPhysicalPoint(
const VirtualIndexType &, VirtualPointType &)
const;
348 const MovingDisplacementFieldTransformType *
349 GetMovingDisplacementFieldTransform()
const;
358 VerifyNumberOfValidPoints(MeasureType & value, DerivativeType & derivative)
const;
368 bool m_UserHasSetVirtualDomain{};
377 #ifndef ITK_MANUAL_INSTANTIATION
378 # include "itkObjectToObjectMetric.hxx"