跳轉到內容

SPM/程式設計簡介

來自華夏公益教科書
< SPM

本頁旨在提供一個快速入門指南,用於使用 SPM 作為庫編寫您自己的 MATLAB 指令碼和函式。SPM 程式設計可能意味著簡單地 編寫批處理指令碼 以自動化常見的流程,編寫簡短的輔助指令碼或函式來完成有用的任務,編寫您自己的 SPM 擴充套件,甚至修改您本地安裝的 SPM。

MATLAB 是一種由 MathWorks 開發的程式語言。

網上有很多 MATLAB 教程

也有一些有用的書籍

MATLAB 課程

SPM 函式

[編輯 | 編輯原始碼]

SPM 在原始檔的標頭檔案中提供了豐富的開發者文件。要檢視函式的文件,請開啟相應的原始檔或從 MATLAB 命令列呼叫 help function。請確保 SPM 資料夾位於 MATLAB 的搜尋路徑中。

讀取影像標頭檔案和資料

[編輯 | 編輯原始碼]
  • spm_vol - 標頭檔案資訊
  • spm_read_vols - 用於讀取整個體積(另請參閱:spm_vol
  • spm_slice_vol - 用於任意平面
  • spm_sample_vol - 任何體素
  • spm_get_data (spm_sample_vol) - 來自多個體積的任何體素
  • spm_bsplins (spm_bsplinc) - 注意 spm_slice_volspm_sample_vol 提供多項式或 sinc 插值;這些函式提供 spm_reslice 中使用的 b 樣條插值

寫入資料

[編輯 | 編輯原始碼]
  • spm_write_vol (spm_vol)
  • spm_create_vol
  • spm_write_plane

使用備用 NIfTI 類庫讀取和寫入資料

[編輯 | 編輯原始碼]
  • nifti (@nifti/Contents, @nifti/create)
  • file_array (@file_array/Contents)

幾何形狀,體素世界對映

[編輯 | 編輯原始碼]
  • spm_get_space - 獲取體素世界對映矩陣(剛性或仿射變換,使用齊次座標)
  • spm_imatrix - 將上述矩陣轉換為引數化形式
  • spm_matrix - 將引數向量轉換為仿射矩陣
  • spm_check_orientations

線性(剛性/仿射)配準和重新切片

[編輯 | 編輯原始碼]
  • spm_realign
  • spm_coreg (spm_reslice)
  • spm_affreg
  • spm_reslice - 需要參考影像;有關重新切片到指定幾何形狀的資訊,請參閱以下內容
  • reorient (resize_img) - 可從 John's Gems 2 和 3 中獲得

預處理,包括分割和非線性歸一化

[編輯 | 編輯原始碼]
  • spm_preproc (spm_config_preproc, spm_prep2sn, spm_preproc_write) - SPM5 的統一分割和歸一化
  • spm_normalise - SPM5 之前的舊版非統一空間歸一化
  • spm_segment - SPM5 之前的舊版非統一組織分割
  • spm_smooth
  • spm_imcalc - 對體積執行任意計算(低階函式)
  • spm_imcalc_ui - spm_imcalc 的高階便利包裝器
  • spm_ancova (spm_reml_ancova) - SPM 本身沒有使用,但通常對於指令碼編寫或教育目的很有用

檢視資料

[編輯 | 編輯原始碼]
  • spm_check_registration (spm_image, spm_orthviews) - 無處不在的三個正交檢視
  • slover - 貫穿影像的切片,閾值或原始統計資料的疊加;另請參閱 slice_overlay
  • spm_mip_ui (spm_mip) - 最大強度投影或玻璃腦影像
  • spm_defaults
  • spm_get_defaults

批處理系統

[編輯 | 編輯原始碼]
  • spm_select
  • spm_jobman

讀取和寫入體積(將 NaN 替換為零)

[編輯 | 編輯原始碼]

這是一個更簡單(但更佔記憶體)的舊版Gem。有關逐平面讀取和寫入的示例,請參見SPM8 版本的 gem

fnm = spm_select(1, 'image');
[pth, bnm, ext] = spm_fileparts(fnm);
VI = spm_vol(fnm);
VO = VI; % copy input info for output image
VO.fname = fullfile(pth, [bnm '_zn' ext]);
img = spm_read_vols(VI);
img(isnan(img)) = 0; % use ~isfinite instead of isnan to replace +/-inf with zero
spm_write_vol(VO,img);
[編輯 | 編輯原始碼]

另請參見

華夏公益教科書