18 #ifndef itkCurvatureRegistrationFilter_h
19 #define itkCurvatureRegistrationFilter_h
24 #if !defined(ITK_USE_CUFFTW) && (defined(ITK_USE_FFTWF) || defined(ITK_USE_FFTWD))
97 template <
typename TFixedImage,
98 typename TMovingImage,
99 typename TDisplacementField,
100 typename TImageForceFunction = MeanSquareRegistrationFunction<TFixedImage, TMovingImage, TDisplacementField>>
120 using typename Superclass::TimeStepType;
123 using typename Superclass::FixedImageType;
124 using typename Superclass::FixedImagePointer;
125 static constexpr
unsigned int ImageDimension = FixedImageType::ImageDimension;
128 using typename Superclass::MovingImageType;
129 using typename Superclass::MovingImagePointer;
132 using typename Superclass::DisplacementFieldType;
133 using typename Superclass::DisplacementFieldPointer;
139 # if defined(ITK_USE_FFTWD)
143 # if defined(ITK_USE_FFTWF)
145 # warning "Using single precision for FFT computations!"
154 using typename Superclass::FiniteDifferenceFunctionType;
163 m_ConstraintWeight = w;
185 PrintSelf(std::ostream & os,
Indent indent)
const override;
189 Initialize()
override;
193 ApplyUpdate(
const TimeStepType & dt)
override;
196 unsigned int m_FixedImageDimensions[ImageDimension]{};
201 float m_ConstraintWeight{};
203 fftw_plan m_PlanForwardDCT{};
204 fftw_plan m_PlanBackwardDCT{};
206 TimeStepType m_TimeStep{};
212 # ifndef ITK_MANUAL_INSTANTIATION
213 # include "itkCurvatureRegistrationFilter.hxx"
216 #endif // defined(ITK_USE_FFTWF) || defined(ITK_USE_FFTWD)