VBM全流程详解:从CAT12分割到双样本t检验的SPM实操指南

简介:这份资料面向神经影像领域的科研人员与研究生,提供VBM(基于体素形态学分析)软件及其配套学习教程。VBM作为SPM的插件,用于对MRI数据进行标准化、分割和灰质密度校正,以探究大脑结构的细微变化。资源共21个文件,以MATLAB的.m脚本为主,包含VBM5.1-Manual.pdf操作手册、txt说明文档等,压缩包仅226KB,轻量便携,便于快速部署。已有1771人学习下载。内容涵盖VBM2与VBM5.1两个版本的工具包及详细教程,从MNI空间配准、灰质/白质/脑脊液分割到统计参数图解读均有涉及,可帮助初学者理解基于体素的形态学分析流程,并在实战中掌握t值/z值结果的解释方法。适合具备基础MRI知识、希望系统入门VBM分析的医学影像与认知神经科学方向读者。

1. VBM到底是什么:从“肉眼量脑区”到“逐体素找差异”

拿到一批T1像,几十个被试分两组,想找脑结构差异。传统做法是手动勾画ROI,费时不说,一次只能验证一两个预设脑区,换个脑区就得重画一遍。VBM(Voxel-Based Morphometry,基于体素的形态学分析)把这些工作标准化了:把所有人的脑配准到同一个MNI空间,分割出灰质、白质、脑脊液,再逐体素做统计,全脑几十万个点一次比完。耗时从几周压到一天,结果还能用MNI坐标直接写进论文。这套方案特别适合神经影像、老年痴呆、精分等方向的研究者,也是审稿人最熟悉的脑结构分析路径之一。下面从软件下载开始,把SPM+CAT12这条链路完整跑一遍。

2. VBM软件选型:SPM+CAT12与FSL-VBM怎么选,以及下载安装的完整步骤

VBM不是一个单独的安装包,而是“模板配准 + 组织分割 + 统计检验”的组合流程。能干活的主流方案有两套:SPM12配CAT12工具箱,以及FSL的fslvbm命令行流程。选错方案,后面每一步都会觉得别扭:一个卡在图形界面和批处理之间,一个卡在脚本调试和结果可视化上。

2.1 两套主流方案的边界在哪里

SPM+CAT12跑在MATLAB环境里,图形界面和批处理脚本都有,自带数据质量报告(QA),配准用的是DARTEL高维非线性算法,在体素形态学场景下非常成熟。FSL-VBM是纯命令行的bash流程,适合Linux服务器、喜欢全脚本管理的团队,但它的分割和配准分散在多个脚本里,中间产物多,出了问题调试时像个黑匣子。

对比项 SPM12 + CAT12 FSL-VBM
运行环境 MATLAB,跨Windows/macOS/Linux Linux/macOS命令行,依赖FSL
界面 GUI + 批处理 纯shell脚本
组织分割 内置统一分割,输出灰白质概率图 基于FAST分割
非线性配准 DARTEL,精度高 FNIRT
质量控制 CAT12自带QA/DQI报告 无内置工具,需要自己写检查
适合场景 临床研究、单机处理、新手友好 服务器批量、全命令行团队

我的建议很直接:除非你的课题组已经有一套成熟FSL流程在跑,否则新项目一律上SPM+CAT12。原因很现实:CAT12的QA报告能直接回答“这批数据能不能用”,这一条就能帮你挡掉大量返工。

2.2 CAT12下载与MATLAB环境准备

下载要去SPM官网和CAT官网拿官方压缩包。网上有些二次打包的“一键版”,带着旧版本或改过的路径配置,出问题后排查起来非常痛苦。MATLAB版本不要用太老的,SPM12对版本兼容性有明确要求,装好后先确认能正常启动再继续。

注意:SPM12和CAT12的安装路径不要出现中文和空格,这是MATLAB环境下最容易被忽视的坑。

我见过太多人把工具包放进 D:\研究\工具\cat12 这种路径,结果某个子函数读不了路径,报错还看不出来原因。换成 D:\tools\spm12 和 D:\tools\cat12 之后一次通过。目录规划建议是这样的:

  • 工具目录: D:\tools\spm12 、 D:\tools\cat12
  • 数据目录: D:\data\adni_t1 、 D:\data\stats
  • 输出目录: D:\data\output
% init_spm_cat.m —— 每次启动MATLAB先运行这一段
% 把SPM12和CAT12挂到MATLAB搜索路径
addpath(genpath('D:\tools\spm12'));
addpath(genpath('D:\tools\cat12'));

