18#ifndef itkGPUDemonsRegistrationFilter_h
19#define itkGPUDemonsRegistrationFilter_h
67template <
typename TFixedImage,
68 typename TMovingImage,
69 typename TDisplacementField,
147 bool m_UseMovingImageGradient{};
174 return "A Factory for GPUDemonsRegistrationFilter";
194#define OverrideDemonsRegistrationFilterTypeMacro(ipt, opt, dm) \
196 using InputImageType = GPUImage<ipt, dm>; \
197 using OutputImageType = GPUImage<opt, dm>; \
198 using VectorPixelType = Vector<float, dm>; \
199 using DisplacementFieldType = GPUImage<VectorPixelType, dm>; \
200 this->RegisterOverride( \
201 typeid(DemonsRegistrationFilter<InputImageType, OutputImageType, DisplacementFieldType>).name(), \
202 typeid(GPUDemonsRegistrationFilter<InputImageType, OutputImageType, DisplacementFieldType>).name(), \
203 "GPU Demons Registration Filter Override", \
205 CreateObjectFunction< \
206 GPUDemonsRegistrationFilter<InputImageType, OutputImageType, DisplacementFieldType>>::New()); \
208 ITK_MACROEND_NOOP_STATEMENT
239#ifndef ITK_MANUAL_INSTANTIATION
240# include "itkGPUDemonsRegistrationFilter.hxx"
Deformably register two images using the demons algorithm.
typename FiniteDifferenceFunctionType::TimeStepType TimeStepType
Object Factory implementation for GPUDemonsRegistrationFilter.
GPUDemonsRegistrationFilterFactory()
const char * GetITKSourceVersion() const override
const char * GetDescription() const override
static void RegisterOneFactory()
Deformably register two images using the demons algorithm with GPU.
typename GPUSuperclass::FiniteDifferenceFunctionType FiniteDifferenceFunctionType
typename GPUSuperclass::TimeStepType TimeStepType
GPUDemonsRegistrationFilter()
double GetIntensityDifferenceThreshold() const override
void InitializeIteration() override
TParentImageFilter CPUSuperclass
double GetMetric() const override
void ApplyUpdate(const TimeStepType &dt) override
void SetIntensityDifferenceThreshold(double) override
~GPUDemonsRegistrationFilter() override=default
void PrintSelf(std::ostream &os, Indent indent) const override
Control indentation during Print() invocation.
Light weight base class for most itk classes.
Create instances of classes using an object factory.
static bool RegisterFactory(ObjectFactoryBase *, InsertionPositionEnum where=InsertionPositionEnum::INSERT_AT_BACK, vcl_size_t position=0)
#define OverrideDemonsRegistrationFilterTypeMacro(ipt, opt, dm)
#define ITK_SOURCE_VERSION
The "itk" namespace contains all Insight Segmentation and Registration Toolkit (ITK) classes....