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 __mitkPointSetRegistrationFilter_h 00012 #define __mitkPointSetRegistrationFilter_h 00013 00014 #include "mitkRegistrationFilter.h" 00015 #include "mitkPointSetEstimator.h" 00016 #include "mitkPointSetMetric.h" 00017 #include "mitkPointSet.h" 00018 #include "mitkRCPtr.h" 00019 00020 00029 00030 class MITK_REGISTRATION_API mitkPointSetRegistrationFilter : public mitkRegistrationFilter 00031 { 00032 public: 00033 MITK_TYPE(mitkPointSetRegistrationFilter,mitkRegistrationFilter) 00034 virtual void PrintSelf(ostream& os); 00035 00039 mitkPointSetRegistrationFilter(); 00040 00045 void SetFixedPointSet(mitkPointSet *fixedPointSet); 00046 00051 void SetMovingPointSet(mitkPointSet *movingPointSet); 00052 00058 void SetFixedPointSet(vector<double> *fixedPointSet, unsigned int dim = 3); 00059 00065 void SetMovingPointSet(vector<double> *movingPointSet, unsigned int dim = 3); 00066 00073 void SetFixedPointSet(double* fixedPointSet, unsigned int arraylength, unsigned int dim = 3); 00074 00081 void SetMovingPointSet(double* movingPointSet, unsigned int arraylength , unsigned int dim = 3); 00082 00083 mitkPointSet* GetFixedPointSet() { return m_FixedPointSet; } 00084 00085 mitkPointSet* GetMovingPointSet() { return m_MovingPointSet; } 00086 00087 mitkPointSet* GetRegisteredPointset(); 00088 00093 unsigned int GetNumberOfFixedPoints() {return m_NumberOfFixedPoints;} 00094 00099 unsigned int GetNumberOfMovingPoints() {return m_NumberOfMovingPoints;} 00100 00105 virtual mitkTransform* GetTransform(); 00110 virtual mitkMetric* GetMetric(); 00111 00116 virtual mitkOptimizer* GetOptimizer(); 00117 00122 mitkPointSetEstimator* GetEstimator(); 00123 00128 void SetEstimator(mitkPointSetEstimator* estimator) { m_Estimator = estimator; } 00129 00130 mitkPointSetEstimator* GetSuitableEstimator(int tfMode); 00131 00132 protected: 00133 virtual ~mitkPointSetRegistrationFilter(); 00134 virtual bool Execute(); 00135 virtual bool ProcessBeforeRegistration(); 00136 00137 mitkPointSetEstimator* m_Estimator; 00138 00139 mitkPointSet* m_FixedPointSet; 00140 mitkPointSet* m_MovingPointSet; 00141 unsigned int m_NumberOfFixedPoints; 00142 unsigned int m_NumberOfMovingPoints; 00143 int m_PointSetDimension; 00144 00145 bool m_FlagUseOptimizer; 00146 00147 private: 00148 mitkPointSetRegistrationFilter(const mitkPointSetRegistrationFilter&); 00149 void operator=(const mitkPointSetRegistrationFilter&); 00150 }; 00151 00152 00153 //#define DEFINED_mitkPointSetRegistrationFilter 00154 00155 00156 00157 #endif 00158 00159