spm('defaults', 'PET');    % 借用SPM的默认参数框架,PET/EPI均可
spm_jobman('initcfg');     % 初始化作业管理器,批处理必需

which cat12                % 能打印出cat12.m的完整路径就说明加载成功

逻辑说明: addpath(genpath(...)) 把工具包下的所有子目录都加进搜索路径,CAT12依赖SPM的多个子函数,这一步漏了会在后面报 Undefined function 。 spm('defaults', 'PET') 是为了让SPM进入统计参数图流程的默认设置,用PET还是EPI在这个环节没有实质差别。 spm_jobman('initcfg') 是批处理前必须执行的一步,跳过它运行 spm_jobman('run', ...) 会直接报错。最后 which cat12 是一个验证动作:如果输出为空,多半是CAT12压缩包没解压完整,或解压后多了一层嵌套目录,检查一下文件结构即可。

2.3 跑通第一个VBM示例数据

CAT12压缩包里的 data 目录会带几幅示例T1像,专门用来验证环境。别一上来就处理自己的数据,先把示例跑通,能排除掉九成环境问题。

% run_first_vbm.m —— 用示例T1验证CAT12分割链路
ex_t1 = spm_select(1, 'image', '选择示例T1');   % 弹窗选一幅示例T1
matlabbatch{1}.spm.tools.cat.estwrite.data = {ex_t1};
matlabbatch{1}.spm.tools.cat.estwrite.output.mod = 1;  % 输出调制后灰质图
spm_jobman('run', matlabbatch);

跑完后数据目录里会多出 c1 、 c2 、 c3 、 mwc1 等前缀的NIfTI文件。 mwc1 是调制后的灰质图,是后续统计分析用的主料。这一条跑通,说明MATLAB、SPM12、CAT12三者兼容性没问题,可以放心上自己的批量数据。

如果你的机器上没有MATLAB图形界面,也可以改成从命令行传参的方式。批处理脚本本身不依赖GUI,只有 spm_select 这一步需要界面交互;换成代码里直接写死文件路径,整个流程就能丢到服务器上跑。

3. 从T1到灰质体积图:CAT12批处理流程与核心参数

VBM的中间链路可以拆成四步:格式转换、数据检查、分割配准、平滑。每一步都有参数要调,VBM项目翻车,十有八九是这四步里的参数组合出了问题。下面按顺序把每一步的落地细节讲清楚。

3.1 数据准备:格式、命名和第一批次检查

医院拿到的基本都是DICOM格式,VBM流程需要的是NIfTI,转换工具用dcm2niix,免费跨平台。转换之前把每个被试的DICOM单独放到一个文件夹,避免同一个被试的多个序列混在一起。

# 批量转换:把sub001的DICOM目录转成NIfTI
# -z y 输出nii.gz压缩格式,SPM12可以直接读
# -f sub%03d_T1w 按“sub+三位序号”命名
# -o 指定输出目录
dcm2niix -z y -f sub%03d_T1w -o /data/nifti /data/dicom/sub001

参数说明: -z y 把输出压成 .nii.gz ,SPM12和CAT12都能直接读,不要担心兼容性。 -f 控制输出文件名, sub%03d 会生成 sub001_T1w.nii 这种带补零的编号。 -o 后面是输出目录,建议全部被试统一放在同一个 nifti 目录下,后面批处理只需要指一个文件夹。

命名这件事值得单独拎出来强调:三个被试如果叫 sub1 、 sub01 、 sub001 ,输出前缀各不相同,统计建模时稍不注意就会对错位。更危险的是重名文件,两个被试的T1都叫 T1.nii ,分割输出直接互相覆盖,跑完才发现人数少了。统一用 sub001_T1w.nii 这种格式,全局唯一。

第一批次检查要做的是看每幅T1的原始质量:有没有头动重影、金属伪影、大面积灰白质对比度丢失。CAT12之后会出正式的QA报告,但开始前用肉眼粗筛一遍,能把明显坏掉的数据提前剔掉,省得它们在批处理中途报错中断整个队列。

3.2 批量分割的核心参数:bias、采样与调制

CAT12的分割在GUI里叫Segment,批处理对应 estwrite 这个模块。研究组数据多时,把文件名写进cell数组一次跑完。

% batch_segment_cat12.m —— 批量分割配准所有T1
t1_files = {
    '/data/nifti/sub001_T1w.nii'
    '/data/nifti/sub002_T1w.nii'
    '/data/nifti/sub003_T1w.nii'
    % 继续往下加被试
};

