zxhproj v 2.2
zxhproj
|
00001 00002 /*========================================================================= 00003 00004 Program: ZXH Registration Software 00005 Author: Xiahai Zhuang 00006 Module: $RCSfle: zxhOptimizerBase.h $ 00007 Language: C++ 00008 Date: $Date: From 2004-01 $ 00009 Version: $Revision: 1.0, 2.0 $ 00010 00011 =========================================================================*/ 00012 00013 #ifndef zxhOptimizerBase_h 00014 #define zxhOptimizerBase_h 00015 00016 #include "zxhTransformBase.h" 00017 #include "zxhImageData.h" 00018 #include "zxhMetricBase.h" 00019 #include "zxhRegistrationStruct.h" 00020 #include <string> 00021 00029 class zxhOptimizerBase 00030 { 00031 public: 00033 zxhOptimizerBase(); 00034 00036 virtual ~zxhOptimizerBase(); 00037 00039 virtual void SetMetric(zxhMetricBase*p) {m_pMetric=p;}; 00041 virtual void SetTransform(zxhTransformBase*p) {m_pTransform=p;} 00043 virtual void SetTransformInfluence(zxhTransformBase*p) {m_pTransformInf=p;}; 00045 virtual void SetDirection(float f) {m_fDirection=f;}; 00047 virtual void SetMaxStep( int i) ; 00048 00050 virtual std::string GetPrintString(); 00051 00053 virtual bool SetOptimizerFromStream(std::ifstream & ifs); 00054 00056 virtual zxhlfloat GetResultValue() {return m_fValueCur;}; 00057 00059 virtual unsigned int GetCurrentStep() {return m_iStepCount;}; 00060 00062 virtual bool GetIsStop() {return m_bStop;}; 00063 00065 virtual zxhTransformBase* GetTransform() {return m_pTransform;}; 00066 00068 virtual zxhTransformBase* GetTransformInfluence() {return m_pTransformInf;}; 00069 00071 virtual zxhMetricBase* GetMetric() {return m_pMetric;}; 00072 00074 virtual float GetDirection() {return m_fDirection;}; 00075 00077 virtual void Run()=0; 00078 //virtual bool AdvanceSteps(){return false;}; // return whether to stop 00079 00081 virtual zxhOptimizerBase* Clone(zxhOptimizerBase* &pRet); 00082 00084 virtual void SetResultSaveString( std::string s ) { m_sResultSave = s ; } ; 00086 virtual std::string GetResultSaveString() { return m_sResultSave ; } ; 00088 virtual void SetStructRegistration(zxhRegistrationStruct*p) {m_pStructRegistration=p;}; 00090 virtual zxhRegistrationStruct* GetStructRegistration() {return m_pStructRegistration;}; 00092 virtual void SetAccumulatedDecreaseStepsForStop( int i) { m_nAccumulatedStop=i;}; 00094 virtual int GetAccumulatedDecreaseStepsForStop() { return m_nAccumulatedStop;}; 00095 00096 00097 protected: 00099 float m_fDirection; 00100 00102 unsigned int m_iMaxStep; 00103 00105 zxhTransformBase*m_pTransform; 00106 00108 zxhTransformBase*m_pTransformInf; 00109 00111 zxhMetricBase *m_pMetric; 00112 00114 zxhlfloat m_fValueCur; 00115 00117 zxhlfloat m_fValuePreMax; 00118 00120 int m_iAccumulatedValueDecrease; 00122 int m_nAccumulatedStop ; 00124 unsigned int m_iStepCount; 00125 00127 bool m_bStop; 00128 00130 std::string m_sResultSave ; 00132 zxhRegistrationStruct* m_pStructRegistration ; 00133 }; 00134 00135 #endif // (zxhOptimizerBase_h) 00136