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 itkGetMacro( 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 const GMatrixType & ComputeG(const InputVectorType& x) const;
00108
00112 TScalarType m_Alpha;
00113
00114 private:
00115 ElasticBodySplineKernelTransform(const Self&);
00116 void operator=(const Self&);
00117
00118 };
00119
00120 }
00121
00122
00123 #define ITK_TEMPLATE_ElasticBodySplineKernelTransform(_, EXPORT, x, y) namespace itk { \
00124 _(2(class EXPORT ElasticBodySplineKernelTransform< ITK_TEMPLATE_2 x >)) \
00125 namespace Templates { typedef ElasticBodySplineKernelTransform< ITK_TEMPLATE_2 x > \
00126 ElasticBodySplineKernelTransform##y; } \
00127 }
00128
00129 #if ITK_TEMPLATE_EXPLICIT
00130 # include "Templates/itkElasticBodySplineKernelTransform+-.h"
00131 #endif
00132
00133 #if ITK_TEMPLATE_TXX
00134 # include "itkElasticBodySplineKernelTransform.txx"
00135 #endif
00136
00137 #endif // __itkElasticBodySplineKernelTransform_h
00138