zxhproj v 2.2
zxhproj

zxhMetricCCFFD2.h

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