18#ifndef itkLevelSetMotionRegistrationFunction_h
19#define itkLevelSetMotionRegistrationFunction_h
54template <
typename TFixedImage,
typename TMovingImage,
typename TDisplacementField>
75 using typename Superclass::MovingImageType;
76 using typename Superclass::MovingImagePointer;
80 using typename Superclass::FixedImageType;
81 using typename Superclass::FixedImagePointer;
87 using typename Superclass::DisplacementFieldType;
88 using typename Superclass::DisplacementFieldTypePointer;
91 static constexpr unsigned int ImageDimension = Superclass::ImageDimension;
119 m_MovingImageInterpolator = ptr;
126 return m_MovingImageInterpolator;
143 global->m_SumOfSquaredDifference = 0.0;
144 global->m_NumberOfPixelsProcessed = 0L;
145 global->m_SumOfSquaredChange = 0;
267 double m_GradientMagnitudeThreshold{};
270 double m_IntensityDifferenceThreshold{};
273 double m_GradientSmoothingStandardDeviations{};
278 mutable double m_Metric{};
279 mutable double m_SumOfSquaredDifference{};
281 mutable double m_RMSChange{};
282 mutable double m_SumOfSquaredChange{};
285 mutable std::mutex m_MetricCalculationMutex{};
287 bool m_UseImageSpacing{
true };
291#ifndef ITK_MANUAL_INSTANTIATION
292# include "itkLevelSetMotionRegistrationFunction.hxx"
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.
LevelSetMotionRegistrationFunction()
typename FixedImageType::SizeType SizeType
PixelType ComputeUpdate(const NeighborhoodType &it, void *gd, const FloatOffsetType &offset=FloatOffsetType(0.0)) override
void PrintSelf(std::ostream &os, Indent indent) const override
typename MovingImageSmoothingFilterType::Pointer MovingImageSmoothingFilterPointer
typename MovingImageType::SpacingType MovingSpacingType
bool GetUseImageSpacing() const
typename FixedImageType::SpacingType SpacingType
virtual double GetMetric() const
void InitializeIteration() override
InterpolatorType * GetMovingImageInterpolator()
void ReleaseGlobalDataPointer(void *gd) const override
virtual double GetGradientMagnitudeThreshold() const
void * GetGlobalDataPointer() const override
virtual double GetGradientSmoothingStandardDeviations() const
typename InterpolatorType::PointType PointType
virtual void SetIntensityDifferenceThreshold(double)
virtual double GetAlpha() const
virtual void SetGradientSmoothingStandardDeviations(double)
typename FixedImageType::IndexType IndexType
void SetMovingImageInterpolator(InterpolatorType *ptr)
virtual void SetAlpha(double)
virtual void SetGradientMagnitudeThreshold(double)
void SetUseImageSpacing(bool)
typename InterpolatorType::Pointer InterpolatorPointer
virtual double GetIntensityDifferenceThreshold() const
~LevelSetMotionRegistrationFunction() override=default
virtual double GetRMSChange() const
TimeStepType ComputeGlobalTimeStep(void *GlobalData) const override
Light weight base class for most itk classes.
Linearly interpolate an image at specified positions.
static constexpr T NonpositiveMin()
Computes the smoothing of an image by convolution with the Gaussian kernels implemented as IIR filter...
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
double m_SumOfSquaredDifference
SizeValueType m_NumberOfPixelsProcessed