18#ifndef itkSymmetricForcesDemonsRegistrationFunction_h
19#define itkSymmetricForcesDemonsRegistrationFunction_h
61template <
typename TFixedImage,
typename TMovingImage,
typename TDisplacementField>
81 using typename Superclass::MovingImageType;
82 using typename Superclass::MovingImagePointer;
85 using typename Superclass::FixedImageType;
86 using typename Superclass::FixedImagePointer;
92 using typename Superclass::DisplacementFieldType;
93 using typename Superclass::DisplacementFieldTypePointer;
96 static constexpr unsigned int ImageDimension = Superclass::ImageDimension;
107#ifndef ITK_FUTURE_LEGACY_REMOVE
108 using CoordRepType ITK_FUTURE_DEPRECATED(
109 "ITK 6 discourages using `CoordRepType`. Please use `CoordinateType` instead!") =
CoordinateType;
127 m_MovingImageInterpolator = ptr;
134 return m_MovingImageInterpolator;
151 global->m_SumOfSquaredDifference = 0.0;
152 global->m_NumberOfPixelsProcessed = 0L;
153 global->m_SumOfSquaredChange = 0;
185 virtual const double &
223 double m_Normalizer{};
235 double m_DenominatorThreshold{};
238 double m_IntensityDifferenceThreshold{};
243 mutable double m_Metric{};
244 mutable double m_SumOfSquaredDifference{};
246 mutable double m_RMSChange{};
247 mutable double m_SumOfSquaredChange{};
250 mutable std::mutex m_MetricCalculationMutex{};
254#ifndef ITK_MANUAL_INSTANTIATION
255# include "itkSymmetricForcesDemonsRegistrationFunction.hxx"
Calculate the derivative by central differencing.
Const version of NeighborhoodIterator, defining iteration of a local N-dimensional neighborhood of pi...
A templated class holding a n-Dimensional covariant vector.
typename ImageType::PixelType PixelType
typename ConstNeighborhoodIterator< TDisplacementField >::RadiusType RadiusType
Control indentation during Print() invocation.
Base class for all image interpolators.
Light weight base class for most itk classes.
Linearly interpolate an image at specified positions.
void * GetGlobalDataPointer() const override
InterpolatorType * GetMovingImageInterpolator()
virtual double GetMetric() const
typename InterpolatorType::Pointer InterpolatorPointer
~SymmetricForcesDemonsRegistrationFunction() override=default
typename GradientCalculatorType::Pointer GradientCalculatorPointer
void PrintSelf(std::ostream &os, Indent indent) const override
typename FixedImageType::SpacingType SpacingType
SymmetricForcesDemonsRegistrationFunction()
void InitializeIteration() override
virtual const double & GetRMSChange() const
void SetMovingImageInterpolator(InterpolatorType *ptr)
typename InterpolatorType::PointType PointType
TimeStepType ComputeGlobalTimeStep(void *) const override
typename FixedImageType::SizeType SizeType
typename FixedImageType::IndexType IndexType
virtual void SetIntensityDifferenceThreshold(double)
PixelType ComputeUpdate(const NeighborhoodType &it, void *gd, const FloatOffsetType &offset=FloatOffsetType(0.0)) override
void ReleaseGlobalDataPointer(void *gd) const override
virtual double GetIntensityDifferenceThreshold() const
A templated class holding a n-Dimensional vector.
SmartPointer< Self > Pointer
ImageBaseType::IndexType IndexType
ImageBaseType::PointType PointType
ImageBaseType::SizeType SizeType
The "itk" namespace contains all Insight Segmentation and Registration Toolkit (ITK) classes....
unsigned long SizeValueType
double m_SumOfSquaredChange
SizeValueType m_NumberOfPixelsProcessed
double m_SumOfSquaredDifference