ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

CAT12与SPM12脑影像VBM/SBM预处理全流程指南

CAT12与SPM12脑影像VBM/SBM预处理全流程指南 1. 从原始影像到可统计的脑结构指标VBM/SBM到底在做什么写这篇笔记的时候我刚跑完一批总共 87 例的 T1 结构像数据用的就是 CAT12 和 SPM12 这套组合。说实话VBM 和 SBM 这两个词对刚接触脑影像分析的人来说会有点劝退但它们解决的实际问题其实并不复杂。拿到一批 T1 加权结构像我们要回答的最常见问题就是两组人比如患者组和对照组的脑结构有没有差异差异在哪个脑区这里的“结构差异”可以是灰质体积、皮层厚度、皮层表面积、脑回皱褶程度等不同维度的指标。VBMVoxel-Based Morphometry体素形态学分析是把大脑配准到同一个标准空间后逐体素比较灰质/白质体积SBMSurface-Based Morphometry基于表面的形态学分析则是在皮层表面上重建几何结构逐顶点比较皮层厚度、表面积等指标。两者的核心逻辑是一样的——消除个体间大脑形状和大小的差异让不同人的脑可以在同一坐标体系下进行逐点比较。CAT12Computational Anatomy Toolbox是运行在 SPM12 框架下的一个工具包它把 VBM 和 SBM 的完整流程集成到了一套 GUI 和命令行接口里省去了大量手工步骤。这也是为什么我推荐新手直接从这个组合入手——MATLAB 装上 SPM12再把 CAT12 放进 toolbox 目录准备工作就基本完成了。这篇笔记主要记录预处理环节。预处理是整个 VBM/SBM 分析里最耗时、最影响结果质量的环节也是报错最密集的环节。后面几个笔记再写统计分析、结果可视化以及结果解读。2. 环境搭建与数据准备装好工具只是第一步2.1 版本兼容性MATLAB、SPM12、CAT12 的三角关系很多人一上来就卡在安装环节。CAT12 目前r1727 及以后版本支持 MATLAB R2018b 到 R2022b 系列SPM12 的官方要求是 MATLAB R2014a 以后但实际用下来R2016b 到 R2020b 这个区间最稳。版本太新的 MATLAB比如 R2023b在一些老机器上跑 CAT12 偶尔会出现编译层面的兼容问题尤其是 mex 文件报错那种错误信息通常是Cannot find mex file或者Undefined function之类解决方法一般是用 CAT12 安装目录下的cat_install_mex.m重新编译。这里我强烈建议专机专用。准备一台专门跑分析的电脑或服务器MATLAB 版本固定后就不要随便升级更不要把 CAT12 多个版本混在同一个路径下。我见过一个用户因为同时保留了 r1361 和 r1727 两个版本导致函数调用混乱出现各种莫名其妙的cat_main报错排查了一整天最后发现是路径优先级问题。这是完全可以用规范操作避免的坑。安装顺序和检查方法其实很简单安装 MATLAB建议版本 R2018b–R2022b。下载 SPM12官方 GitHub 或官网解压后放到任意路径比如D:\toolbox\spm12。启动 MATLAB把D:\toolbox\spm12加入路径运行spm或spm_jobman(initcfg)确认 SPM 界面能正常弹出。下载 CAT12 包同样解压比如放到D:\toolbox\cat12加入路径。在 MATLAB 命令行输入cat12能弹出 CAT12 的 GUI 窗口就说明安装成功。一个常被忽略的细节CAT12 自带了一批示例数据在cat12\data目录下碰到环境问题不知道是自己数据的问题还是安装的问题时用示例数据跑一遍就有答案了。这个思路对后续排查所有问题都有用。2.2 DICOM 转 NIfTI别在这一步偷懒原始扫描仪导出的数据大多是 DICOM 格式一个序列几十上百个文件CAT12 不直接处理 DICOM需要转成 3D NIfTI 文件.nii。常用的转换工具有 dcm2niix、MRIcron 自带的 dcm2nii、SPM12 的spm_dicom_convert等。我个人的建议是用 dcm2niixGUI 版本是 dcm2nii.exe 或通过 MRIcron 调用。原因很实际它重命名规则灵活能自动识别序列而且会把翻转参数、空间位置信息处理好。命令行的基本用法是dcm2niix -f %p_%s -o /output_dir /input_dicom_dir其中%p代表患者名%s代表序列号。实操中更推荐带日期或其他唯一标识的重命名模式不然 87 个人都叫 T1_MPRAGE 的时候你就疯了。我习惯的格式是%i_%p_%s能同时保留 ID 和序列信息。转换完成后要做一次穷尽检查这一步不能省。用fsleyes或 MRIcron 逐一看每个 nii 的朝向对不对、脑组织有没有明显缺失。T1 像的标准朝向是矢状位上看额头朝左、枕叶朝右轴状位看左脑在图像右侧放射学朝向或左侧神经学朝向具体取决于写入设置。最关键的是三点左右是否翻转可以通过脑结构不对称性判断或者用 dcm2niix 的默认参数一般不会翻转、头动伪影是否严重、全脑是否被完整覆盖部分病例扫描时颈部偏下导致顶部头皮被截掉这种数据 VBM 会报错或者结果不可靠。2.3 数据目录规范从第一天就养成好习惯我个人强烈建议所有原始 nii 文件按照项目名/分组/编号的结构存放比如ADNI/ ├── HC/ │ ├── sub_001.nii │ ├── sub_002.nii └── AD/ ├── sub_003.nii └── sub_004.niiCAT12 批处理时支持指定文件夹或使用 Cell array 批量选择文件目录规范清晰能极大减少选错文件的概率。另外所有路径尽量不要包含中文和空格。我遇到过不止一次因为路径里含中文导致 CAT12 在生成报告或写数据时异常退出原因是 MATLAB 的编码和 Java 接口在非英文字符路径上容易出 bug。这个建议是反复被血腥教训验证过的。3. VBM 预处理全流程拆解每个选项背后是什么逻辑3.1 CAT12 的 VBM 主流程六步合一的简化在 CAT12 GUI 里选择Start CAT12后进入主界面选择VBM选项卡再点Preprocessing下面的VBM (Estimate and Write)就能看到预处理的主要设置面板。CAT12 把传统 VBM 流程封装成了一个集合操作偏置场校正、分割、空间标准化、调制、平滑全部跑完最后输出标准的mwp1*.nii、mwp2*.nii、mwp3*.nii文件。很多新手以为点一下 Start 就行其实界面里的几个下拉选项和数值才是决定结果质量的核心。传统 SPM12 的 VBM 流程是分割 → 空间标准化DARTEL→ 调制 → 平滑。CAT12 改进了这一流程在分割和时间标准化之间的具体实现上使用了一个更有针对性的配准方法内置了 DARTEL 的高保真版本作为核心配准方式并把偏置场校正也整合了进来。我的理解是CAT12 更像是“带质量控制的自动化工厂”而不是简单的“SPM12 功能包装”。界面上关键选项有Affine Registration仿射配准通常保持默认 DARTEL。这个选项会把个体脑进行初始配准把它挪到标准空间的大致位置。SPM12 分割选项如果选择跳过 CAT12 的优化分割就会退回 SPM12 默认分割方案但那样会损失 CAT12 的很多质量改进。Bias FWHM偏置场正则化默认 60mm代表低频强度不均匀性估计所使用的平滑范围。保留默认即可除非已知扫描仪有严重的偏置场问题。Voxel size for writing写出的体素大小默认是 1.5mm即产物体素大小为 1.5×1.5×1.5mm。如果你想要更高空间分辨率可以改成 1.0mm但计算量和存储量会显著上升统计上也不会带来多少额外收益——标准空间下的灰质体积比较在 1.5mm 下已经足够。还有一个容易被忽略的选项是Surface and thickness estimation。如果在 VBM 流程中勾选了它CAT12 会在分割的同时顺带重建皮层表面并计算皮层厚度相当于一次预处理同时得到 VBM 和 SBM 的产物。我个人非常推荐勾选因为完全不增加额外扫描成本只是计算时间变长了每个人大约多跑 10 分钟但后续你想做 SBM 的时候就不用重新回去跑预处理了。3.2 分割、标准化、调制三个关键环节的原理温习VBM 预处理的三个核心动作是分割、标准化和调制CAT12 把它们封装成了一个流程但我还是建议每一个使用者把这些步骤的数学和物理意义搞明白。否则后期你看到“为什么我的灰质体积结果和文献里的方向相反”这类问题时会完全没有头绪。分割Segmentation是将每个体素分类为灰质GM、白质WM、脑脊液CSF或其他组织的概率值。CAT12 内部用的是高斯混合模型加先验概率图谱结合的方案本质上和 SPM12 的 unified segmentation 一脉相承但 CAT12 在脑部形态异常比如脑萎缩、脑室扩大上的鲁棒性更好。分割输出的p1、p2、p3文件分别对应灰质、白质、脑脊液的 3D 概率图每个体素的取值范围是 0 到 1。空间标准化Spatial Normalization是拿个体脑通过非线性配准映射到 MNI 标准空间。CAT12 默认采用 DARTEL 策略它会在分割结果的基础上生成一个组的模板把所有人的灰质/白质图平均起来形成然后反复迭代配准到模板上。这一步的目的是保证“同一个坐标点在不同人脑上对应的是同一个解剖位置”。调制Modulation这里很多初学者会搞混。调制有两种默认的“调制”会把体积信息保留下来乘上雅可比行列式导致的体积变化量这样每个体素的信号就代表了“该体素在个体原始空间对应的灰质体积”而“非调制”只保留灰质浓度/密度信息即该体素灰质概率的相对值。比如一个人的整体灰质体积大在非调制图里每个体素的灰质概率也会系统性偏高所以在组间比较时非调制图反映的是灰质浓度差异而调制图反映的才是灰质体积差异。研究报告里通常会写“VBM 灰质体积”或“VBM 灰质浓度”这两个统计量对应的预处理不同。绝大多数研究用的是调制后的体积指标。平滑Smoothing是把调制后的灰质图用一个高斯核做空间卷积。平滑的核心目的是提高信噪比、满足统计检验中关于误差项正态性的假设另外也是为了抵消配准后仍然存在的个体间微小解剖差异。平滑核大小FWHM的选择有讲究过小比如 4mm噪声抑制不足统计结果容易出很多零散的小簇团可重复性差。过大比如 12mm 以上空间分辨率严重降低小的解剖结构差异会被抹平而且会引入边缘伪差。常用范围是 6–10mm。我自己的选择是 8mm对灰质体积分析属于比较折中的方案。如果样本量小每组 20 人以下可以适当加大到 10mm提高检验效能。3.3 运行批处理怎么同时跑几十上百个被试数据多了以后一个一个在 GUI 里点选就太机械了。CAT12 支持用spm_jobman跑批处理。你可以先在一个被试上生成并保存一个 Job 文件XML/mat 格式然后写一个简单的循环脚本批量调用。下面是一个我常用的脚本骨架% 批量预处理 VBM spm(defaults, PET); spm_jobman(initcfg); cat12_path /path/to/cat12; addpath(cat12_path); subjects {/data/HC/sub_001.nii, /data/HC/sub_002.nii, ...}; matlabbatch []; matlabbatch{1}.spm.tools.cat.estwrite.data_src subjects; matlabbatch{1}.spm.tools.cat.estwrite.output.GM.native 0; matlabbatch{1}.spm.tools.cat.estwrite.output.GM.mod 1; matlabbatch{1}.spm.tools.cat.estwrite.output.GM.dartel 0; matlabbatch{1}.spm.tools.cat.estwrite.output.WM.native 0; matlabbatch{1}.spm.tools.cat.estwrite.output.WM.mod 0; matlabbatch{1}.spm.tools.cat.estwrite.output.warps 0; matlabbatch{1}.spm.tools.cat.estwrite.extopts.expertmode 1; spm_jobman(run, matlabbatch);实际使用中我会在脚本里加try-catch并打印每个被试的完成状态这样跑完能快速看到哪些被试失败了、失败原因是什么。脚本本身不复杂但跑起来之后你会发现真正的瓶颈不是脚本而是计算资源和时间。预处理耗时取决于被试数量、机器 CPU 核数、是否同时开启表面估计。拿我这台 8 核 16 线程的机器来说单被试 T1 预处理含表面重建大约 15–25 分钟。批量跑 87 个被试大约需要 20 小时以上。这时有两个实用建议一是并行。如果你有 MATLAB Parallel Computing Toolbox可以通过parpool并行处理但要注意 CAT12 在某些并行组合下容易出随机性的文件写入冲突我个人反而更推荐用多个 MATLAB 实例每个实例处理不同分组或者写 shell 脚本多进程在服务器上跑。每 2 个核心跑一个 MATLAB 任务比硬上 parpool 稳得多实测效率也更高。二是不要中途关机建议配置自动保存并定期查看日志。如果遇到断电或系统重启导致中断已经跑完的被试不需要重跑直接在剩余被试上继续即可。4. SBM 预处理流程从灰质图到皮层表面指标4.1 表面重建与皮层指标的求取SBM 分析的是皮层表面的几何形态。CAT12 的 SBM 流程核心是把分割后的灰质/白质界面向外扩张重建出一个三角网格样条表面中表面然后在这个表面上逐顶点计算皮层厚度、皮层表面积、皮层灰质体积、皮层褶皱指数即局部回指数、皮层复杂度分形维数等指标。在 CAT12 GUI 的 VBM 预处理面板勾选Surface and thickness estimation后输出文件夹里会多出一系列*.central、*.thickness、*.fractal等文件。其中sub_XXX_central.nii中表面文件是后续 SBM 分析的基础。sub_XXX_thickness.nii皮层厚度图单位是毫米逐顶点数据。sub_XXX_gyrification.nii局部回指数。sub_XXX_fractal.nii分形维数。sub_XXX_surface_volume.nii皮层表面的局部体积。sub_XXX_surface_area.nii局部表面积。这些指标的意义差异很大。皮层厚度主要反映树突、神经元数量的变化对神经退行性疾病敏感表面积反映皮层的折叠模式更多受发育期影响在自闭症、精神分裂症等神经发育相关研究中很常用回指数反映脑沟回的复杂度和皱褶程度。4.2 SBM 的平滑与统计准备网格上的高斯平滑SBM 数据和 VBM 的体素数据格式不同它是定义在表面网格顶点上的标量场因此平滑也是在表面上进行而不是在三维体素空间。CAT12 提供了一个独立于 VBM 流程的 SBM 处理入口在 CAT12 主界面选Surface选项卡可以单独对已经得到的.thickness等文件做平滑、重采样或构造组模板。SBM 的默认平滑核是 15mm FWHM在表面上的扩散平滑。为什么比 VBM 常用 8mm 大这么多因为表面网格的顶点密度比体素稠密得多而且皮层厚度指标的空间变化本来就是相对平滑的较小的核起不到有效去噪的作用。如果样本量小甚至有文献用 20mm。我个人的做法是厚度指标用 15mm面积指标用 15mm分形维数用 15mm其实大抵都差不多。这个参数在后续做统计时可以调整不必过度焦虑。SBM 预处理还有一个重要环节是中心化central surface的质量检查。表面重建受 T1 图像质量影响很大头动、金属伪影、白质/灰质对比度差等都可能导致表面穿透或拓扑错误。CAT12 在生成表面时会自动计算一个质量分数输出在cat_*.xml报告里。我通常会在 SBM 分析前把这些 XML 报告批量整理一遍把质量等级为 C 或 D极差的被试直接剔除或者标记为可疑等人工复核。4.3 SBM 与 VBM 的结果对应关系一个例子为了说明 VBM 和 SBM 不是重复的分析这里举一个例子早期阿尔茨海默病的研究中VBM 结果显示内嗅皮层和颞叶灰质体积显著减小SBM 结果显示同一区域的皮层厚度降低但表面积变化不明显。这说明体积减小主要是由皮层变薄驱动的而不是皮质表面积缩小——这就是两种方法互补的价值所在。所以如果你有条件机器和时间我非常建议 VBM 和 SBM 都跑然后互相印证。CAT12 在一次预处理里同时给出两套产物算是性价比极高的方案了。5. 预处理质量检查这一步不做后面全是白做5.1 CAT12 的 QA 模块怎么用预处理跑完不代表可以直接做统计CAT12 提供了一个Check sample homogeneity功能这个模块会在所有被试的灰质图或皮层指标图之间做两两相关分析找出“离群”的被试。它的逻辑很简单如果某个人和所有人的相似度显著偏低那这个人大概率在预处理中出了问题或者本身就是极端解剖结构。我的流程是预处理结束后在 CAT12 主界面选择Check sample homogeneity选择要检查的指标比如mwp1*.nii或thickness同时填入协变量比如年龄、性别、总脑体积 TIV。运行完成后会生成一个 HTML 报告和一个dist_开头的相关图。报告里会列出哪些被试被判定为离群值。离群不是直接删除的理由但必须重新回到原始影像去看一眼。常见原因包括头动伪影、扫描期间局部信号丢失、配准失败、灰质分割错误等。如果确实是图像质量问题再考虑替换或剔除。5.2 分割质量可视化检查CAT12 还会生成一个cat_开头的文件夹里面存放了每个被试的cat_sub_XXX.xml报告文件。这个文件包含了分割的质量评分、脑组织体积估算、表面质量评估等。要快速浏览这些评分可以用 MATLAB 脚本批量读 XMLfiles dir(/data/CAT12_output/cat_*.xml); for i 1:length(files) x cat_io_xml(fullfile(files(i).folder, files(i).name)); fprintf(%s: IQR %.4f, WM %.4f, quality %s\n, ... files(i).name, x.qualityratings.IQR, x.qualityratings.res_WM, ... x.qualityratings.quality); end一般要看几个指标IQR图像质量等级越小越好res_WM白膜残留/分割误差以及最终的quality字母等级。A 代表优秀B 可用C 和 D 需要处理或剔除。我建议每个被试都实际看一张分割结果叠加重建的 jpg 图片。CAT12 会在cat_文件夹里自动生成一个sub_XXX_segmentation.png或类似命名的可视化图片打开快速翻一遍重点关注颞叶、额叶底部、小脑等分割容易出错的位置。这一步花费的时间不算多却能避免用坏数据跑完整个统计后再推翻重来。5.3 TIV总颅内体积到底要不要作为协变量TIVTotal Intracranial Volume的计算在 SPM12/CAT12 里是通过把灰质、白质、脑脊液的体积相加或加上其他组织得到的。TIV 与灰质体积有天然的高度正相关所以在做 VBM/SBM 统计时是否把 TIV 纳入协变量是一个长期争议的问题。我的建议是正式分析中默认纳入 TIV 作为协变量除非研究问题本身关注的就是个体差异相关的绝对体积。理由很简单我们需要比较的是区域性的体积/厚度差异而不是整体脑袋大小的差距。一个总颅内体积 1600mL 的患者内嗅皮层 2.5mL和一个 1350mL 的健康对照内嗅皮层 2.4mL直接比绝对值会得到错误结论。纳入 TIV 后相当于把所有被试的整体脑尺寸差异回归掉再去看区域性的附加差异。预处理阶段不需要做统计但需要把 TIV 保存好。CAT12 会在 XML 报告里输出eTIV或TIV值你可以批量提取到 Excel/CSV 备用。提取脚本也不复杂本质上就是读 XML 取字段。6. 常见问题与排查技巧实录以下问题全部来自我自己和同事实际跑数据时踩过的坑按发生频率排序整理成速查表。6.1 预处理报错与对策速查表报错或现象常见原因解决办法Error using spm_run_normalise或Cannot find a valid initial transformation初始配准失败数据质量太差、朝向错误、颅骨被裁剪检查 nii 朝向和覆盖范围用 FSLeyes 查看是否有明显头部截断剔除严重坏数据ERROR: No valid voxels in segmentation图像全黑或信息缺失可能是 DICOM 转换错误回看原始 DICOM重新转换检查 nii 的 intensity 分布Cannot create surface / Surface creation failed灰白质对比度太差或脑区严重萎缩表面重建中拓扑修复失效检查 T1 图像质量可尝试在 CAT12 中关闭“Use intensity”等表面优化选项必要时排除被试MATLAB 直接崩溃或内存不足机器 RAM 不够单被试预处理峰值可能占 8GB 以上或开了过多 MATLAB 实例关闭不必要的应用减少并行实例数增加 swap考虑用服务器跑输出只有p1、p2、p3没有mwp1勾选了 Native 或调制选项设置不对在 VBM 预处理面板确认输出 GM 的 modulated 选项为 1或在 jobman 脚本中设置output.GM.mod 1所有被试的灰质体积都非常大或非常小调制没有正确执行或模板选择错误确认调制选项检查是否误用了 pediatric 或 lifespan 模板同一个被试跑出来的结果两次不一样有随机初始化或 CAT12 版本不同或并行写入冲突检查是否同时有两个 MATLAB 实例处理同一份数据固定版本并重跑验证6.2 几个实操心得关于模板选择。CAT12 默认模板是面向成人的。如果你的样本是儿童比如 8 岁以前或严重萎缩的老年人可以在预处理时改用Template选项里的XM 0-1发育模板或Lifespan模板。这是一个很多人忽略的细节但对结果的解剖准确性影响很大。我曾经用默认模板处理一alle 5-6 岁儿童的数据结果颞叶和额叶区域的配准质量明显差于使用儿童模板的版本。关于肌肉骨骼影响的处理。CAT12 在分割时默认会把头部之外的体素归为“其他组织”但颈部组织、眼球、脂肪如果强度偏高可能会干扰偏置场校正导致分割不准确。因此在预处理前可以使用CAT12自带的质量控制选项或手动裁剪掉颈部的多余层面。这个操作只影响配准和分割的输入不会影响大脑本身的信号。关于批次效应。如果不同组被试是不同时间段、不同扫描仪采的预处理后的数据可能带有明显的中心效应/批次效应。预处理阶段能做的有限但至少你应该在分组列表里记录扫描仪型号和扫描参数后期统计分析时作为协变量或使用 ComBat 系列方法做批量校正。千万别忽略这一点我见过太多因为批次混杂导致假阳性结果的文章。关于 Y 轴反转问题。使用某些第三方转换工具或从某些数据库导出的 NIfTI 文件可能会出现神经学朝向和放射学朝向混用的情况。VBM 统计本身对镜像翻转并不敏感但对 SBM 的左右半球拓扑会产生影响。务必在预处理前用标准空间模板对比一下左右半球位置或者直接看侧脑室形态是否正常。7. 一个完整的最小运行示例最后给一个可以直接跑通的完整脚本示例。它适用于单个或多个被试的 T1 预处理生成 VBM 的调制灰质产物同时开启表面估计和厚度计算。假设你的数据放在/data/raw/下面输出到/data/cat_out/。% CAT12 VBM SBM 预处理批处理脚本 % 环境初始化 spm(defaults, FMRI); spm_jobman(initcfg); addpath(/path/to/cat12); % 数据列表 raw_dir /data/raw; subjects { fullfile(raw_dir, HC_001.nii) fullfile(raw_dir, HC_002.nii) % ... 把所有被试加进来 }; % 创建输出目录 out_dir /data/cat_out; if ~exist(out_dir, dir), mkdir(out_dir); end % 构建批处理任务 matlabbatch []; matlabbatch{1}.spm.tools.cat.estwrite.data_src subjects; % 输出设置 matlabbatch{1}.spm.tools.cat.estwrite.output.GM.native 0; matlabbatch{1}.spm.tools.cat.estwrite.output.GM.mod 1; % 调制灰质VBM主力 matlabbatch{1}.spm.tools.cat.estwrite.output.GM.dartel 0; matlabbatch{1}.spm.tools.cat.estwrite.output.WM.native 0; matlabbatch{1}.spm.tools.cat.estwrite.output.WM.mod 0; matlabbatch{1}.spm.tools.cat.estwrite.output.warps 0; % 不使用DARTEL流场 % 表面估计 matlabbatch{1}.spm.tools.cat.estwrite.output.surface 1; % 预处理参数 matlabbatch{1}.spm.tools.cat.estwrite.opts.tpm {fullfile(/path/to/cat12/templates_1.50mm/TPM.nii)}; matlabbatch{1}.spm.tools.cat.estwrite.opts.affreg mni; matlabbatch{1}.spm.tools.cat.estwrite.extopts.expertmode 1; % 关闭专家模式提示 % 运行 try spm_jobman(run, matlabbatch); fprintf(预处理任务全部完成。\n); catch ME fprintf(预处理出错: %s\n, ME.message); end实际上不同人使用的 CAT12 版本在 jobman 字段名上可能有细微差别。建议在 GUI 上先点一次把任务保存为.matjob 文件再修改这个 job 文件里的data_src列表来生成你自己的批处理脚本。这个办法最稳不会因为字段写错导致重复调试。跑完后检查/data/cat_out是否生成了mwp1*.nii、cat_*.xml、*.central、*.thickness等文件。齐了说明预处理基本通过没齐就回到第 5 节的质量检查环节一步步排查。8. 一些小技巧与后续计划在这个第 1 篇笔记的末尾补充几个我在实际使用中最想提醒自己的点一是在处理大规模数据前先用 3–5 个被试完整跑一次流程检查输出文件和计算时间确认没问题后再全量跑。这能帮你避免在批量跑完 80 个被试后才发现参数设错了。二是时刻保留原始数据备份。CAT12 的预处理并不修改原始 nii但它会在源目录下生成大量中间文件。保持原始目录只读或者至少把原始数据另外复制一份能让你随时可以重跑。这个习惯在投稿被要求重新分析时救过我好几次。三是对 SBM 结果多做表面可视化检查。体素结果看起来正常不代表表面结果就没问题皮质厚度分布有明显的解剖学规律——比如中央前后回的厚度相对较大、岛叶和扣带回也偏厚。如果看到一片区域厚度值明显异常比如超过 6mm大概率是表面重建中出现了拓扑错误这类个体在统计前就要标记出来。四是不要嫌麻烦把所有被试的预处理报告存档。CAT12 的 XML 文件本身就是很好的质量记录投稿或写数据说明的时候可以直接引用。我会按项目建一个QA_Reports文件夹把每个被试的 XML 复制进去同时写一个quality_summary.csv汇总质量等级、TIV、灰质体积等关键值。这个系列打算继续写下去。后面我计划整理基于 CAT12 的 VBM 组间比较完整流程含协变量设置与多重比较校正、SBM 统计分析含顶点水平的 GLM 和 TFCE、结果的女性化可视化方案以及如果不用 MATLAB有哪些 Python 替代方案比如 fMRIPrep FreeSurfer、DeepBrainNet 等可以做等效的形态学分析。每次更新都会基于我实际跑数据的经验不是为了凑系列而写是真的踩过坑、跑通过流程。这次关于数据预处理的笔记就先写到这里。最后再分享一个我觉得最有用的习惯每次预处理完花半小时对所有被试的灰质图或厚度图做一个简单的“平均图”用 FSLeyes 或 CAT12 自带查看器打开如果平均图的灰质边界清晰锐利说明配准和分割质量整体不错如果边缘模糊成一片说明有相当比例的被试处理不到位。这个一两分钟的人工检查比任何统计指标都直观也能在你陷入浩如烟海的质量数值时帮你快速建立对这批数据的整体信心。
返回列表