Main Page | Namespace List | Class Hierarchy | Class List | Directories | File List | Namespace Members | Class Members

mitkPointSetKernelTransformEstimator.h

00001 /*=========================================================================
00002 
00003   Program:   3DMed
00004   Date:      $Date: 2014-02-25 18:30:00 +0800 $
00005   Version:   $Version: 4.6.0 $
00006   Copyright: MIPG, Institute of Automation, Chinese Academy of Sciences
00007 
00008 =========================================================================*/
00009 
00010 
00011 #ifndef __mitkPointSetKernelTransformEstimator_h
00012 #define __mitkPointSetKernelTransformEstimator_h
00013 
00014 #include "mitkPointSetEstimator.h"
00015 #include "mitkPointSet.h"
00016 
00017 #define MITK_KERNEL_FUNC_TPS_R          1
00018 #define MITK_KERNEL_FUNC_TPS_R2LOGR     2
00019 #define MITK_KERNEL_FUNC_EBS            3
00020 #define MITK_KERNEL_FUNC_VS             4
00021 
00022 
00025 
00026 
00027 class MITK_REGISTRATION_API mitkPointSetKernelTransformEstimator : public mitkPointSetEstimator
00028 {
00029 public:
00030     MITK_TYPE(mitkPointSetKernelTransformEstimator, mitkPointSetEstimator)  
00031     virtual void PrintSelf(ostream &os);
00032     
00036     mitkPointSetKernelTransformEstimator();
00037 
00038     mitkPointSetKernelTransformEstimator(int tfMode);
00039 
00044     void SetMovingPointSet(mitkPointSet *movingPointSet);
00045 
00046     void SetKernelFunction(int m) { m_KernelFunction = m; }
00047 
00048     void SetKernelFunctionToTPSR() { this->SetKernelFunction(MITK_KERNEL_FUNC_TPS_R); }
00049 
00050     void SetKernelFunctionToTPSR2LOGR() { this->SetKernelFunction(MITK_KERNEL_FUNC_TPS_R2LOGR); }
00051 
00052     void SetKernelFunctionToEBS() { this->SetKernelFunction(MITK_KERNEL_FUNC_EBS); }
00053 
00054     void SetKernelFunctionToVS() { this->SetKernelFunction(MITK_KERNEL_FUNC_VS); }
00055 
00056     void SetAlphaCoefficient(ScalarParameterType a) { m_Alpha = a; }
00057 
00058     ScalarParameterType GetAlphaCoefficient() { return m_Alpha; }
00059 
00060     void SetStiffnessCoefficient(ScalarParameterType s) { m_Stiffness = s; }
00061 
00062     ScalarParameterType GetStiffnessCoefficient() { return m_Stiffness; }
00063 
00064     MatrixType& GetDeformMatrix() { return m_DMatrix; }
00065 
00066     bool IsTransformSupported(mitkTransform* transform = NULL);
00067 
00068     bool ComputeWMatrix();
00069 
00070 protected:
00071     virtual ~mitkPointSetKernelTransformEstimator();
00072     virtual bool Execute();
00073     void ComputeLMatrix();
00074     void ComputeKMatrix();
00075     void ComputePMatrix();
00076     void ComputeYMatrix();
00077     void ComputeDisplacement();
00078     void ComputeGMatrix(const mitkPoint<double> & s);
00079 
00080     mitkPointSet                m_Displacements;
00081 
00082     MatrixType                  m_LMatrix;
00083     MatrixType                  m_KMatrix;
00084     MatrixType                  m_PMatrix;
00085     MatrixType                  m_YMatrix;
00086     MatrixType                  m_WMatrix;
00087     MatrixType                  m_GMatrix;
00088     MatrixType                  m_DMatrix;
00089 
00090     int                         m_KernelFunction;
00091     ScalarParameterType         m_Stiffness;
00092     ScalarParameterType         m_Alpha;
00093 
00094     //affine and translation parts can use mitkTransformMatrix
00095 
00096 
00097 private:
00098     mitkPointSetKernelTransformEstimator(const mitkPointSetKernelTransformEstimator&);
00099     void operator = (const mitkPointSetKernelTransformEstimator&);
00100 
00101 };
00102 
00103 
00104 //#define DEFINED_mitkPointSetKernelTransformEstimator
00105 
00106 
00107 
00108 #endif
00109 

Generated on Tue Feb 25 15:00:37 2014 for MITK (Medical Imaging ToolKit) by  doxygen 1.4.3