matlabbatch{1}.spm.tools.cat.estwrite.data = t1_files;
matlabbatch{1}.spm.tools.cat.estwrite.opts.biasreg = 0.001;  % 偏置场正则化
matlabbatch{1}.spm.tools.cat.estwrite.opts.biasfwhm = 60;    % 偏置场平滑核(mm)
matlabbatch{1}.spm.tools.cat.estwrite.opts.samp = 3;         % 采样距离(mm)
matlabbatch{1}.spm.tools.cat.estwrite.output.mod = 1;        % 1=调制(体积),0=不调制(密度)
spm_jobman('run', matlabbatch);
参数 常见值 作用 什么时候动
biasreg 0.001 偏置场正则化强度,数值越小校正越激进 线圈不均匀明显时调到0.0005
biasfwhm 60 偏置场平滑核 一般不动
samp 3 分割采样距离 追求精度可调2,耗时明显增加
mod 1 调制:保留配准后的体积信息 做密度分析才关,默认开

参数说明: biasreg 控制偏置场校正的强度,MRI信号不均匀时分割会出错,CAT12用这个参数做正则化约束。数值越小校正越激进,但它是个“按下葫芦浮起瓢”的参数,调太小会把真实组织对比度也抹掉,所以优先用默认值,只有QA报告明确提示偏置场问题时才动。 biasfwhm 是偏置场估计时的平滑核,60mm是覆盖常见硬件不均匀尺度的经验值。 samp 是分割时对图像做各向同性采样的距离,3mm是精度和耗时的折中点,数据质量差或重点脑区小时可以用2,但耗时可能翻倍。 mod 决定是否做调制,这是VBM最核心的概念:配准到MNI空间时,局部体积会被拉伸或压缩,调制就是把这种形变信息乘回去。开调制得到的是灰质体积,不开得到的是灰质密度。绝大多数VBM论文说的是体积,所以 mod=1 是默认选择。

3.3 平滑核:什么时候用8mm,什么时候换6或12

分割调制后的图像还不能直接进统计,需要先平滑。平滑有三个目的:提高信噪比、让体素数据更接近正态分布、抵消配准后的残余个体差异。平滑核太小,噪声压不住,统计结果碎片化;平滑核太大,小的结构被直接抹掉,等于白扫。

% smooth_gm.m —— 对调制后灰质图做8mm平滑
gm_imgs = spm_select('FPList', '/data/nifti', '^mwc1.*\.nii$'); % 选所有调制灰质图
matlabbatch{1}.spm.spatial.smooth.data = cellstr(gm_imgs);
matlabbatch{1}.spm.spatial.smooth.fwhm = [8 8 8];   % 各向同性8mm高斯核
matlabbatch{1}.spm.spatial.smooth.dtype = 0;        % 保持原数据类型
spm_jobman('run', matlabbatch);

fwhm = [8 8 8] 表示三个方向都用8mm半高全宽的高斯核,这是VBM的经典参数。平滑后的文件前缀是 smwc1 ,统计建模时认准这个前缀就不会拿错文件。如果研究的是小核团,比如蓝斑、杏仁核亚区,可以把平滑核降到6mm甚至4mm,但前提是配准精度足够好,否则残留误差会被凸显。如果样本量小、个体差异大,10到12mm的平滑反而能帮你找到更稳健的宽泛差异区域,代价是定位精度下降。这个取舍要在论文方法里写清楚。

4. 组间比较怎么做:两种研究设计、协变量与统计阈值

分割和平滑做完后,每个被试得到一张 smwc1 灰质图,接下来的问题是:两组人的灰质到底差在哪。VBM最常用的是双样本t检验,配对设计用配对t或ANOVA也能走同一套SPM框架。这一章的决策直接影响结果能不能发表。

4.1 双样本t检验的基本假设与协变量选择

VBM的统计本质是逐体素的线性模型,核心自变量是组别,但T1衍生的体积数据几乎总受年龄、性别、颅内总体积(TIV)影响。年龄必须放进模型:全脑灰质随年龄自然下降,如果两组年龄有差异,不控制年龄直接就是把年龄效应误读成疾病效应。TIV也要放:头大的人灰质绝对体积自然大,两组如果平均头围不同,局部灰质萎缩的差异会被淹没在全局尺度差异里。性别同理。

协变量数量不是越多越好。样本量只有三四十人时,塞进五六个协变量,模型自由度会被吃光,统计功效大幅下降。我的经验是:年龄、性别、TIV三个是标配,其他如教育年限、病程等只在假设明确时加入,并且要用独立样本检验确认它们确实与因变量相关。

