18#ifndef itkSymmetricForcesDemonsRegistrationFunction_h
19#define itkSymmetricForcesDemonsRegistrationFunction_h
61template <
typename TFixedImage,
typename TMovingImage,
typename TDisplacementField>
87 using IndexType =
typename FixedImageType::IndexType;
88 using SizeType =
typename FixedImageType::SizeType;
107#ifndef ITK_FUTURE_LEGACY_REMOVE
108 using CoordRepType ITK_FUTURE_DEPRECATED(
109 "ITK 6 discourages using `CoordRepType`. Please use `CoordinateType` instead!") =
CoordinateType;
149 auto * global =
new GlobalDataStruct();
151 global->m_SumOfSquaredDifference = 0.0;
152 global->m_NumberOfPixelsProcessed = 0L;
153 global->m_SumOfSquaredChange = 0;
185 virtual const double &
254#ifndef ITK_MANUAL_INSTANTIATION
255# include "itkSymmetricForcesDemonsRegistrationFunction.hxx"
Calculate the derivative by central differencing.
SmartPointer< Self > Pointer
Const version of NeighborhoodIterator, defining iteration of a local N-dimensional neighborhood of pi...
A templated class holding a n-Dimensional covariant vector.
ConstNeighborhoodIterator< TImageType, DefaultBoundaryConditionType > NeighborhoodType
static constexpr unsigned int ImageDimension
Vector< float, Self::ImageDimension > FloatOffsetType
typename ImageType::PixelType PixelType
typename ConstNeighborhoodIterator< TImageType >::RadiusType RadiusType
Control indentation during Print() invocation.
Base class for all image interpolators.
Point< CoordinateType, Self::ImageDimension > PointType
SmartPointer< Self > Pointer
Linearly interpolate an image at specified positions.
Implements transparent reference counting.
ConstNeighborhoodIterator< FixedImageType > FixedImageNeighborhoodIteratorType
void * GetGlobalDataPointer() const override
SmartPointer< const Self > ConstPointer
InterpolatorPointer m_MovingImageInterpolator
double m_SumOfSquaredChange
InterpolatorType * GetMovingImageInterpolator()
virtual double GetMetric() const
SizeValueType m_NumberOfPixelsProcessed
typename InterpolatorType::Pointer InterpolatorPointer
~SymmetricForcesDemonsRegistrationFunction() override=default
TimeStepType ComputeGlobalTimeStep(void *GlobalData) const override
static constexpr unsigned int ImageDimension
typename GradientCalculatorType::Pointer GradientCalculatorPointer
void PrintSelf(std::ostream &os, Indent indent) const override
std::mutex m_MetricCalculationMutex
typename FixedImageType::SpacingType SpacingType
SpacingType m_FixedImageSpacing
double m_IntensityDifferenceThreshold
SymmetricForcesDemonsRegistrationFunction()
SmartPointer< Self > Pointer
void InitializeIteration() override
virtual const double & GetRMSChange() const
void SetMovingImageInterpolator(InterpolatorType *ptr)
PDEDeformableRegistrationFunction< FixedImageType, MovingImageType, DisplacementFieldType > Superclass
double m_SumOfSquaredDifference
typename InterpolatorType::PointType PointType
LinearInterpolateImageFunction< MovingImageType, CoordinateType > DefaultInterpolatorType
typename FixedImageType::SizeType SizeType
typename FixedImageType::IndexType IndexType
InterpolateImageFunction< MovingImageType, CoordinateType > InterpolatorType
virtual void SetIntensityDifferenceThreshold(double)
PixelType ComputeUpdate(const NeighborhoodType &it, void *gd, const FloatOffsetType &offset=FloatOffsetType(0.0)) override
GradientCalculatorPointer m_FixedImageGradientCalculator
PointType m_FixedImageOrigin
CovariantVector< double, Self::ImageDimension > CovariantVectorType
double m_DenominatorThreshold
void ReleaseGlobalDataPointer(void *gd) const override
SymmetricForcesDemonsRegistrationFunction Self
CentralDifferenceImageFunction< FixedImageType > GradientCalculatorType
virtual double GetIntensityDifferenceThreshold() const
The "itk" namespace contains all Insight Segmentation and Registration Toolkit (ITK) classes....
unsigned long SizeValueType
double m_SumOfSquaredChange
SizeValueType m_NumberOfPixelsProcessed
double m_SumOfSquaredDifference