go home Home | Main Page | Topics | Namespace List | Class Hierarchy | Alphabetical List | Data Structures | File List | Namespace Members | Data Fields | Globals | Related Pages
Loading...
Searching...
No Matches
itkCyclicBSplineDeformableTransform.h
Go to the documentation of this file.
1/*=========================================================================
2 *
3 * Copyright UMC Utrecht and contributors
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 * http://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 itkCyclicBSplineDeformableTransform_h
19#define itkCyclicBSplineDeformableTransform_h
20
22#include "itkImage.h"
23#include "itkImageRegion.h"
29
30namespace itk
31{
32
40template <typename TScalarType = double, // Data type for scalars
41 unsigned int NDimensions = 3, // Number of dimensions
42 unsigned int VSplineOrder = 3>
43// Spline order
44class ITK_TEMPLATE_EXPORT CyclicBSplineDeformableTransform
45 : public AdvancedBSplineDeformableTransform<TScalarType, NDimensions, VSplineOrder>
46{
47public:
49
53 using Pointer = SmartPointer<Self>;
54 using ConstPointer = SmartPointer<const Self>;
55
57 itkNewMacro(Self);
58
61
63 itkStaticConstMacro(SpaceDimension, unsigned int, NDimensions);
64
66 itkStaticConstMacro(SplineOrder, unsigned int, VSplineOrder);
67
68 using typename Superclass::JacobianType;
72 using typename Superclass::SpatialHessianType;
74 using typename Superclass::InternalMatrixType;
75 using typename Superclass::ParametersType;
76 using typename Superclass::NumberOfParametersType;
77
79 using PixelType = typename ParametersType::ValueType;
80 using ImageType = Image<PixelType, Self::SpaceDimension>;
81 using ImagePointer = typename ImageType::Pointer;
82
83 using typename Superclass::RegionType;
84 using IndexType = typename RegionType::IndexType;
85 using SizeType = typename RegionType::SizeType;
86 using SpacingType = typename ImageType::SpacingType;
87 using DirectionType = typename ImageType::DirectionType;
88 using OriginType = typename ImageType::PointType;
89 using GridOffsetType = typename RegionType::IndexType;
90 using typename Superclass::InputPointType;
91 using typename Superclass::OutputPointType;
92 using typename Superclass::WeightsType;
95 using typename Superclass::ScalarType;
96 using typename Superclass::JacobianImageType;
97 using typename Superclass::JacobianPixelType;
101 BSplineInterpolationWeightFunction2<ScalarType, Self::SpaceDimension - 1, VSplineOrder>;
103
105 void
106 SetGridRegion(const RegionType & region) override;
107
109 OutputPointType
110 TransformPoint(const InputPointType & point) const override;
111
113 virtual void
114 GetJacobian(const InputPointType & inputPoint, WeightsType & weights, ParameterIndexArrayType & indices) const;
115
117 void
118 GetSpatialJacobian(const InputPointType & inputPoint, SpatialJacobianType & sj) const override;
119
120protected:
123
124 void
126 const RegionType & supportRegion) const override;
127
129 bool
130 InsideValidRegion(const ContinuousIndexType & index) const override;
131
133 virtual void
134 SplitRegion(const RegionType & imageRegion,
135 const RegionType & inRegion,
136 RegionType & outRegion1,
137 RegionType & outRegion2) const;
138
139private:
140 // Private using-declaration, to avoid `-Woverloaded-virtual` warnings from GCC (GCC 11.4) or clang (macos-12).
142};
143
144} // namespace itk
145
146#ifndef ITK_MANUAL_INSTANTIATION
147# include "itkCyclicBSplineDeformableTransform.hxx"
148#endif
149
150#endif /* itkCyclicBSplineDeformableTransform_h */
Matrix< ScalarType, OutputSpaceDimension, InputSpaceDimension > SpatialJacobianType
BSplineInterpolationWeightFunctionBase< TScalarType, NDimensions, VSplineOrder > WeightFunctionBaseType
BSplineInterpolationWeightFunction2< ScalarType, Self::SpaceDimension, VSplineOrder > WeightsFunctionType
void GetJacobian(const InputPointType &inputPoint, JacobianType &j, NonZeroJacobianIndicesType &nzji) const override
typename SpatialJacobianType::InternalMatrixType InternalMatrixType
FixedArray< Matrix< ScalarType, InputSpaceDimension, InputSpaceDimension >, OutputSpaceDimension > SpatialHessianType
Matrix< ScalarType, OutputSpaceDimension, InputSpaceDimension > SpatialJacobianType
Returns the weights over the support region used for B-spline interpolation/reconstruction.
Image< PixelType, Self::SpaceDimension > ImageType
ImageRegion< Self::SpaceDimension > RegionType
AdvancedBSplineDeformableTransform< TScalarType, NDimensions, VSplineOrder > Superclass
itkStaticConstMacro(SpaceDimension, unsigned int, NDimensions)
BSplineInterpolationWeightFunction2< ScalarType, Self::SpaceDimension - 1, VSplineOrder > RedWeightsFunctionType
itkStaticConstMacro(SplineOrder, unsigned int, VSplineOrder)
itkOverrideGetNameOfClassMacro(CyclicBSplineDeformableTransform)
typename RedWeightsFunctionType::ContinuousIndexType RedContinuousIndexType
OutputPointType TransformPoint(const InputPointType &point) const override
virtual void SplitRegion(const RegionType &imageRegion, const RegionType &inRegion, RegionType &outRegion1, RegionType &outRegion2) const
Array< unsigned long > ParameterIndexArrayType
virtual void GetJacobian(const InputPointType &inputPoint, WeightsType &weights, ParameterIndexArrayType &indices) const
~CyclicBSplineDeformableTransform() override=default
void SetGridRegion(const RegionType &region) override
bool InsideValidRegion(const ContinuousIndexType &index) const override
void GetSpatialJacobian(const InputPointType &inputPoint, SpatialJacobianType &sj) const override
void ComputeNonZeroJacobianIndices(NonZeroJacobianIndicesType &nonZeroJacobianIndices, const RegionType &supportRegion) const override
ITK_DISALLOW_COPY_AND_MOVE(CyclicBSplineDeformableTransform)


Generated on 1774142652 for elastix by doxygen 1.15.0 elastix logo