4.2 统计批处理脚本与结果读出

% stats_ttest.m —— 病人组 vs 对照组,含年龄性别TIV协变量
% 先读入临床信息表,保证行顺序与分割时的图像顺序一致
demo = readtable('/data/demo.csv');  % 列:id, age, gender, tiv, group
age = demo.age; gender = demo.gender; tiv = demo.tiv;

% 用文件名列表构建两组输入,顺序与协变量一一对应
all_files = cellstr(spm_select('FPList', '/data/nifti', '^smwc1.*\.nii$'));
patient_smwc = all_files(1:32);   % 假设前32个被试是病人组
control_smwc = all_files(33:64);  % 后32个是对照组

matlabbatch{1}.spm.stats.factorial_design.des.t2.scans1 = patient_smwc;
matlabbatch{1}.spm.stats.factorial_design.des.t2.scans2 = control_smwc;

matlabbatch{1}.spm.stats.factorial_design.cov(1).c = age;
matlabbatch{1}.spm.stats.factorial_design.cov(1).cname = 'age';
matlabbatch{1}.spm.stats.factorial_design.cov(1).iCC = 1;   % 全局中心化
matlabbatch{1}.spm.stats.factorial_design.dir = {'/data/stats/ttest_AD'};
spm_jobman('run', matlabbatch);

% 估计参数:SPM把基于体素的统计都归到fmri_est,VBM也走这个
matlabbatch{2}.spm.stats.fmri_est.spmmat = {'/data/stats/ttest_AD/SPM.mat'};
spm_jobman('run', matlabbatch);

% 定义对比:病人组 < 对照组
matlabbatch{3}.spm.stats.con.spmmat = {'/data/stats/ttest_AD/SPM.mat'};
matlabbatch{3}.spm.stats.con.consess{1}.tcon.name = 'AD < NC';
matlabbatch{3}.spm.stats.con.consess{1}.tcon.convec = [1 -1 0 0 0];
spm_jobman('run', matlabbatch);

convec 的长度是“两组均值 + 协变量数量”,这里放了年龄、性别、TIV三个协变量,所以是 [1 -1 0 0 0] 。前两个数字 1 -1 表示病人组均值减对照组均值,后三个0表示协变量不参与对比。如果要看反方向,写成 [-1 1 0 0 0] 即可。

结果读出在SPM的Results按钮里,选中SPM.mat,指定对比和阈值后就能看到叠加在模板上的显著簇。值得注意的是SPM把VBM统计归在 fmri_est 模型里,新手看到 fmri 字段会疑惑,其实这里只是SPM内部的模型估计入口,与功能磁共振无关。

4.3 多重比较校正:FWE、FDR与TFCE怎么选

几十万个体素同时检验,不做多重比较校正等于主动生产假阳性。SPM里常用的有三档:体素级FWE要求peak的p<0.05,最严格,样本量不够时往往一个点也剩不下;FDR温和一些,适合探索性研究;cluster级FWE是现在论文里的主流做法——先设一个体素水平的筛选阈值,通常用未校正p<0.001,再对连成片的体素簇做FWE校正。

FSL的randomise里还有TFCE(基于阈值无簇增强),不需要预先设定体素阈值,置换检验直接给每个体素打分,对小效应且分布弥散的差异更敏感。务实建议是:新研究、样本量不大,用体素未校正p<0.001筛簇并报cluster FWE;如果结果一个簇都过不了,再看FDR,但要在论文里明确写“本结果经FDR校正”。同一批数据反复换阈值直到显著,这是审稿人最反感的p-hacking,千万别干。

5. VBM避坑指南:这五个问题我几乎在每批数据里都见过

VBM流程链长,前面任何环节的错误都会在最后一环爆发。以下五条是真实数据上反复出现的问题,每条按现象、原因、解决的顺序写,遇到类似情况可以直接对照排查。

5.1 现象:QA报告大面积红叉、分割严重错位

CAT12跑完会生成QA报告(check data quality),用颜色标出每例的分割质量,红色代表严重问题。最常见的诱因是头动伪影:被试扫描时轻微移动几毫米,T1边缘就出现重影,分割时脑脊液被分进灰质,概率图到处是斑块。另一类是偏置场严重,信号不均匀导致灰质概率图呈奇怪的梯度分布。

原因:头动和线圈不均匀是硬件层面的问题,参数调整只能掩盖,不能根治。解决:先看QA给出的exclude建议,如果超过10%的被试被标记,就要在论文里报告排除标准,并重新采集这些被试。轻微偏置场问题可以把 biasreg 从0.001调到0.0005重跑,但大的头动伪影必须走重采流程,不要指望算法能修复。

