zxhproj v 2.2
zxhproj

zxhMetricPhase.h

00001 
00002 /*=========================================================================
00003 
00004   Program:   ZXH Registration Software
00005   Author:    Xiahai Zhuang
00006   Module:    $RCSfle: zxhMetricPhase.h    $
00007   Language:  C++
00008   Date:      $Date: From  2009-02 $
00009   Version:   $Revision: 2.0 $
00010   revision:
00011 =========================================================================*/
00012 #ifndef zxhMetricPhase_h
00013 #define zxhMetricPhase_h
00014 
00015 #include "zxh.h"
00016 #include "zxhMetricBase.h" 
00017 #include "zxhImageProcessPhase.h"
00018 #include <math.h> 
00019 
00020 #define PHASEBINN 68
00021 
00022 
00023 
00024 
00025 
00026 
00027 
00028 
00029 
00030 class zxhMetricPhase :  public zxhMetricBase
00031 {
00032 public:
00034     zxhMetricPhase(void);
00036     virtual ~zxhMetricPhase(void);
00037 
00039     virtual std::string GetMetricType() {return "_PHASE_"; } ;
00040 
00042     virtual zxhMetricBase* Clone( zxhMetricBase * & pRet ); 
00043 
00045     /* * * * * * * * * * * *
00046      *  for phase registration V. Grau et al.
00047      * * * * * * * * * * * */
00048     virtual int ComputePhaseMetric4D(zxhlfloat &fValue, 
00049                         float xfTestFrom,float xfTestTo,float yfTestFrom,float yfTestTo,
00050                         float zfTestFrom=0,float zfTestTo=0,float tfTestFrom=0,float tfTestTo=0, bool nonrigid=false ) ;
00052     virtual int  GetValue( zxhlfloat & fValue ) ;
00053 
00055     virtual void UpdatePhaseProcess( int processimage =0) ;
00056 
00058     virtual void SetPhaseScale( float s )                                       {m_procPhaseTest.SetScale(s);m_procPhaseRef.SetScale(s);};
00060     virtual zxhImageProcessPhaseT<short, float> * GetProcPhaseTest()            { return &m_procPhaseTest ; } ;
00062     virtual zxhImageProcessPhaseT<short, float> * GetProcPhaseRef()             { return &m_procPhaseRef ; } ;
00064     virtual void SetSimilarityWeighting(float wi,float wf, float wo)        
00065     { m_fPhaseWeightings[0]=wi; m_fPhaseWeightings[1]=wf; m_fPhaseWeightings[2]=wo;}
00067     virtual void SetIsEchoDataUsingMask(bool b)                                 {m_bIsEchoDataUsingMask=b;};
00068 
00069 protected:
00071     virtual void EvaluateSimilarityOnPixel( float *coTest, float *coRef,
00072                                             float *OrientTest2Ref, float *OrientRef,
00073                                             zxhlfloat & SumGrayAB, zxhlfloat & SumGrayA2, zxhlfloat & SumGrayB2, zxhlfloat & SumGrayA, zxhlfloat & SumGrayB,
00074                                             zxhlfloat & SumPhaseAB,zxhlfloat & SumPhaseA2,zxhlfloat & SumPhaseB2,zxhlfloat & SumPhaseA,zxhlfloat & SumPhaseB,
00075                                             zxhlfloat & SumOrientCos, zxhlfloat & SumPhaseCos, zxhlfloat& Wrt  ) ;
00077     virtual void EvaluateSimilarityOnPixel( float *coTest, float *coRef,
00078                                             float *OrientTest2Ref, float *OrientRef,
00079                                             zxhlfloat & SumGrayAB, zxhlfloat & SumGrayA2, zxhlfloat & SumGrayB2, zxhlfloat & SumGrayA, zxhlfloat & SumGrayB,
00080                                             zxhlfloat & SumPhaseAB,zxhlfloat & SumPhaseA2,zxhlfloat & SumPhaseB2,zxhlfloat & SumPhaseA,zxhlfloat & SumPhaseB,
00081                                             zxhlfloat & SumOrientCos, zxhlfloat & SumPhaseCos,
00082                                             zxhlfloat *pfJointHistogramGray, zxhlfloat *pfJointHistogramPhase, zxhlfloat& Wrt  ) ;
00083 
00086     virtual int GetValueFromIntensityPhase( zxhlfloat & fValue, zxhlfloat SumOrientCos, zxhlfloat SumPhaseCos, zxhlfloat Wrt,
00087                                                 zxhlfloat SumGrayAB, zxhlfloat SumGrayA2, zxhlfloat SumGrayB2, zxhlfloat SumGrayA, zxhlfloat SumGrayB,
00088                                                 zxhlfloat SumPhaseAB,zxhlfloat SumPhaseA2,zxhlfloat SumPhaseB2,zxhlfloat SumPhaseA,zxhlfloat SumPhaseB );
00090     virtual int GetValueFromIntensityPhase( zxhlfloat & fValue, zxhlfloat SumOrientCos, zxhlfloat SumPhaseCos, zxhlfloat Wrt,  
00091                                             zxhlfloat SumGrayAB, zxhlfloat SumGrayA2, zxhlfloat SumGrayB2, zxhlfloat SumGrayA, zxhlfloat SumGrayB,
00092                                             zxhlfloat SumPhaseAB,zxhlfloat SumPhaseA2,zxhlfloat SumPhaseB2,zxhlfloat SumPhaseA,zxhlfloat SumPhaseB,
00093                                             zxhlfloat *pfJointHistogramGray, zxhlfloat *pfJointHistogramPhase);
00095     zxhImageProcessPhaseT<short, float> m_procPhaseRef ;
00097     zxhImageProcessPhaseT<short, float> m_procPhaseTest ;
00099     zxhImageDataT<float>                m_imgFeatureIntensityTest;
00101     zxhImageDataT<float>                m_imgFeatureIntensityRef;
00102 
00104     int m_iNumberOfHistogramBins;
00106     float m_afImageTestGraySpan[2];
00108     float m_afImageRefGraySpan[2];
00110     float m_fBinSizeImageIntensity[2] ;
00112     float m_afImageTestPhaseSpan[2];
00114     float m_afImageRefPhaseSpan[2];
00116     float m_fBinSizeImagePhase[2] ;
00118     zxhlfloat m_afCJointHistogramIntensity[PHASEBINN][PHASEBINN] ;
00120     zxhlfloat m_afCJointHistogramPhase[PHASEBINN][PHASEBINN] ;
00121 
00123     float                               m_fPhaseWeightings[3];
00125     bool                                m_bIsEchoDataUsingMask;
00126 
00127 };
00128 
00129 #endif
00130 
00131 
00132 
00133 
 All Classes Namespaces Functions Variables Typedefs