zxhproj v 2.2
zxhproj

zxhTransformCmriShiftCorrect.h

00001 
00002 /*=========================================================================
00003 
00004   Program:   ZXH Registration Software
00005   Author:    Xiahai Zhuang
00006   Module:    $RCSfle: zxhTransformCmriShiftCorrect    $
00007   Language:  C++
00008   Date:      $Date: From  2011-03 $
00009   Version:   $Revision: 2.2.0 $
00010 
00011   Update log: 2.2.1 implement the idea
00012 
00013 =========================================================================*/
00014 
00015 #ifndef zxhTransformCmriShiftCorrect_h
00016 #define zxhTransformCmriShiftCorrect_h
00017 
00018 
00019 #include "zxhTransformBase.h"
00020 #include "zxhGradientBase.h"
00021 #include "zxhTransformAffine.h"
00022 #include "zxhTransformMatrix.h"
00023 
00029 
00030 class zxhTransformCmriShiftCorrect : public zxhTransformBase,public zxhGradientBase
00031 {
00032 public:
00034     zxhTransformCmriShiftCorrect(void);
00036     ~zxhTransformCmriShiftCorrect(void);
00037 
00039     virtual std::string GetTransformType(){return "CSC";};
00040 
00042     virtual zxhTransformBase*   Clone(zxhTransformBase*&pRet);
00044     virtual std::string GetPrintString( void ) ;
00046     virtual bool    SetTransformFromStream(std::ifstream & ifs);
00048     virtual void    TransformWorldToWorld(const float fVectorFromWorld[ImageDimensionMax],float fVectorToWorld[ImageDimensionMax])
00049     {
00050         std::cerr<<"error: zxhTransformCmriShiftCorrect does not have definition for TransformWorldToWorld\n" ;
00051         exit(0) ;
00052     };
00054     virtual bool    SetTransformIdentity()
00055     {
00056         for( int ir=0; ir<ZXH_MAXMULTIRIGID; ++ir )
00057             m_aMREchoRigidTransform[ir].SetTransformIdentity();
00058         return true ;
00059     };
00061     virtual int     GetNoParameters()       {return m_nNoOfRigidTransform*m_aMREchoRigidTransform[0].GetNoParameters();};
00063     virtual float   GetParameters(int index) ;
00065     virtual bool    SetParameterValue(int index, float f ) ;
00066 
00068 
00070     virtual bool SetNoOfRigidTransform(int n)
00071     {
00072         if( n<ZXH_NUMBERMRTRANSFORM || n>ZXH_MAXMULTIRIGID )
00073         {
00074             std::cerr<<"error: number of rigid transformations should be between "<<ZXH_NUMBERMRTRANSFORM<<" and "<<ZXH_MAXMULTIRIGID<<" ONLY!\n" ;
00075             return false ;
00076         }
00077         m_nNoOfRigidTransform=n;
00078         return true ;
00079     };
00081     virtual int GetNoOfRigidTransform(void)                         {return m_nNoOfRigidTransform;};
00083     virtual int GetNoOfEchoRigidTransform(void)                         {return m_nNoOfRigidTransform-ZXH_NUMBERMRTRANSFORM;};
00085     virtual int GetNoOfMRRigidTransform(void)                           {return ZXH_NUMBERMRTRANSFORM;};
00087     virtual zxhTransformAffine* GetRigidTransform(int index)
00088     {
00089         if( index>m_nNoOfRigidTransform ) return 0 ;
00090         return &m_aMREchoRigidTransform[index];
00091     };
00093     virtual zxhTransformAffine* GetEchoTransform(int index)
00094     {
00095         if( index > m_nNoOfRigidTransform-ZXH_NUMBERMRTRANSFORM-1 ) return 0 ;
00096         return &m_aMREchoRigidTransform[index+ZXH_NUMBERMRTRANSFORM] ;
00097     }
00098     virtual zxhTransformAffine* GetMRTransform( int index=0 )
00099     {
00100         if( m_nNoOfRigidTransform<ZXH_NUMBERMRTRANSFORM || index<0 || index>ZXH_NUMBERMRTRANSFORM-1) return 0 ;
00101         return &m_aMREchoRigidTransform[index] ;
00102     }
00106     virtual bool GetMatrixFromEcho2MR( int index, zxhTransformMatrix*pMatrix ) ;
00107 
00108 
00111     virtual float   GetMaxLocalMagnitudeAndNormalisation( bool bNormalisationByLocalMagnitude ) ;
00112 };
00113 
00114 #endif //zxhTransformCmriShiftCorrect
00115 
00116 
00117 
 All Classes Namespaces Functions Variables Typedefs