5.2 现象:跑完发现输出文件被覆盖,统计时数量对不上

批处理几十个被试后建模,报错说某个smwc文件不存在,或者统计人数比预想少了好几个。原因十有八九是输入命名不唯一:两个被试的T1都叫 T1.nii ,或者 sub001_T1w.nii 与 sub01_T1w.nii 生成的前缀极易混淆。

解决:DICOM转换阶段就用全局唯一数字编号,并加一道清点防线:

# 检查smwc1文件数量是否与被试数一致
ls /data/nifti/smwc1*.nii | wc -l

# 如果少了,列出已经跑完的被试编号,和原始名单比对
ls /data/nifti/smwc1*.nii | sed 's/smwc1//; s/.nii//' | sort > /tmp/done.txt

第一条命令输出文件总数,第二条生成已完成编号清单。数量对不上时,先查命名,再翻批处理日志看是否有被试分割到一半报错退出。CAT12跑长队列时偶尔会因为内存不足中断某个被试,日志里会有 Out of memory 记录,这种重跑单例就行。

5.3 现象:统计结果一个显著簇都没有

双样本t检验全脑空荡荡,这是VBM里最常见的挫败时刻。先查三件事:调制开没开、协变量有没有放TIV、平滑核是不是太大。

如果 estwrite 里设了 mod = 0 ,实际上比的是灰质密度而不是体积,配准形变会把真实的局部体积差异吸收掉,结果自然一片空白。TIV不放进去,组间头围差异会消耗统计功效,等于在模型里留了一个巨大的噪声源。平滑核从8mm改到16mm,局部萎缩效应被抹平,也找不到簇。还有一个容易踩的坑:有人把未调制的 c1 图当成输入,正确输入是 smwc1 ,也就是“平滑+调制+灰质”产物的组合。改完这些再跑,先用未校正p<0.005看效应分布,确认差异脑区符合解剖直觉,再把阈值收紧到p<0.001。

5.4 现象:SPM估计时设计矩阵提示数据不足

跑 fmri_est 时报“设计矩阵不可逆”或“InSufficient data”。这类报错通常和样本量、协变量数量、数据完整性三个因素有关。总人数少于“组数+协变量数”时,模型数学上根本估计不出来;协变量里混入缺失值NaN,矩阵直接变成奇异矩阵。

另一个隐蔽原因是图像列表与协变量行序错位:统计脚本里写的第5个smwc文件和demo表格第5行的年龄不是同一个人,模型拟合出的方差会异常大,间接导致同样的报错。

解决:确认被试数至少是协变量数加组数的三倍以上;把图像列表与协变量矩阵按被试编号排序后打印出来逐一核对,笨办法最可靠。如果个别被试分割失败没有输出smwc文件,记得从两个列表同时删掉,不要让长度错位。协变量里绝对不能有NaN,用 demo = rmmissing(demo) 提前清理。

5.5 现象:peak坐标落在脑室或白质,和文献对不上

结果图上读出的peak坐标在脑室或白质里,和文献已知的灰质萎缩区域对不上。原因通常是配准失败:个别被试有脑畸形或大片白质病变,DARTEL把结构拉错了位;另一个原因是阈值太低,出来的小簇本身就是噪声簇。

解决:把统计图叠加到组平均模板上,肉眼检查每个报告的簇。SPM的Results界面里打开“明显示簇范围”,确认peak体素确实落在灰质结构内。写论文时把坐标旁标注模板来源(MNI152或ICBM),审稿人追问时才能说清楚。配准失败的个例,直接考虑从分析中剔除,并在排除流程里写明依据。

6. 收尾:结果可信不可信,先过这三关再投稿

6.1 先过质量关:DQI值和exclude名单

CAT12的QA报告不只看彩色图,要盯三个数字:IQR(图像质量等级)、DQI平均值、exclude标记。我自己的习惯是跑完批处理就把QA报告全部导出,凡是被标记 exclude 或两个以上指标亮红的被试,直接列进论文排除名单,并在方法里写一句“排除标准基于CAT12的DQI异常值”。这样审稿人不会在这个环节纠缠,因为你有明确、可复现的排除依据。

6.2 再过配准关:肉眼检查每一例

