zxhproj v 2.2
zxhproj

zxhOptimizerBase.h

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 
 All Classes Namespaces Functions Variables Typedefs