itkElasticBodySplineKernelTransform.h
Go to the documentation of this file.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
00108 virtual void ComputeG(const InputVectorType& landmarkVector, GMatrixType & gmatrix) const;
00109
00113 itkLegacyMacro( virtual const GMatrixType & ComputeG(const InputVectorType& landmarkVector) const );
00114
00118 TScalarType m_Alpha;
00119
00120 private:
00121 ElasticBodySplineKernelTransform(const Self&);
00122 void operator=(const Self&);
00123
00124 };
00125
00126 }
00127
00128
00129 #define ITK_TEMPLATE_ElasticBodySplineKernelTransform(_, EXPORT, x, y) namespace itk { \
00130 _(2(class EXPORT ElasticBodySplineKernelTransform< ITK_TEMPLATE_2 x >)) \
00131 namespace Templates { typedef ElasticBodySplineKernelTransform< ITK_TEMPLATE_2 x > \
00132 ElasticBodySplineKernelTransform##y; } \
00133 }
00134
00135 #if ITK_TEMPLATE_EXPLICIT
00136 # include "Templates/itkElasticBodySplineKernelTransform+-.h"
00137 #endif
00138
00139 #if ITK_TEMPLATE_TXX
00140 # include "itkElasticBodySplineKernelTransform.txx"
00141 #endif
00142
00143 #endif // __itkElasticBodySplineKernelTransform_h
00144