31 #ifndef __itkAdvancedTransform_h
32 #define __itkAdvancedTransform_h
34 #include "itkTransform.h"
35 #include "itkMatrix.h"
36 #include "itkFixedArray.h"
79 template <
class TScalarType,
80 unsigned int NInputDimensions = 3,
81 unsigned int NOutputDimensions = 3>
83 :
public Transform< TScalarType, NInputDimensions, NOutputDimensions >
88 typedef Transform< TScalarType,
101 itkStaticConstMacro( InputSpaceDimension,
unsigned int, NInputDimensions );
102 itkStaticConstMacro( OutputSpaceDimension,
unsigned int, NOutputDimensions );
111 typedef typename Superclass
113 typedef typename Superclass
134 InputSpaceDimension, InputSpaceDimension >,
143 itkGetConstMacro( HasNonZeroSpatialHessian,
bool );
144 itkGetConstMacro( HasNonZeroJacobianOfSpatialHessian,
bool );
172 virtual void GetJacobian(
203 virtual void GetSpatialJacobian(
211 itkExceptionMacro( <<
"This ITK4 function is currently not used in elastix." );
216 itkExceptionMacro( <<
"This ITK4 function is currently not used in elastix." );
235 virtual void GetSpatialHessian(
236 const InputPointType & ipp,
237 SpatialHessianType & sh )
const = 0;
245 virtual void GetJacobianOfSpatialJacobian(
246 const InputPointType & ipp,
247 JacobianOfSpatialJacobianType & jsj,
248 NonZeroJacobianIndicesType & nonZeroJacobianIndices )
const = 0;
253 virtual void GetJacobianOfSpatialJacobian(
254 const InputPointType & ipp,
255 SpatialJacobianType & sj,
256 JacobianOfSpatialJacobianType & jsj,
257 NonZeroJacobianIndicesType & nonZeroJacobianIndices )
const = 0;
265 virtual void GetJacobianOfSpatialHessian(
266 const InputPointType & ipp,
267 JacobianOfSpatialHessianType & jsh,
268 NonZeroJacobianIndicesType & nonZeroJacobianIndices )
const = 0;
273 virtual void GetJacobianOfSpatialHessian(
274 const InputPointType & ipp,
275 SpatialHessianType & sh,
276 JacobianOfSpatialHessianType & jsh,
277 NonZeroJacobianIndicesType & nonZeroJacobianIndices )
const = 0;
284 bool m_HasNonZeroSpatialHessian;
290 void operator=(
const Self&);
297 #define ITK_TEMPLATE_AdvancedTransform(_, EXPORT, x, y) namespace itk { \
298 _(3(class EXPORT AdvancedTransform< ITK_TEMPLATE_3 x >)) \
299 namespace Templates { typedef AdvancedTransform< ITK_TEMPLATE_3 x > AdvancedTransform##y; } \
302 #if ITK_TEMPLATE_EXPLICIT
303 # include "Templates/itkAdvancedTransform+-.h"
307 # include "itkAdvancedTransform.txx"