zxhproj v 2.2
zxhproj
|
00001 /*========================================================================= 00002 00003 Program: ZXH Registration Software 00004 Author: Xiahai Zhuang 00005 Module: $RCSfle: zxhMetricCC.h $ 00006 Language: C++ 00007 Date: $Date: From 2004-01 $ 00008 Version: $Revision: 1.0, 2.0, 2.1.1 $ 00009 00010 =========================================================================*/ 00011 00012 #ifndef zxhMetricCCFFD2_h 00013 #define zxhMetricCCFFD2_h 00014 00015 #include "zxhMetricCC.h" 00016 #include "zxhMetricFFD2Base.h" 00017 00024 00025 class zxhMetricCCFFD2 : 00026 public zxhMetricCC, public zxhMetricFFD2Base 00027 { 00028 public: 00030 zxhMetricCCFFD2(void); 00032 virtual ~zxhMetricCCFFD2(void); 00033 00035 virtual std::string GetMetricType() {return zxhMetricCC::GetMetricType()+"_"+zxhMetricFFD2Base::GetMetricType(); } ; 00036 00038 virtual zxhMetricBase* Clone(zxhMetricBase * & pRet); 00040 virtual int GetValue(zxhlfloat&fValue); 00044 virtual int ComputeConstanceForFFDGradient() 00045 { 00046 int num=this->ComputeConstanceForGradient(); 00047 zxhMetricFFD2Base::ComputeConstanceForFFDGradient() ; 00048 return num; 00049 }; 00050 protected: 00052 virtual void SetFFDMetricBase() {m_pMetricBase=this;}; 00053 00054 00056 virtual int ComputeConstanceForGradient() ; 00057 00059 virtual bool EvaluateAllPixelOnTargetForceForMetric() ; 00061 virtual void EvaluateOnPixelTarget2SourceForce( float *afForce, const float * gridCoTest, const float * gridCoRef ); 00062 00063 00064 /* constant variables after ComputeConstanceForGradient */ 00065 protected: 00066 int m_nc_Samples ; 00067 zxhlfloat m_fc_SumTest ; //meanTest=m_fc_SumTest/m_nc_Samples 00068 zxhlfloat m_fc_SumRef ; 00069 zxhlfloat m_fc_SumTestSquare ; 00070 zxhlfloat m_fc_SumRefSquare ; 00071 zxhlfloat m_fc_SumTestRef ; 00072 zxhlfloat m_fc_Numerator ; //sum(Test*Ref)-meanTest*sumRef 00073 zxhlfloat m_fc_Denominator ;// denominator=m_fc_DenoTest * m_fc_DenoRef 00074 zxhlfloat m_fc_DenoTest ; // sumTestSquare - 1/nSamples*(SumTest)^2 00075 zxhlfloat m_fc_DenoRef ; // sumRefSquare - 1/nSamples*(SumRef)^2 00076 zxhlfloat m_fc_SquareCC ; // Numerator^2/Denominator 00077 zxhlfloat m_fc_minusSSD ; // -(sumTestSquare+sumRefSquare-2*sumTestRef) 00078 zxhlfloat m_fc_FactorTest ; // 2*Numerator/Denominator 00079 zxhlfloat m_fc_FactorRef ; // 2*CCsquare/DenoRef 00080 }; 00081 00082 #endif //zxhMetricCCFFD2_h 00083