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 );
145 void SetIdentity(
void );
161 {
return this->m_CoefficientImage; }
174 virtual void SetCoefficientImage( ImagePointer images[] );
177 typedef ImageRegion< itkGetStaticConstMacro( SpaceDimension ) >
RegionType;
187 virtual void SetGridRegion(
const RegionType& region ) = 0;
192 virtual void SetGridSpacing(
const SpacingType & spacing );
197 virtual void SetGridDirection(
const DirectionType & direction );
202 virtual void SetGridOrigin(
const OriginType& origin );
214 itkExceptionMacro( <<
"Method not applicable for deformable transform." );
223 itkExceptionMacro( <<
"Method not applicable for deformable transform. ");
233 itkExceptionMacro( <<
"Method not applicable for deformable transform. ");
238 virtual NumberOfParametersType GetNumberOfParameters(
void )
const;
241 virtual NumberOfParametersType GetNumberOfParametersPerDimension(
void )
const;
244 itkGetConstReferenceMacro( ValidRegion, RegionType );
251 virtual bool IsLinear(
void )
const {
return false; }
253 virtual unsigned int GetNumberOfAffectedWeights(
void )
const = 0;
255 virtual unsigned long GetNumberOfNonZeroJacobianIndices(
void )
const = 0;
264 virtual void PrintSelf( std::ostream &os, Indent indent )
const;
270 void WrapAsImages(
void );
273 void TransformPointToContinuousGridIndex(
276 virtual void ComputeNonZeroJacobianIndices(
320 typename JacobianImageType::Pointer m_JacobianImage[ NDimensions ];
333 void UpdateGridOffsetTable(
void );
337 void operator=(
const Self&);
345 #define ITK_TEMPLATE_AdvancedBSplineDeformableTransformBase(_, EXPORT, x, y) namespace itk { \
346 _(3(class EXPORT AdvancedBSplineDeformableTransformBase< ITK_TEMPLATE_3 x >)) \
347 namespace Templates { typedef AdvancedBSplineDeformableTransformBase< ITK_TEMPLATE_3 x > \
348 AdvancedBSplineDeformableTransformBase##y; } \
351 #if ITK_TEMPLATE_EXPLICIT
352 # include "Templates/itkAdvancedBSplineDeformableTransformBase+-.h"
356 # include "itkAdvancedBSplineDeformableTransformBase.txx"