14 #ifndef __itkMultiBSplineDeformableTransformWithNormal_h
15 #define __itkMultiBSplineDeformableTransformWithNormal_h
18 #include "itkNearestNeighborInterpolateImageFunction.h"
35 class TScalarType =
double,
36 unsigned int NDimensions = 3,
37 unsigned int VSplineOrder = 3 >
39 class MultiBSplineDeformableTransformWithNormal :
40 public AdvancedTransform< TScalarType, NDimensions, NDimensions >
91 itkGetStaticConstMacro( SpaceDimension ),
192 typedef ImageRegion< itkGetStaticConstMacro( SpaceDimension ) >
RegionType;
222 typedef Image<
unsigned char,
226 typedef itk::NearestNeighborInterpolateImageFunction<
231 typedef Vector< TScalarType, itkGetStaticConstMacro( SpaceDimension ) >
VectorType;
232 typedef Vector< VectorType, itkGetStaticConstMacro( SpaceDimension ) >
BaseType;
233 typedef Image< VectorType, itkGetStaticConstMacro( SpaceDimension ) >
ImageVectorType;
235 typedef Image< BaseType, itkGetStaticConstMacro( SpaceDimension ) >
ImageBaseType;
243 itkGetConstMacro( NbLabels,
unsigned char );
248 itkGetMacro( LocalBases, ImageBaseType * );
258 itkExceptionMacro( <<
"Method not applicable for deformable transform." );
268 itkExceptionMacro( <<
"Method not applicable for deformable transform. " );
279 itkExceptionMacro( <<
"Method not applicable for deformable transform. " );
293 return m_Trans[ 0 ]->GetValidRegion();
302 virtual bool IsLinear(
void )
const {
return false; }
307 return m_Trans[ 0 ]->m_WeightsFunction->GetNumberOfWeights();
313 return m_Trans[ 0 ]->m_WeightsFunction->GetNumberOfWeights();
319 return m_Trans[ 0 ]->m_WeightsFunction->GetNumberOfWeights() * SpaceDimension;
352 OutputPointType
TransformPoint(
const InputPointType & point )
const;
359 const InputPointType & ipp,
361 NonZeroJacobianIndicesType & )
const;
365 const InputPointType & ipp,
366 SpatialJacobianType & sj )
const;
369 const InputPointType & ipp,
370 JacobianOfSpatialJacobianType & jsj,
371 NonZeroJacobianIndicesType & nonZeroJacobianIndices )
const;
374 const InputPointType &,
375 SpatialJacobianType &,
376 JacobianOfSpatialJacobianType &,
377 NonZeroJacobianIndicesType & )
const;
381 const InputPointType & ipp,
382 SpatialHessianType & sh )
const;
385 const InputPointType & ipp,
386 JacobianOfSpatialHessianType & jsh,
387 NonZeroJacobianIndicesType & nonZeroJacobianIndices )
const
389 itkExceptionMacro( <<
"ERROR: GetJacobianOfSpatialHessian() not yet implemented "
390 <<
"in the MultiBSplineDeformableTransformWithNormal class." );
395 const InputPointType &,
396 SpatialHessianType &,
397 JacobianOfSpatialHessianType &,
398 NonZeroJacobianIndicesType & )
const;
403 virtual void PrintSelf( std::ostream & os, Indent indent )
const;
479 itkGetStaticConstMacro( SpaceDimension ),
486 std::vector< typename TransformType::Pointer >
m_Trans;
498 void PointToLabel(
const InputPointType & p,
int & l )
const;
504 #ifndef ITK_MANUAL_INSTANTIATION
505 #include "itkMultiBSplineDeformableTransformWithNormal.hxx"
508 #endif // end __itkMultiBSplineDeformableTransformWithNormal_h
Superclass::WeightsType WeightsType
Returns the weights over the support region used for B-spline interpolation/reconstruction.