zxhproj v 2.2
zxhproj
|
00001 00002 /*========================================================================= 00003 00004 Program: ZXH Registration Software 00005 Author: Xiahai Zhuang 00006 Module: $RCSfle: zxhTransformIterateSquareRoot.h $ 00007 Language: C++ 00008 Date: $Date: From 2011-02 $ 00009 Version: $Revision: 2.0,2.1 $ 00010 00011 =========================================================================*/ 00012 00013 #ifndef zxhTransformIterateSquareRoot_H 00014 #define zxhTransformIterateSquareRoot_H 00015 00016 #include "zxhTransformFieldGradient.h" 00017 #include "zxhOptimizerGradientField.h" 00018 #include "zxhImageData.h" 00019 #include <string.h> 00020 #include <stdio.h> 00021 00026 #ifndef m_staticMinimalSpace 00027 #define m_staticMinimalSpace 0.01f 00028 #endif 00029 #ifndef m_staticMinimalSampling 00030 #define m_staticMinimalSampling 1 // it's so weird that 2 works worse than 1 00031 #endif 00032 00033 class zxhTransformIterateSquareRoot : public zxhTransformFieldGradient 00034 { 00035 public: 00037 zxhTransformIterateSquareRoot(); 00039 virtual ~zxhTransformIterateSquareRoot(); 00041 virtual zxhTransformBase* Clone(zxhTransformBase*&pRet) ; 00043 virtual void SetTransform( zxhTransformBase*p ) {m_pTransform=p;if(p) m_iDimension=p->GetDimension();} ; 00045 virtual bool Evaluate(); 00047 virtual void SetNumberOfMultiLevelOptimization( int n ) {m_nMultiLevel=n;}; 00049 virtual int GetNumberOfMultiLevelOptimization() {return m_nMultiLevel;}; 00051 virtual void SetFinalLevelStepLength(float f) {m_fFinalLevelStepLength=f;}; 00053 virtual float GetFinalLevelStepLength(void) {return m_fFinalLevelStepLength;}; 00055 virtual bool SetOptimizer( zxhOptimizerGradient*pSrc ) ; 00056 protected: 00058 virtual bool InitTransformFieldImage() ; 00060 zxhTransformBase * m_pTransform; 00062 zxhOptimizerGradientField m_Optimizer ; 00064 int m_nMultiLevel; 00066 float m_fFinalLevelStepLength ; 00067 }; 00068 #endif // 00069 00070