18 #ifndef __itkBSplineBaseTransform_h
19 #define __itkBSplineBaseTransform_h
33 template <
class TScalarType = double,
unsigned int NDimensions = 3,
34 unsigned int VSplineOrder = 3>
36 public Transform<TScalarType, NDimensions, NDimensions>
49 itkStaticConstMacro( SpaceDimension,
unsigned int, NDimensions );
52 itkStaticConstMacro( SplineOrder,
unsigned int, VSplineOrder );
131 virtual void SetFixedParameters(
const ParametersType & parameters ) = 0;
190 return this->m_CoefficientImages;
205 virtual void UpdateTransformParameters(
const DerivativeType & update, TScalarType factor = 1.0 );
221 itkGetStaticConstMacro( SpaceDimension ),
242 unsigned long GetNumberOfWeights()
const
244 return m_WeightsFunction->GetNumberOfWeights();
249 using Superclass::TransformVector;
252 itkExceptionMacro( <<
"Method not applicable for deformable transform." );
261 itkExceptionMacro( <<
"Method not applicable for deformable transform. " );
268 using Superclass::TransformCovariantVector;
272 itkExceptionMacro( <<
"Method not applicable for deformable transfrom. " );
278 void ComputeJacobianFromBSplineWeightsWithRespectToPosition(
279 const InputPointType &, WeightsType &, ParameterIndexArrayType & )
const;
281 virtual void ComputeJacobianWithRespectToParameters(
const InputPointType &, JacobianType & )
const = 0;
285 itkExceptionMacro( <<
"ComputeJacobianWithRespectToPosition not yet implemented "
286 "for " << this->GetNameOfClass() );
290 virtual NumberOfParametersType GetNumberOfParameters()
const = 0;
293 virtual NumberOfParametersType GetNumberOfParametersPerDimension()
const = 0;
300 virtual bool IsLinear()
const
305 unsigned int GetNumberOfAffectedWeights()
const;
315 void PrintSelf( std::ostream & os,
Indent indent )
const;
331 void SetFixedParametersFromTransformDomainInformation()
const;
334 virtual void SetFixedParametersGridSizeFromTransformDomainInformation()
const = 0;
337 virtual void SetFixedParametersGridOriginFromTransformDomainInformation()
const = 0;
340 virtual void SetFixedParametersGridSpacingFromTransformDomainInformation()
const = 0;
343 virtual void SetFixedParametersGridDirectionFromTransformDomainInformation()
const = 0;
346 virtual void SetCoefficientImageInformationFromFixedParameters() =0;
379 void operator=(
const Self & );
386 #define ITK_TEMPLATE_BSplineBaseTransform(_, EXPORT, TypeX, TypeY) \
389 _( 3 ( class EXPORT BSplineBaseTransform<ITK_TEMPLATE_3 TypeX> ) ) \
390 namespace Templates \
392 typedef BSplineBaseTransform<ITK_TEMPLATE_3 TypeX> \
393 BSplineBaseTransform##TypeY; \
397 #if ITK_TEMPLATE_EXPLICIT
406 #include "Templates/itkBSplineBaseTransform+-.h"
410 #include "itkBSplineBaseTransform.hxx"