18 #ifndef itkBSplineBaseTransform_h
19 #define itkBSplineBaseTransform_h
33 template <
typename TParametersValueType =
double,
unsigned int VDimension = 3,
unsigned int VSplineOrder = 3>
49 static constexpr
unsigned int SpaceDimension = VDimension;
52 static constexpr
unsigned int SplineOrder = VSplineOrder;
58 using typename Superclass::ScalarType;
61 using typename Superclass::FixedParametersType;
62 using typename Superclass::ParametersType;
65 using typename Superclass::JacobianType;
66 using typename Superclass::JacobianPositionType;
67 using typename Superclass::InverseJacobianPositionType;
70 using typename Superclass::TransformCategoryEnum;
73 using typename Superclass::NumberOfParametersType;
171 GetParameters()
const override;
175 GetFixedParameters()
const override;
201 return this->m_CoefficientImages;
204 using typename Superclass::DerivativeType;
217 UpdateTransformParameters(
const DerivativeType & update, TParametersValueType factor = 1.0)
override;
239 static constexpr
unsigned int NumberOfWeights{ WeightsFunctionType::NumberOfWeights };
257 bool & inside)
const = 0;
259 #if !defined(ITK_LEGACY_REMOVE)
261 itkLegacyMacro(
unsigned long GetNumberOfWeights()
const) {
return m_WeightsFunction->GetNumberOfWeights(); }
266 using Superclass::TransformVector;
270 itkExceptionMacro(<<
"Method not applicable for deformable transform.");
279 itkExceptionMacro(<<
"Method not applicable for deformable transform. ");
284 using Superclass::TransformCovariantVector;
285 OutputCovariantVectorType
288 itkExceptionMacro(<<
"Method not applicable for deformable transform. ");
294 ComputeJacobianFromBSplineWeightsWithRespectToPosition(
const InputPointType &,
296 ParameterIndexArrayType &)
const;
299 ComputeJacobianWithRespectToParameters(
const InputPointType &, JacobianType &)
const override = 0;
304 itkExceptionMacro(<<
"ComputeJacobianWithRespectToPosition not yet implemented "
308 using Superclass::ComputeJacobianWithRespectToPosition;
311 NumberOfParametersType
312 GetNumberOfParameters()
const override = 0;
315 virtual NumberOfParametersType
316 GetNumberOfParametersPerDimension()
const = 0;
318 TransformCategoryEnum
321 return Self::TransformCategoryEnum::BSpline;
325 GetNumberOfAffectedWeights()
const;
336 return this->GetNumberOfParameters();
342 PrintSelf(std::ostream & os,
Indent indent)
const override;
348 itkSetObjectMacro(WeightsFunction, WeightsFunctionType);
349 itkGetModifiableObjectMacro(WeightsFunction, WeightsFunctionType);
359 SetFixedParametersFromTransformDomainInformation()
const;
363 SetFixedParametersGridSizeFromTransformDomainInformation()
const = 0;
367 SetFixedParametersGridOriginFromTransformDomainInformation()
const = 0;
371 SetFixedParametersGridSpacingFromTransformDomainInformation()
const = 0;
375 SetFixedParametersGridDirectionFromTransformDomainInformation()
const = 0;
379 SetCoefficientImageInformationFromFixedParameters() = 0;
383 InsideValidRegion(ContinuousIndexType &)
const = 0;
408 static CoefficientImageArray
409 ArrayOfImagePointerGeneratorHelper();
413 #ifndef ITK_MANUAL_INSTANTIATION
414 # include "itkBSplineBaseTransform.hxx"