ITK  6.0.0
Insight Toolkit
itkDiffeomorphicDemonsRegistrationFilter.h
Go to the documentation of this file.
1/*=========================================================================
2 *
3 * Copyright NumFOCUS
4 *
5 * Licensed under the Apache License, Version 2.0 (the "License");
6 * you may not use this file except in compliance with the License.
7 * You may obtain a copy of the License at
8 *
9 * https://www.apache.org/licenses/LICENSE-2.0.txt
10 *
11 * Unless required by applicable law or agreed to in writing, software
12 * distributed under the License is distributed on an "AS IS" BASIS,
13 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 * See the License for the specific language governing permissions and
15 * limitations under the License.
16 *
17 *=========================================================================*/
18#ifndef itkDiffeomorphicDemonsRegistrationFilter_h
19#define itkDiffeomorphicDemonsRegistrationFilter_h
20
23
26
27namespace itk
28{
77template <typename TFixedImage, typename TMovingImage, typename TDisplacementField>
79 : public PDEDeformableRegistrationFilter<TFixedImage, TMovingImage, TDisplacementField>
80{
81public:
82 ITK_DISALLOW_COPY_AND_MOVE(DiffeomorphicDemonsRegistrationFilter);
83
89
91 itkNewMacro(Self);
92
94 itkOverrideGetNameOfClassMacro(DiffeomorphicDemonsRegistrationFilter);
95
97 using typename Superclass::FixedImageType;
98 using typename Superclass::FixedImagePointer;
99
101 using typename Superclass::MovingImageType;
102 using typename Superclass::MovingImagePointer;
103
105 using typename Superclass::DisplacementFieldType;
106 using typename Superclass::DisplacementFieldPointer;
107
109 using typename Superclass::FiniteDifferenceFunctionType;
110
113
118
119 static constexpr unsigned int ImageDimension = FixedImageType::ImageDimension;
120
125 virtual double
126 GetMetric() const;
127
128 const double &
129 GetRMSChange() const override;
130
131 virtual void
133
134 virtual GradientType
136
140 itkSetMacro(UseFirstOrderExp, bool);
141 itkGetConstMacro(UseFirstOrderExp, bool);
142 itkBooleanMacro(UseFirstOrderExp);
149 virtual void
151
152 virtual double
154
157 virtual void
159
160 virtual double
162
163protected:
166 void
167 PrintSelf(std::ostream & os, Indent indent) const override;
168
170 void
172
175 void
177
179 void
180 ApplyUpdate(const TimeStepType & dt) override;
181
182private:
190
193
197
199
201
204
206
213
215 FieldExponentiatorPointer m_Exponentiator{};
217 AdderPointer m_Adder{};
218 bool m_UseFirstOrderExp{ false };
219};
220} // end namespace itk
221
222#ifndef ITK_MANUAL_INSTANTIATION
223# include "itkDiffeomorphicDemonsRegistrationFilter.hxx"
224#endif
225
226#endif
Pixel-wise addition of two images.
Deformably register two images using a diffeomorphic demons algorithm.
virtual GradientType GetUseGradientType() const
typename MultiplyByConstantType::Pointer MultiplyByConstantPointer
void ApplyUpdate(const TimeStepType &dt) override
typename FiniteDifferenceFunctionType::TimeStepType TimeStepType
const DemonsRegistrationFunctionType * DownCastDifferenceFunctionType() const
typename FieldInterpolatorType::OutputType FieldInterpolatorOutputType
virtual double GetIntensityDifferenceThreshold() const
void PrintSelf(std::ostream &os, Indent indent) const override
virtual void SetUseGradientType(GradientType gtype)
~DiffeomorphicDemonsRegistrationFilter() override=default
virtual void SetIntensityDifferenceThreshold(double)
virtual double GetMaximumUpdateStepLength() const
typename DemonsRegistrationFunctionType::GradientEnum GradientType
typename FieldInterpolatorType::Pointer FieldInterpolatorPointer
typename FieldExponentiatorType::Pointer FieldExponentiatorPointer
const double & GetRMSChange() const override
DemonsRegistrationFunctionType * DownCastDifferenceFunctionType()
virtual void SetMaximumUpdateStepLength(double)
Fast implementation of the symmetric demons registration force.
Computes a diffeomorphic displacement field as the Lie group exponential of a vector field.
Control indentation during Print() invocation.
Definition: itkIndent.h:50
Light weight base class for most itk classes.
Pixel-wise multiplication of two images.
Deformably register two images using a PDE algorithm.
Warps an image using an input displacement field.
SmartPointer< Self > Pointer
The "itk" namespace contains all Insight Segmentation and Registration Toolkit (ITK) classes....