配准质量是VBM最大的黑匣子。批处理跑完绝不意味着每颗脑袋都对齐得很好。我一般会把每例的 smwc1 图叠加在模板上,逐层看矢状位和轴状位,重点观察侧脑室边缘、扣带回、小脑扁桃体三个结构有没有错位。三十个被试大约二十分钟,这二十分钟能挡住绝大多数翻车。如果发核心期刊,这一步的检查截图甚至可以放进补充材料,审稿观感会好很多。

6.3 最后过效应量关:别只报p值

显著结果至少要补一个效应量,否则审稿人一句“效果是否小到无意义”就能让返修来回折腾。两样本t检验在两组样本量接近时,可以用峰值t值近似估算Cohen's d:

t_val = 4.32;         % 从SPM结果表抄的峰值t
n1 = 32; n2 = 32;     % 两组样本量
d = 2 * t_val / sqrt(n1 + n2 - 2);  % 近似Cohen's d
fprintf('Cohen''s d ≈ %.2f\n', d);

这个公式只适合两组样本量相等或接近的场景,正式报告建议用G*Power或R的 effectsize 包算精确值。最后一个习惯是:每次跑完一批数据,把QA报告、配准检查记录、统计结果表归档在同一个项目文件夹里,文件名带上日期。VBM这个流程我已经跑过几十批数据,下载、分割、统计每个环节都有各自的玄学,但把QA、配准、效应量这三关守住,结果基本站得住。希望帮到你。

本文还有配套的精品资源,点击获取 menu-r.4af5f7ec.gif

基于cat12和SPM12进行大脑VBM数据分析笔记2——统计分析 基于cat12和SPM12进行大脑VBM数据分析笔记2——相关分析 阅读详情

相关推荐

基于cat12和SPM12进行VBM&SBM数据分析笔记1——数据预处理

基于cat12数据分析基础教程笔记 今年是小编步入研究生生活的第一年,研究方向待定,但主要以磁共振成像为主,以后会不断地总结这方面的知识,涉及MRI扫描,数据分析基础方法理论,软件操作教程,文献阅读笔记总结等等,用来记录我的研究生三年学习过程。编写尽量简洁明了,通俗易懂,本就是小白,也能体会小白的痛。不过这也要谢谢一个人手动@小白(网名),是他教我要把自己所学的写下来,讲出来才能真正的做到输入和输出,查漏补缺。而cat12软件操作是我面临的第一个数据分析的训练,写的可能也不会非常到位,还望各位专业人士指出改

Sophia2023的博客 4万+

Android性能优化(三)之内存管理

1、初识内存优化 在Android的性能优化的各个部分里,内存的问题绝对是最令人头疼的一部分,虽然Android有垃圾自动回收机制不需要手动干预,但也恰因为此,出现内存问题如内存泄漏和内存溢出等,如果对内存管理机制不熟悉,会更加难以排查问题。 因为内存方面的知识较多且不易理解,内存优化部分就分两篇文章进行,本文主要是关于Java、Android的内存分配、回收、GC等理论知识。 2、内存分配 谈A...

weixin_33997389的博客 376

基于cat12搞定VBM的ROI分析——vertex水平和ROI水平的双样本T检验

前言 一、什么是ROI分析 二、ROI的皮层指标提取 三、终极目标找差异

Sophia2023的博客 1万+

如何解决Binder泄漏问题

作者:王小二C 2019/09/06前言[011]一个看似是系统问题的应用问题的解决过程[1]中我们解决了一个注册过多的BroadcastReceiver导致的某一次发...

嵌入式Linux 4222

VBM法MRI图像处理——记第一次使用cat12

1.环境 MATLAB 2015b SPM12 CAT12 2.SPM部分 命令行输入 spm 出现 以及 点击Toolbox 出现 3.CAT部分 点击上图 设置请根据自己需求 多分割了一种surface皮层数据,当做皮层统计分析SBM时需要提取surface皮层指标时会用到。 我本意只是获得灰质、白质的体积,建议设置NO,不然跑好久。 省略添加.nii文件......开始run,得到结果 其中mri文件夹里剩下四种命名的.nii文...

weixin_46141330的博客 7581

基于ROI的VBM和SBM分析|指标值的提取|CAT12工具包

利用CAT12工具包进行VBM和SBM分析,基于感兴趣的ROI图谱进行指标的值的提取:主要内容:1. 原始文件的准备2. 预处理CAT12 segment:配准、分割、标准化、调制;ROI图谱的定义。3. ROI结果提取:基于VBM的灰质体积,基于SBM的皮层厚度、沟深、皮层褶皱等。使用预处理dicom转格式+reorient头动矫正后的T1像(我用的是RESTplus进行预处理,因此选择预处理后STRUCHC文件夹下,每个人的co前缀的nii文件)

