00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017 #ifndef __itkElasticBodySplineKernelTransform_h
00018 #define __itkElasticBodySplineKernelTransform_h
00019
00020 #include "itkKernelTransform.h"
00021
00022
00023 namespace itk
00024 {
00025
00038 template <class TScalarType = double,
00039 unsigned int NDimensions = 3>
00040 class ITK_EXPORT ElasticBodySplineKernelTransform :
00041 public KernelTransform< TScalarType, NDimensions>
00042 {
00043 public:
00045 typedef ElasticBodySplineKernelTransform Self;
00046 typedef KernelTransform< TScalarType,
00047 NDimensions> Superclass;
00048
00049 typedef SmartPointer<Self> Pointer;
00050 typedef SmartPointer<const Self> ConstPointer;
00051
00053 itkTypeMacro( ElasticBodySplineKernelTransform, KernelTransform );
00054
00056 itkNewMacro( Self );
00057
00059 typedef typename Superclass::ScalarType ScalarType;
00060
00062 typedef typename Superclass::ParametersType ParametersType;
00063
00065 typedef typename Superclass::JacobianType JacobianType;
00066
00068 itkStaticConstMacro(SpaceDimension, unsigned int,Superclass::SpaceDimension);
00069
00073 itkSetMacro( Alpha, TScalarType );
00074
00076 itkGetConstMacro( Alpha, TScalarType );
00077
00080 typedef typename Superclass::InputPointType InputPointType;
00081 typedef typename Superclass::OutputPointType OutputPointType;
00082 typedef typename Superclass::InputVectorType InputVectorType;
00083 typedef typename Superclass::OutputVectorType OutputVectorType;
00084 typedef typename Superclass::InputCovariantVectorType InputCovariantVectorType;
00085 typedef typename Superclass::OutputCovariantVectorType OutputCovariantVectorType;
00086
00087
00088 protected:
00089 ElasticBodySplineKernelTransform();
00090 virtual ~ElasticBodySplineKernelTransform();
00091 void PrintSelf(std::ostream& os, Indent indent) const;
00092
00095 typedef typename Superclass::GMatrixType GMatrixType;
00096
00107 virtual void ComputeG(const InputVectorType& landmarkVector, GMatrixType & gmatrix) const;
00108
00112 itkLegacyMacro( virtual const GMatrixType & ComputeG(const InputVectorType& landmarkVector) const );
00113
00117 TScalarType m_Alpha;
00118
00119 private:
00120 ElasticBodySplineKernelTransform(const Self&);
00121 void operator=(const Self&);
00122
00123 };
00124
00125 }
00126
00127
00128 #define ITK_TEMPLATE_ElasticBodySplineKernelTransform(_, EXPORT, x, y) namespace itk { \
00129 _(2(class EXPORT ElasticBodySplineKernelTransform< ITK_TEMPLATE_2 x >)) \
00130 namespace Templates { typedef ElasticBodySplineKernelTransform< ITK_TEMPLATE_2 x > \
00131 ElasticBodySplineKernelTransform##y; } \
00132 }
00133
00134 #if ITK_TEMPLATE_EXPLICIT
00135 # include "Templates/itkElasticBodySplineKernelTransform+-.h"
00136 #endif
00137
00138 #if ITK_TEMPLATE_TXX
00139 # include "itkElasticBodySplineKernelTransform.txx"
00140 #endif
00141
00142 #endif // __itkElasticBodySplineKernelTransform_h
00143