zxhproj v 2.2
zxhproj
|
00001 /*========================================================================= 00002 00003 Program: ZXH Registration Software 00004 Author: Xiahai Zhuang 00005 Module: $RCSfle: zxhGradientMultiRigid $ 00006 Language: C++ 00007 Date: $Date: From 2010-08 $ 00008 Version: $Revision: 2.0 $ 00009 00010 Update log: 00011 =========================================================================*/ 00012 00013 #ifndef zxhGradientMultiRigid_h 00014 #define zxhGradientMultiRigid_h 00015 #include "zxhTransformMultiRigid.h" 00016 00023 00024 00025 class zxhGradientMultiRigid : public zxhTransformMultiRigid, public zxhGradientBase 00026 { 00027 protected: 00030 float m_afTranslationDirectionVectorForEcho[ZXH_MAXMULTIRIGID-ZXH_NUMBERMRTRANSFORM][ImageDimensionMax] ; 00032 float m_fWeightingPercentageEchoRotation ; 00033 00034 public: 00036 zxhGradientMultiRigid(void); 00038 ~zxhGradientMultiRigid(void) ; 00039 00041 virtual zxhTransformBase* Clone(zxhTransformBase*&pRet); 00043 virtual bool SetTranslationDirectionVectorForEcho( int index, float v[4] ) 00044 { 00045 if( index>GetNoOfEchoRigidTransform()-1 ) return false ; 00046 for( int i=0;i<m_iDimension;++i ) m_afTranslationDirectionVectorForEcho[index][i]=v[i] ; 00047 }; 00049 virtual bool GetTranslationDirectionVectorForEcho( int index, float vresult[4] ) 00050 { 00051 if( index>GetNoOfEchoRigidTransform()-1 ) return false ; 00052 for( int i=0;i<m_iDimension;++i ) vresult[i]=m_afTranslationDirectionVectorForEcho[index][i] ; 00053 }; 00055 virtual bool SetWeightingPercentageEchoRotation( float f ) {m_fWeightingPercentageEchoRotation=f; return true ;}; 00057 virtual float GetWeightingPercentageEchoRotation( void ) {return m_fWeightingPercentageEchoRotation;}; 00058 00059 00064 virtual bool ComputeMetricGradient 00065 ( 00066 zxhMetricBase*pMetric, 00067 zxhTransformBase*pInfluence=0 00068 ) ; 00069 }; 00070 #endif //zxhGradientMultiRigid_h 00071 00072