zhu_ziqing的博客 3047

Service内部类Binder造成的内存泄漏

前言 我写了一个基础的绑定service,参考Android documentation,但是点击按钮解绑的时候LeakCanary告诉我内存泄漏了。。。 Code // ITest.aidl package com.jesse.first.aidl; interface ITest { int getData(); void setData(int i); } //MyService.java package com.jesse.first; import android.app.S

jessecode的博客 4146

基于cat12和SPM12的VBM数据分析实战:从预处理到统计检验

本文详细介绍了使用cat12和SPM12进行VBM数据分析的完整实战流程。从环境搭建、原理解读,到利用cat12进行全自动预处理(包括分割、标准化、平滑与质量检查),再到SPM12中构建统计模型并进行双样本t检验,最后指导结果解读与报告。内容旨在帮助神经影像分析人员,特别是新手,系统掌握从原始数据到统计发现的VBM核心分析方法。

weixin_29280657的博客 507

binder对象回收初探

binder回收初探   2018-9-27 IPackageDeleteObserver.Stub继承于Binder类,在应用中进行getPackageManager().deletePackage调用的时候,会传递一个Binder的回调对象给PMS(system_server)        PackageDeleteObserver observer = new PackageDel...

aaajj的专栏 1557

基于CAT的VBM和SBM计算学习笔记(二)感兴趣区(ROI)&全脑体积(TIV)

本文介绍了用cat12运算VBM前,如何抓取ROI信息;运算VBM后,如何转化ROI文件和提取全脑体积,为之后的统计分析做好准备。t=N7T8基于CAT的VBM和SBM计算学习笔记(一)VBMhttps://mp.csdn.net/mp_blog/creation/editor/140665644。

Rose9614的博客 4345

Matlab+SPM12+CAT12三件套:VBM分析中的双样本t检验保姆级教程

本文提供Matlab+SPM12+CAT12三件套在VBM分析中实施双样本t检验的完整教程,涵盖环境配置、数据预处理、统计分析和结果可视化全流程。通过详细的代码示例和质量控制要点,帮助研究者高效完成脑结构差异分析,特别适合神经影像学初学者快速上手。

app77的博客 192

基于cat12和SPM12进行VBM数据分析

VBM 能定量计算局部灰质体素的大小和信号强度,从而能够检测出局部脑区的特征和脑组织成分的差异。参考这篇文章操作:根据这篇文章操作:将原始的磁共振文件.dcm文件转换成spm以及cat能够处理的格式.nii文件。这里格式转换的方式有很多,比如使用dcm2niigui转换工具,或者直接使用dpabi软件进行转换,这里演示如何用dpabi进行图像格式的转换。(1) 将工作路径切换至图像数据存在的地方,并在该路径下按如下图格式创建文件夹,其中T1Img文件夹中存放未经过格式转换的被试.dcm文件。

weixin_54794458的博客 9266

基于cat12和SPM12的VBM数据分析实战:从预处理到统计检验全流程解析

本文详细解析了使用CAT12和SPM12进行VBM(基于体素的形态学测量)数据分析的全流程。从Matlab环境配置、数据准备,到CAT12预处理(包括质量控制与调制),再到SPM12中的统计检验设计、模型估计与结果解读,提供了完整的实战指南与关键参数设置建议,帮助研究者高效、准确地完成脑结构影像分析。

weixin_29202687的博客 193

基于CAT的VBM和SBM计算学习笔记(一)VBM

回顾一下,本笔记介绍了从T1原始图像到灰质体素图像的全过程。在先使用DPABI软件预处理好T1图像后,用Cat的Segment自动化功能得到分割后的灰质体素图像,再用spm进行Smooth。那么就得到了可以使用的灰质体积图像,后续再通过TIV得到全脑体积,然后进行组间比较、临床相关等统计分析即可。

Rose9614的博客 4701

SPM12+CAT12 VBM全流程实操:从DICOM到灰质密度图

Voxel-Based Morphometry(VBM)是一种基于体素的脑结构MRI定量分析方法,核心原理是通过空间标准化、组织分割与调制,实现全脑灰质密度的组间统计比较。其技术价值在于无需手动勾画ROI,即可在全脑范围内检测细微形态学差异,广泛应用于阿尔茨海默病、精神分裂症等神经退行性与精神疾病研究。典型应用场景包括临床队列的纵向追踪、药物干预前后皮层厚度变化评估,以及大型公开数据库(如ADNI、UK Biobank)的复现分析。本文聚焦VBM最主流实现路径——SPM12与CAT12工具箱协同工作,覆盖环

