zxhproj v 2.2
zxhproj
|
00001 00002 /*========================================================================= 00003 00004 Program: ZXH Registration Software 00005 Author: Xiahai Zhuang 00006 Module: $RCSfle: zxhTransformFields.h $ 00007 Language: C++ 00008 Date: $Date: From 2004-01 $ 00009 Version: $Revision: 1.0, 2.0 $ 00010 00011 =========================================================================*/ 00012 00013 #ifndef zxhTransformFields_H 00014 #define zxhTransformFields_H 00015 00016 #include "zxhTransformBase.h" 00017 #include "zxhImageData.h" 00018 #include "zxhImageGipl.h" 00019 #include "zxhImageModelingLinear.h" 00020 00033 00034 00035 class zxhTransformFields : public zxhTransformBase 00036 { 00037 public: 00039 zxhTransformFields(void); 00041 ~zxhTransformFields(void); 00042 00044 virtual std::string GetTransformType(){return "FLD";};//RIG,AFF,FFD 00045 00047 virtual zxhTransformBase* Clone(zxhTransformBase*&pRet) ; 00048 00050 virtual void TransformWorldToWorld(const float fVectorFromWorld[ImageDimensionMax],float fVectorToWorld[ImageDimensionMax]); 00051 00053 virtual bool SetTransformFromStream(std::ifstream & ifs); 00055 virtual bool SetTransformIdentity(); 00056 00059 virtual std::string GetPrintString(); 00061 virtual bool SaveTransform2Disc( std::string sFileNameWithoutExt ) ; 00062 00064 virtual bool ElasticRegularizationDeformationFeild(float* sigmasmm); 00065 00068 virtual bool SetTransformFieldsFromFiles(char* pFilename[ImageDimensionMax]); 00070 virtual bool SetTransformFieldsFromFiles(std::string pFilename[ImageDimensionMax]); 00072 virtual bool SetTransformFieldsFromFiles(std::string pFileX,std::string pFileY,std::string pFileZ); 00074 virtual bool CloneTransformFieldsFromImages( zxhImageDataT<float> * pX, zxhImageDataT<float> * pY, zxhImageDataT<float> * pZ ) ; 00076 virtual bool CloneTransformFieldsFromToWorldImages( zxhImageDataT<float> * ptwX, zxhImageDataT<float> * ptwY, zxhImageDataT<float> * ptwZ ) ; 00078 virtual zxhImageDataT<float> * GetTransformFieldImages() {return m_pimgTransformFields;} 00080 virtual zxhImageModelingLinearT<float,float> * GetTransformFieldModels() {return m_pmodelTransformFields;} 00083 virtual int GetNoParameters() ; 00085 virtual float GetParameters(int index) ; 00087 virtual bool SetParameterValue( int index, float f ) ; 00088 00090 virtual bool SetTransformFieldsOrientationInfo(zxhImageInfo*pimageinfo) ; 00092 virtual void NewTransformImages( int dim, const int*size, const float*spacing, const zxhImageInfo*pimageinfo ) ; 00094 virtual void ReleaseMemOfTransformImages(); 00095 00097 virtual float GetMaxLocalMagnitudeAndNormalisation( bool bNormalisationByLocalMagnitude ) ; 00098 00100 virtual bool ConvertTransformToField( zxhTransformBase*pt, const zxhImageInfo*pimageinfo) ; 00101 protected: 00103 std::string m_strTransformFieldImageFiles[ImageDimensionMax]; 00105 zxhImageDataT<float> m_pimgTransformFields[ImageDimensionMax]; 00107 zxhImageModelingLinearT<float,float> m_pmodelTransformFields[ImageDimensionMax]; 00108 00110 bool CheckTranformFieldSameDimSizeSpacing() const ; 00111 00112 }; 00113 00114 #endif //zxhTransformFields_H 00115 00116