18 #ifndef itkBSplineBaseTransform_h
19 #define itkBSplineBaseTransform_h
33 template<
typename TParametersValueType=double,
34 unsigned int NDimensions = 3,
35 unsigned int VSplineOrder = 3>
37 public Transform<TParametersValueType, NDimensions, NDimensions>
52 static constexpr
unsigned int SpaceDimension = NDimensions;
55 static constexpr
unsigned int SplineOrder = VSplineOrder;
156 void SetParametersByValue(
const ParametersType & parameters )
override;
196 return this->m_CoefficientImages;
211 void UpdateTransformParameters(
const DerivativeType & update, TParametersValueType factor = 1.0 )
override;
227 Self::SpaceDimension ,
250 return m_WeightsFunction->GetNumberOfWeights();
255 using Superclass::TransformVector;
258 itkExceptionMacro( <<
"Method not applicable for deformable transform." );
266 itkExceptionMacro( <<
"Method not applicable for deformable transform. " );
271 using Superclass::TransformCovariantVector;
275 itkExceptionMacro( <<
"Method not applicable for deformable transform. " );
280 void ComputeJacobianFromBSplineWeightsWithRespectToPosition(
281 const InputPointType &, WeightsType &, ParameterIndexArrayType & )
const;
283 void ComputeJacobianWithRespectToParameters(
const InputPointType &, JacobianType & )
const override = 0;
287 itkExceptionMacro( <<
"ComputeJacobianWithRespectToPosition not yet implemented "
288 "for " << this->GetNameOfClass() );
290 using Superclass::ComputeJacobianWithRespectToPosition;
293 NumberOfParametersType GetNumberOfParameters()
const override = 0;
296 virtual NumberOfParametersType GetNumberOfParametersPerDimension()
const = 0;
300 return Self::BSpline;
303 unsigned int GetNumberOfAffectedWeights()
const;
313 return this->GetNumberOfParameters();
318 void PrintSelf( std::ostream & os,
Indent indent )
const override;
324 itkSetObjectMacro( WeightsFunction, WeightsFunctionType );
325 itkGetModifiableObjectMacro(WeightsFunction, WeightsFunctionType );
333 void SetFixedParametersFromTransformDomainInformation()
const;
336 virtual void SetFixedParametersGridSizeFromTransformDomainInformation()
const = 0;
339 virtual void SetFixedParametersGridOriginFromTransformDomainInformation()
const = 0;
342 virtual void SetFixedParametersGridSpacingFromTransformDomainInformation()
const = 0;
345 virtual void SetFixedParametersGridDirectionFromTransformDomainInformation()
const = 0;
348 virtual void SetCoefficientImageInformationFromFixedParameters() =0;
351 virtual bool InsideValidRegion( ContinuousIndexType & )
const = 0;
380 #ifndef ITK_MANUAL_INSTANTIATION
381 #include "itkBSplineBaseTransform.hxx"
Light weight base class for most itk classes.
An image region represents a structured region of data.
A templated class holding a n-Dimensional vector.
ImageBaseType::SizeType SizeType
ImageBaseType::DirectionType DirectionType
ImageBaseType::IndexType IndexType
typename Superclass::SpacingType SpacingType
A templated class holding a point in n-Dimensional image space.
Control indentation during Print() invocation.
ImageBaseType::PointType PointType
A templated class holding a geometric point in n-Dimensional space.
Returns the weights over the support region used for B-spline interpolation/reconstruction.
A templated class holding a n-Dimensional covariant vector.
Templated n-dimensional image class.