weixin_28678151的博客 337

OnlyOffice Docker部署踩坑实录:解决Nginx反向代理导致的editor.bin下载失败

本文详细解析了在Docker中部署OnlyOffice时,因Nginx反向代理配置不当导致editor.bin下载失败的常见问题。通过分析问题根源,提供了从Nginx代理配置、Docker网络设置到OnlyOffice容器内部调整的完整解决方案,并分享了实战调试技巧与性能优化建议,帮助用户彻底解决这一部署难题。

wine的专栏 517

CAT12(spm12)MRI图像预处理

这篇博客只写用cat12将MRI脑图像分割为白质,灰质和脑脊液的操作步骤。

咸yu奶糖的博客 3万+

ISP Tuning实战:从零开始调校相机传感器的完整流程(附避坑指南)

本文详细介绍了ISP Tuning的完整实战流程,即如何从零开始调校相机传感器以优化成像质量。内容涵盖从黑电平校正、镜头阴影校正等基础标定,到自动曝光、伽马校正、色彩校正等核心画质调校,再到降噪与锐化的平衡策略,并提供了关键的避坑指南。掌握ISP Tuning是提升相机传感器性能、实现从‘能用’到‘好用’的关键技术。

weixin_32098457的博客 187

matlab保存nii_基于cat12搞定VBM的ROI分析——vertex水平和ROI水平的双样本T检验

前言本来上周要更新此篇的,但由于本身有问题没有解决清楚,再加上导师给了数据处理的任务下来了,两下耽搁,就等到现在了。上回说到,做了VBM和SBM的指标提取及双样本T检验的统计分析,那接下来我们还可以做什么呢,可以从许多文献中看到,有的不仅仅只计算每个体素指标值之间的差异,还会想到要将其放到各个脑区上,比较指标在脑区之间的差异,而ROI分析就是问了解决这个问题。需要注意的是,目前小编通过cat12....

weixin_34550241的博客 1644

ADRV9009学习资料保存:基于XC7Z100+ADRV9009的双收双发无线电射频板卡

ADRV9009学习资料保存:基于XC7Z100+ADRV9009的双收双发无线电射频板卡 一、板卡概述 基于XC7Z100+ADRV9009的双收双发无线电射频板卡是基于XilinxZYNQFPGA和ADI的无线收发芯片ADRV9009开发的专用功能板卡,用于5G小基站,无线图传,数据收发...

9304

S32K144 SDK实战:FTM输入捕获模块的配置与应用

本文详细介绍了S32K144 SDK中FTM输入捕获模块的配置与应用实践。从基础认知到开发环境搭建,再到引脚配置和中断处理技巧,全面解析了如何利用FTM模块实现高精度信号测量。特别适用于电机控制、工业测速等场景,帮助开发者快速掌握S32K144的FTM输入捕获功能。

weixin_42566424的博客 214

基于SPM8或CAT12进行的VBM分析

基于SPM8或CAT12进行的VBM分析 需要的工具:Matlab及SPM8/SPM12 一、SPM8/12的VBM分析 1)首先将DICOM格式转换为NIFTI格式; 2)用display查看图像,可以手动进行AC-PC校正(此时最好校正,后面需要用到); 3)图像分割:运用new segment将T1结构像分割为灰质、白质、脑脊液。 4)DARTEL:具体的原理我也不是很清楚,此步比较耗时。 5)标准化:Normorlize FHWM=8 二、CAT12的VBM分析 1)首先将DICOM格式转换为NIF

mollyue的博客 4509

Python爬虫技术应用:体育赛事直播数据抓取与分析

Web爬虫(Web Crawling)是一种通过模拟浏览器行为从网站获取数据的技术。发送请求:发送HTTP请求(通常是GET或POST请求)获取目标网页的HTML内容。解析网页:使用解析工具(如lxml)从HTML中提取出所需要的信息。存储数据:将抓取到的数据存储到数据库、文件或数据结构中,供后续分析和使用。数据分析与展示:使用数据分析工具(如PandasMatplotlib)对数据进行处理、清洗和可视化,生成有价值的报告和图表。Requests:用于发送静态网页的HTTP请求并获取响应。

2201_76125261的博客 1304
上一篇: Vue 项目集成 G6 流程图:从零到跑通的完整指南
下一篇: 自动化测试验证码处理全攻略:图形、滑块与短信验证码实战
weixin_33796205
博客等级 码龄11年 5014粉丝 1175原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值