60 static constexpr unsigned int NumberOfFixedParameters = NDimensions * (NDimensions + 3);
63 using typename Superclass::ParametersType;
64 using typename Superclass::FixedParametersType;
65 using typename Superclass::ParametersValueType;
66 using typename Superclass::NumberOfParametersType;
67 using typename Superclass::DerivativeType;
68 using typename Superclass::JacobianType;
69 using typename Superclass::ScalarType;
70 using typename Superclass::InputPointType;
71 using typename Superclass::OutputPointType;
72 using typename Superclass::InputVectorType;
73 using typename Superclass::OutputVectorType;
74 using typename Superclass::InputVnlVectorType;
75 using typename Superclass::OutputVnlVectorType;
76 using typename Superclass::InputCovariantVectorType;
77 using typename Superclass::OutputCovariantVectorType;
78 using typename Superclass::TransformCategoryEnum;
90 template <
template <
class,
unsigned,
unsigned>
class TBSplineDeformableTransform>
98 return TBSplineDeformableTransform<TScalarType, NDimensions, 1>::New();
102 return TBSplineDeformableTransform<TScalarType, NDimensions, 2>::New();
106 return TBSplineDeformableTransform<TScalarType, NDimensions, 3>::New();
109 itkGenericExceptionMacro(
"ERROR: The provided spline order (" << splineOrder <<
") is not supported.");
116 return m_SplineOrder;
190 const ParametersType &
194 const FixedParametersType &
198 using PixelType =
typename ParametersType::ValueType;
206 return this->m_CoefficientImages;
266 itkExceptionMacro(
"Method not applicable for deformable transform.");
276 itkExceptionMacro(
"Method not applicable for deformable transform. ");
283 OutputCovariantVectorType
286 itkExceptionMacro(
"Method not applicable for deformable transform. ");
291 NumberOfParametersType
295 virtual NumberOfParametersType
315 TransformCategoryEnum
318 return TransformCategoryEnum::BSpline;
325 NumberOfParametersType
336 PrintSelf(std::ostream & os, Indent indent)
const override;
362 const unsigned m_SplineOrder{};
365 using Superclass::TransformVector;
366 using Superclass::TransformCovariantVector;
385 FixedArray<ScalarType, NDimensions> m_PointToIndexMatrixDiagonal{};
386 FixedArray<ScalarType, NDimensions * NDimensions> m_PointToIndexMatrixDiagonalProducts{};
388 bool m_PointToIndexMatrixIsDiagonal{};
393 unsigned long m_Offset{};
398 const ParametersType * m_InputParametersPointer{};
404 typename JacobianImageType::Pointer m_JacobianImage[NDimensions]{};
415 ParametersType m_InternalParametersBuffer{};