zxhproj v 2.2
zxhproj
|
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