18#ifndef itkFastSymmetricForcesDemonsRegistrationFunction_h
19#define itkFastSymmetricForcesDemonsRegistrationFunction_h
46template <
typename TFixedImage,
typename TMovingImage,
typename TDisplacementField>
66 using typename Superclass::MovingImageType;
67 using typename Superclass::MovingImagePointer;
70 using typename Superclass::FixedImageType;
71 using typename Superclass::FixedImagePointer;
77 using typename Superclass::DisplacementFieldType;
78 using typename Superclass::DisplacementFieldTypePointer;
81 static constexpr unsigned int ImageDimension = Superclass::ImageDimension;
115 m_MovingImageInterpolator = ptr;
116 m_MovingImageWarper->SetInterpolator(ptr);
124 return m_MovingImageInterpolator;
141 global->m_SumOfSquaredDifference = 0.0;
142 global->m_NumberOfPixelsProcessed = 0L;
143 global->m_SumOfSquaredChange = 0;
177 virtual const double &
213 double m_Normalizer{};
231 double m_DenominatorThreshold{};
234 double m_IntensityDifferenceThreshold{};
239 mutable double m_Metric{};
240 mutable double m_SumOfSquaredDifference{};
242 mutable double m_RMSChange{};
243 mutable double m_SumOfSquaredChange{};
246 mutable std::mutex m_MetricCalculationMutex{};
250#ifndef ITK_MANUAL_INSTANTIATION
251# include "itkFastSymmetricForcesDemonsRegistrationFunction.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.
FastSymmetricForcesDemonsRegistrationFunction()
void SetMovingImageInterpolator(InterpolatorType *ptr)
typename InterpolatorType::PointType PointType
void InitializeIteration() override
typename MovingGradientCalculatorType::Pointer MovingGradientCalculatorPointer
PixelType ComputeUpdate(const NeighborhoodType &neighborhood, void *globalData, const FloatOffsetType &offset=FloatOffsetType(0.0)) override
typename FixedImageType::SizeType SizeType
InterpolatorType * GetMovingImageInterpolator()
TimeStepType ComputeGlobalTimeStep(void *) const override
virtual double GetMetric() const
void ReleaseGlobalDataPointer(void *GlobalData) const override
typename WarperType::Pointer WarperPointer
typename FixedImageType::IndexType IndexType
typename FixedImageType::SpacingType SpacingType
~FastSymmetricForcesDemonsRegistrationFunction() override=default
virtual const double & GetRMSChange() const
typename InterpolatorType::Pointer InterpolatorPointer
void * GetGlobalDataPointer() const override
typename GradientCalculatorType::Pointer GradientCalculatorPointer
virtual double GetIntensityDifferenceThreshold() const
void PrintSelf(std::ostream &os, Indent indent) const override
virtual void SetIntensityDifferenceThreshold(double)
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.
A templated class holding a n-Dimensional vector.
Warps an image using an input displacement field.
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
SizeValueType m_NumberOfPixelsProcessed
double m_SumOfSquaredDifference
double m_SumOfSquaredChange