ITK  6.0.0
Insight Toolkit
itkBSplineSyNImageRegistrationMethod.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 itkBSplineSyNImageRegistrationMethod_h
19#define itkBSplineSyNImageRegistrationMethod_h
20
22
24
25namespace itk
26{
27
45template <typename TFixedImage,
46 typename TMovingImage,
47 typename TOutputTransform =
48 BSplineSmoothingOnUpdateDisplacementFieldTransform<double, TFixedImage::ImageDimension>,
49 typename TVirtualImage = TFixedImage,
50 typename TPointSet = PointSet<unsigned int, TFixedImage::ImageDimension>>
51class ITK_TEMPLATE_EXPORT BSplineSyNImageRegistrationMethod
52 : public SyNImageRegistrationMethod<TFixedImage, TMovingImage, TOutputTransform, TVirtualImage, TPointSet>
53{
54public:
55 ITK_DISALLOW_COPY_AND_MOVE(BSplineSyNImageRegistrationMethod);
56
62
64 itkNewMacro(Self);
65
67 static constexpr unsigned int ImageDimension = TFixedImage::ImageDimension;
68
70 itkOverrideGetNameOfClassMacro(BSplineSyNImageRegistrationMethod);
71
73 using FixedImageType = TFixedImage;
75 using typename Superclass::FixedImagesContainerType;
76 using MovingImageType = TMovingImage;
78 using typename Superclass::MovingImagesContainerType;
79
80 using typename Superclass::PointSetType;
81 using typename Superclass::PointSetsContainerType;
82
84 using typename Superclass::ImageMetricType;
87
88 using typename Superclass::ImageMaskSpatialObjectType;
90 using typename Superclass::FixedImageMaskType;
92 using typename Superclass::FixedImageMasksContainerType;
93 using typename Superclass::MovingImageMaskType;
95 using typename Superclass::MovingImageMasksContainerType;
96
97 using VirtualImageType = typename Superclass::VirtualImageType;
98 using typename Superclass::VirtualImageBaseType;
99 using typename Superclass::VirtualImageBaseConstPointer;
100
101 using typename Superclass::MultiMetricType;
102 using typename Superclass::MetricType;
104 using typename Superclass::PointSetMetricType;
105
106 using typename Superclass::NumberOfIterationsArrayType;
107
108 using typename Superclass::InitialTransformType;
109 using OutputTransformType = TOutputTransform;
111 using RealType = typename OutputTransformType::ScalarType;
112 using DerivativeType = typename OutputTransformType::DerivativeType;
113 using DerivativeValueType = typename DerivativeType::ValueType;
114 using DisplacementFieldType = typename OutputTransformType::DisplacementFieldType;
116 using DisplacementVectorType = typename DisplacementFieldType::PixelType;
117
122
123 using typename Superclass::CompositeTransformType;
124 using typename Superclass::DisplacementFieldTransformType;
125 using typename Superclass::DisplacementFieldTransformPointer;
127
128 using typename Superclass::DecoratedOutputTransformType;
130
131protected:
134
136 void
138
139 void
141
145 const TransformBaseType *,
148 const TransformBaseType *,
151 MeasureType &) override;
154 const ArrayType &,
155 const WeightedMaskImageType *,
156 const BSplinePointSetType *);
157};
158} // end namespace itk
159
160#ifndef ITK_MANUAL_INSTANTIATION
161# include "itkBSplineSyNImageRegistrationMethod.hxx"
162#endif
163
164#endif
Interface method for the performing greedy B-spline SyN image registration.
typename CompositeTransformType::TransformType TransformBaseType
typename BSplineFilterType::InputPointSetType BSplinePointSetType
typename ImageMaskSpatialObjectType::ImageType MaskImageType
typename ImageMaskSpatialObjectType::ImageType FixedMaskImageType
typename OutputTransformType::ScalarType RealType
typename OutputTransformType::DerivativeType DerivativeType
virtual DisplacementFieldPointer BSplineSmoothDisplacementField(const DisplacementFieldType *, const ArrayType &, const WeightedMaskImageType *, const BSplinePointSetType *)
DisplacementFieldPointer ComputeUpdateField(const FixedImagesContainerType, const PointSetsContainerType, const TransformBaseType *, const MovingImagesContainerType, const PointSetsContainerType, const TransformBaseType *, const FixedImageMasksContainerType, const MovingImageMasksContainerType, MeasureType &) override
typename ImageMaskSpatialObjectType::ImageType MovingMaskImageType
typename Superclass::VirtualImageType VirtualImageType
typename OutputTransformType::DisplacementFieldType DisplacementFieldType
typename BSplineFilterType::RealImageType WeightedMaskImageType
typename OutputTransformType::Pointer OutputTransformPointer
~BSplineSyNImageRegistrationMethod() override=default
typename DisplacementFieldType::Pointer DisplacementFieldPointer
void InitializeRegistrationAtEachLevel(const SizeValueType) override
typename DisplacementFieldType::PixelType DisplacementVectorType
typename DecoratedOutputTransformType::Pointer DecoratedOutputTransformPointer
typename Superclass::TransformType TransformType
Class which takes a dense displacement field image and/or a set of points with associated displacemen...
Templated n-dimensional image class.
Definition: itkImage.h:89
Light weight base class for most itk classes.
Interface method for the performing greedy SyN image registration.
SmartPointer< Self > Pointer
The "itk" namespace contains all Insight Segmentation and Registration Toolkit (ITK) classes....
unsigned long SizeValueType
Definition: itkIntTypes.h:86