跳转到内容

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);
[编辑 | 编辑源代码]

另请参见

华夏公益教科书