15 #ifndef __itkAdvancedBSplineDeformableTransformBase_h
16 #define __itkAdvancedBSplineDeformableTransformBase_h
20 #include "itkImageRegion.h"
37 class TScalarType =
double,
38 unsigned int NDimensions = 3 >
54 itkStaticConstMacro( SpaceDimension,
unsigned int, NDimensions );
144 void SetIdentity(
void );
160 {
return this->m_CoefficientImage; }
173 virtual void SetCoefficientImage( ImagePointer images[] );
176 typedef ImageRegion< itkGetStaticConstMacro( SpaceDimension ) >
RegionType;
186 virtual void SetGridRegion(
const RegionType& region ) = 0;
191 virtual void SetGridSpacing(
const SpacingType & spacing );
196 virtual void SetGridDirection(
const DirectionType & direction );
201 virtual void SetGridOrigin(
const OriginType& origin );
213 itkExceptionMacro( <<
"Method not applicable for deformable transform." );
222 itkExceptionMacro( <<
"Method not applicable for deformable transform. ");
232 itkExceptionMacro( <<
"Method not applicable for deformable transform. ");
237 virtual unsigned int GetNumberOfParameters(
void )
const;
240 virtual unsigned int GetNumberOfParametersPerDimension(
void )
const;
243 itkGetConstReferenceMacro( ValidRegion, RegionType );
250 virtual bool IsLinear(
void )
const {
return false; }
252 virtual unsigned int GetNumberOfAffectedWeights(
void )
const = 0;
254 virtual unsigned long GetNumberOfNonZeroJacobianIndices(
void )
const = 0;
263 virtual void PrintSelf( std::ostream &os, Indent indent )
const;
269 void WrapAsImages(
void );
272 void TransformPointToContinuousGridIndex(
275 virtual void ComputeNonZeroJacobianIndices(
319 typename JacobianImageType::Pointer m_JacobianImage[ NDimensions ];
332 void UpdateGridOffsetTable(
void );
336 void operator=(
const Self&);
344 #define ITK_TEMPLATE_AdvancedBSplineDeformableTransformBase(_, EXPORT, x, y) namespace itk { \
345 _(3(class EXPORT AdvancedBSplineDeformableTransformBase< ITK_TEMPLATE_3 x >)) \
346 namespace Templates { typedef AdvancedBSplineDeformableTransformBase< ITK_TEMPLATE_3 x > \
347 AdvancedBSplineDeformableTransformBase##y; } \
350 #if ITK_TEMPLATE_EXPLICIT
351 # include "Templates/itkAdvancedBSplineDeformableTransformBase+-.h"
355 # include "itkAdvancedBSplineDeformableTransformBase.txx"