跳轉到內容

神經影像資料處理/處理/步驟/去尖峰

來自華夏公益教科書,開放的書籍,開放的世界
神經影像資料處理/處理/步驟
丟棄前幾卷 去尖峰 切片時間

例如由於過度頭部運動引起的訊號異常值會嚴重影響分析。運動校正演算法並非針對這些情況而構建。因此,在開始實際預處理之前檢查您的資料並立即消除訊號異常值是有意義的。您可以繪製體素時間序列,並在大腦的不同部位檢查它們是否顯示出巨大的峰值,但也有自動方法可以覆蓋所有體素(見下文)。一個好的開始是快速觀看您的體積,以類似電影的序列,因為兩幅影像之間的大幅度運動將變得明顯。

檢測到異常值後,應對其進行處理。刪除顯示異常值的整個體積將破壞時間序列,從而使訊號時間序列的分析複雜化並損害後續步驟中使用的傅立葉變換。因此,相應的 資料點最好從相鄰資料中插值得到。

3dToutcount[1]計算每個體積中的異常值數量並將結果寫入檔案。異常值自動定義為允許的 MAD(中值絕對偏差)數量,並考慮資料集中的 TR 數量。典型限制約為趨勢的 3.5*MAD 距離。在尋找異常值之前對時間序列進行去趨勢是有意義的。這可以透過使用-polort nn選項使用 nn 階多項式進行去趨勢(階數基於第一個執行的持續時間:1 + floor(持續時間/150 秒))以及-legendre選項使用勒讓德多項式(允許 polort > 3)來完成。例如

3dToutcount -automask -fraction -polort 3 -legendre INPUTFILE > OUTCOUNTFILE.1D

因此,outcountfile 將包含在 3 階勒讓德多項式去趨勢後,每個體積(在自動掩碼內)超過異常值限制的體素分數。要檢查過多的異常值,您可以使用

1deval -a OUTCOUNTFILE.1D -expr 't*step(a-0.03)' | grep -v '0' 

返回超過 3% 異常值的 所有時間點,或

1dplot OUTCOUNTFILE.1D

用於視覺檢查。在示例圖中,您可以在第 222 卷中看到相當多的異常值分數,這也是 1deval 命令找到的異常值。在使用去尖峰(見下文)之後,此異常值將大大減少。

帶有第 222 卷異常值的異常值檔案圖

3dDespike[2]實際上從 3D+時間輸入資料集中刪除尖峰,並寫入一個新的資料集,其中尖峰值被替換為適合平滑曲線的 值。尖峰切割值可以透過選項-cut c1 c2 設定,其中 c1 是“尖峰”的 s 閾值 [預設 c1=2.5],c2 是允許的與曲線的偏差的上限(s=[c1..infinity) 對映到 s'=[c1..c2) [預設 c2=4])。擬合曲線的階數可以透過-corder調整。儘管3dDespike可以在不進行視覺檢查異常值的情況下執行,但建議在去尖峰之前和之後進行,以跟蹤您的資料並在它們首次出現時檢測可能的異常情況。

3dDespike [options] INPUTFILE

再次對去尖峰後的資料執行異常值檢測時,您可以檢視異常值是否已消除。例如,與上面相同的圖,但在去尖峰後顯示異常值已大大減少(注意 y 範圍的差異)

去尖峰後的異常值,注意較低的 y 範圍

afni_proc.py中,可以包含去尖峰塊(但不是預設情況下)

-do_block despike

也可以在迴歸中刪除異常值,但是,據我瞭解,這實際上會刪除相應的體積,從而導致上述問題。透過以下方法可以對超過 n% 異常值的 TR 進行審查

-regress_censor_outliers 0.0n

參考文獻

[編輯 | 編輯原始碼]
  1. AFNI 程式:3dToutcount:-help 的輸出
  2. AFNI 程式:3dDespike:-help 的輸出
華夏公益教科書