00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017 #ifndef __itkElasticBodyReciprocalSplineKernelTransform_h
00018 #define __itkElasticBodyReciprocalSplineKernelTransform_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 ElasticBodyReciprocalSplineKernelTransform :
00041 public KernelTransform< TScalarType, NDimensions>
00042 {
00043 public:
00045 typedef ElasticBodyReciprocalSplineKernelTransform Self;
00046 typedef KernelTransform< TScalarType,
00047 NDimensions> Superclass;
00048
00049 typedef SmartPointer<Self> Pointer;
00050 typedef SmartPointer<const Self> ConstPointer;
00051
00053 itkTypeMacro( ElasticBodyReciprocalSplineKernelTransform, 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 ElasticBodyReciprocalSplineKernelTransform();
00090 virtual ~ElasticBodyReciprocalSplineKernelTransform();
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
00115 TScalarType m_Alpha;
00116
00117 private:
00118 ElasticBodyReciprocalSplineKernelTransform(const Self&);
00119 void operator=(const Self&);
00120
00121 };
00122
00123 }
00124
00125
00126 #define ITK_TEMPLATE_ElasticBodyReciprocalSplineKernelTransform(_, EXPORT, x, y) namespace itk { \
00127 _(2(class EXPORT ElasticBodyReciprocalSplineKernelTransform< ITK_TEMPLATE_2 x >)) \
00128 namespace Templates { typedef ElasticBodyReciprocalSplineKernelTransform< ITK_TEMPLATE_2 x > \
00129 ElasticBodyReciprocalSplineKernelTransform##y; } \
00130 }
00131
00132 #if ITK_TEMPLATE_EXPLICIT
00133 # include "Templates/itkElasticBodyReciprocalSplineKernelTransform+-.h"
00134 #endif
00135
00136 #if ITK_TEMPLATE_TXX
00137 # include "itkElasticBodyReciprocalSplineKernelTransform.txx"
00138 #endif
00139
00140 #endif // __itkElasticBodyReciprocalSplineKernelTransform_h
00141