標籤:
任務:在MeVisLab平台完成fMRI資料的預先處理
痛點:對MeVisLab平台的不熟悉;平台本身關於fMRI的可用內容少(多了就不用我做了 = =);語言障礙,好多專業詞彙根本翻譯不過來,或者翻譯不過去……
具體流程:
功能核磁資料的匯入
參數自動提取
層面時間校正
頭動校正(剛體變換)
映像配准
去基準漂移
帶通濾波
時間延時(暫時不瞭解)
進展:
0.對不認識的模組(Modules)右鍵 show help。[安裝目錄下Packages/MeVisLab/Standard/Documentation/Publish/ModuleReference/genre.html 可按類顯示核心Modules]
1.關於資料匯入,要求為dicom格式匯入,可以檔案夾識別什麼的,嘗試了眾多匯入方法,最終確定DirectDicomImport,選擇檔案夾,可識別檔案資訊。在此,匯入的檔案為mosaic排列後的,為了後期的正常處理,需要將其一張slice中的z取出來,使用Demosaic模組,得到參數為[x,y,z,t,c,u]的映像集。這裡x,y,z為映像的空間座標,t為時間座標,也即多少個dicom檔案,多少個TR, c=color,指的是映像的色彩顯示方法,MRI資料為灰階顯示(Gary)。U好像是user,可是我嘗試匯入多個被試的資料,u並沒有改變,可能是理解錯誤,還需要進一步確認。
2.參數提取比較簡單,直接通過Info實現,如果後期需要實現GUI,可直接引用其中的參數;
3.時間層面校正(選作),暫時還沒有發現相關的Module,可以通過自己開發Module實現,在產生的cpp工程中利用LOOP中的t的迴圈,實現對時間層面的校正,另外,在info資訊中也有對時間資訊的顯示,後經確認並非是層面時間資訊。還需要繼續學習SPM中層面時間校正的內容。
4.頭動校正,利用剛體變換模型實現。具體模組為MERIT,變換類型為rigid.在進行頭動校正時,選擇t=1的映像作為模板映像,利用subImage從匯入的dicom檔案中選取一張子圖,subImage可以對六個座標都進行重新選擇,這裡我只對t進行選擇,在SPM Manual裡好像看到說以首幀做基礎,進行頭動校正,則用subImage選出首幀。可利用MERIT對映像進行剛體變換,得到變換矩陣(MERIT/output/Transformation Matrix).可是問題在於,MERIT一次只能將一幅映像變換到模板映像的變換矩陣得到,而fMRI-BOLD資料絕對不止一副,如何?多映像的校正,我還是沒有想到合適的方法,在我現有的理解中在MeVisLab中,模組與模組的連結只能傳輸資料,而非資料流,也就是說,我無法在模組外實現對某些環節的循環參考,難道我要基於MERIT重新開發Module嗎?或者還有其他的方法可以實現,可我還沒發現?
另外RegistrationManual 模組,可以通過overlay顯示配准效果,在調試過程中作為檢驗工具。
5.映像配准,同樣利用MERIT模組實現,變換類型為rigid.模板映像為T1像,進行配准操作,具體問題與頭動校正相同。在配准過程中,需要對結構像進行重構,利用Resample3D調整解析度和座標資訊。[在spm中是先進行完分割再配準的,如果不分割是否有影響,需要分割嗎?]
6.去基準漂移&帶通濾波處理 直接使用FFTbandpassFilter 實現濾波。其核心演算法即通過FFT→加濾波模板→IFFT實現。
對於基準漂移的改善情況,不知道怎麼檢驗效果,以及如何改善,還需要學習。
7.時間延時相關特性
8.歸一化到標準腦模板(選做) 與頭動校正和映像配准相同,都屬於空間變換,變換形式不同,需要利用整體變換仿射變換affine實現,模板映像為SPM提供的標準腦模板,利用MERIT,變換類型為affine.
其他積累:
1.論壇學習:http://forum.mevis.fraunhofer.de/index.php
2.可能用到的模組
| ImagePropertyConvert |
調整映像參數,包括解析度,大小等 |
| SoView2Doverlay |
用於比較圖片 |
| Imagespector |
沿某一座標將映像分隔開,但最多隻有6個輸出…… |
| reshape |
x*y*z*C*T*U保持不變 |
| soGVRVolumeRender |
對3D、4D進行渲染呈現 |
| MinMaxSCan |
調整大小,在變換過程中可能會用到 |
| Affinetransformation3D |
進行3D仿射變換 |
| Fiter類 |
進行濾波和平滑等 |
MeVisLab fMRI資料處理學習1