基于cat12和SPM12进行大脑VBM数据分析笔记2——统计分析

article/2025/10/16 3:20:21

小白一顿操作猛如虎——拿下VBM的双样本t检验

前言

培训的deadline到了,小编需要交作业了,所以就在此先把笔记记下来。作业需要提交一个报告,but这个报告我应该如何写呢,培训总结?哎,现在还是不清楚,先写着blog吧,或许写着写着就有了idea。上回说到VBM的预处理,只是简单写了操作,目的也只是为了让大家在不知到原理的情况下也能通过自己手动操作得到结果,在做的过程中,大家就会产生各种问题,比如为什么要分割,sMRI又有哪些指标需要我们去提取等等等问题,这样带着问题再去看相关的资料,学习效率会不会明显提高呢?小编亲身实验,确实提高不少,最起码理论不再是枯燥的理论,因为大脑中已经有了图像,图像信息总是比文字信息更加的直观,也更容易加深印象,不再那么抽象。或许这也是小编的导师给了我们几个小白一个月的时间来完成这个培训作业的目的吧!不求深入理解原理,懂得基本操作之后再去根据兴趣需要学习相关原理。因此,本篇将会简要介绍VBM的基本原理及其常用指标的统计分析基本操作,如有不对之处,还望多多指正。

一、环境配置(下载链接均在上一篇)

1、Matlab R2018a
2、SPM12
3、cat12

二、VBM基本原理简介

1、VBM的基本原理(详细原理)
VBM,全称Voxel-Based Morphometry,基于体素的形态学测量法,能定量计算局部灰质体素的大小和信号强度。其原理为核磁共振扫描每一幅原始图像都由若干体素构成,每一个体素有自己的信号强度density,通过雅可比行列式Jacobian determinant)可以将强度和体积/密度关联起来。接下来便是其处理的步骤。
2、空间分割
空间分割目的是分别获得灰质、白质和脑脊液3中组织成分,还有一些其他的背景成分。医学图像分割的最高准则是图像分割的准确性,应当充分利用图像中的各种先验信息,从许多正常个体的脑结构磁共振图像得到的先验概率(图像的灰度值代表像素属于灰质、白质或脑脊液的先验概率,如下图所示:)图(1)
可以作为这些子集空间分布的先验近似估计,以先验概率为依据,指定每个集里每个像素的初始概率,开始迭代运算,最后得到个体图像的分割图。
3、空间标准化
空间标准化就是把所研究的各个个体的sMRI标准化到一个相同的立体空间。其目的是变形图像以致于不同个体脑的同一性区域能被尽可能地匹配,所以只是去除大致的脑解剖学差异,并不是点对点的精配准。标准化时模板图像的选择不应导致最后的结果有差别。应尽可能提高配准质量,空间标准化后的图像要求有相对较高的分辨率。
4、图像平滑
平滑目的是提高信噪比,是被试间的比较在合理的空间标度范围内进行,便于被试间的平均化。根据中心极限定理,平滑也使数据更接近于正态分布,增加了参数统计检验的有效性。一种常用的平滑方法是:利用三维高斯核和图像进行离散卷积运算,高斯核选为各向同性的,即3个方向上的平滑度一样。高斯卷积核的定义用半最大值全带宽(full width at halfmaximum,FWHM)表示,即高斯函数高度的最大值下降为1/2时所对应的横坐标轴的宽度。

@copyright:小编原创不易,转载注明出处哦!
https://editor.csdn.net/md/?articleId=109076293

三、VBM统计分析过程

上回说到估计了TIV,那接下该做什么呢?当然是我们这篇的主题——统计分析小白操作!统计分析首先要明确VBM包含哪些指标或者说结构特征,再者结构特征获得后,两组比较怎么做,最后有一些协变量又如何回归,比如TIV,估算出来之后需要回归(哈哈,没想到吧,TIV竟然是个协变量,需要回归掉的,小编也是继续学习之后才知道的),这些都是在做VBM需要思考的问题,大家可以在此停留思考一下,或点击详细原理查看,里面可能有你想要的答案!那话不多说,让我们带着问题继续:
1、统计分析选用方法
SPM提供的检验工具,用来做双样本T检验,至于为什么这么做,这是个问题,可以去查询,这里还是以操作为主,基本原理为辅。其基本步骤框架如下图所示:
在这里插入图片描述
还记得SPM得菜单界面吧,不记得了我们可以在Matlab命令框里面调用spm,就会发现菜单界面有以上三个按钮,这三个按钮未来出现得频率将会特别高,如下图所示。
在这里插入图片描述
2、基于SPM的VBM统计分析具体操作步骤
(1)生成设计矩阵,点击上图中的圈1(Specify 2nd-level)按钮,进入以下界面:
在这里插入图片描述
接下来完成此界面的填写。
第一步:双击Directory,这个是需要你选择你的输出结果放置的文件夹,所以可以在做VBM的文件夹里面创建一个结果文件夹,命名自己想好,建议用便于识别的文件名,用英文,需要空格的地方用下划线标注,养成良好的命名习惯,会提高学习效率哦,一定要注意文件夹的结构一定要设计好,因为你很有可能会像小编一样需要学习各种模态图像处理的训练。
在这里插入图片描述
第二步:点击Design,选择two-sample t-test,接下来给Group 1 scans和Group 2 scans导入被试的结构特征数据,注意下面我选择是smwp1的数据,平滑后的灰质
第三步:选完这些后,由于小编只是做练习,并没有比较全的数据,所以此处小编仅选择全脑体积TIV作为协变量回归。当你需要做比较全面的结构分析研究时,协变量就还可能会有年龄、性别等等。现在双击Covariates,出现下图中的Covariate,Vector是选取的协变量的值,双击Vector,在这可以去在预处理环节生成的TIV.txt文件中20个被试的全脑体积值复制粘贴输入进去,Name自行命名即可。在此之后全部默认
在这里插入图片描述

在这里插入图片描述

第四步:点击运行即可,设计矩阵即可生成了。标志便是可以在自己定义的输出文件夹中看到下面这个文件。
在这里插入图片描述
(2)估计(Estimate),通过上一步的SPM.mat文件去估计β值。至于这个β值是什么,请看下图
在这里插入图片描述

统计分析采用的是一般线性模型进行估计,此处X便是第一步生成的设计矩阵,而Y是输入的scans对的数值——即输入的nii图像转换而来的。e是随机噪声,此处由于是练习,没有加入,实际处理要根据具体情况具体考虑。这样便可以所有的都是已知,便可以估计出具体的β值喽。(有问题欢迎指出)
操作步骤:点击SPM菜单界面的Estimate,弹出batch框,只需双击要输入mat文件的选项,导入上一步生成的SPM.mat文件即可,如下图所示:

在这里插入图片描述
导入之后点击运行即可,之后就会在文件夹中产生β值对应的图像文件和更新的SPM.mat文件,注意此时的spm.mat文件是β值得数据,β值的图像文件如下图所示:
在这里插入图片描述
(3)组间分析(Results),此处具体原理暂时不明,等小编学明白了再更新,现在只讲基本操作步骤:
第一步:点击Results,按照(2)估计的同样步骤选择SPM.mat文件,选择完点击down,弹出做相关分析的窗口,如下图所示:

这里需要介绍以下,上图中的Design matrix第一列黑白块为小编训练数据的第一组(健康被试)的参数,第二列黑白块为小编训练数据的第二组(病人被试)的参数,至于它具体代表什么小编现在还不是特别清晰。知道这些之后我们就可以点击Define new contrast…,弹出下面这个框,按如下两步点击ok
在这里插入图片描述
再选择down就可以弹出下面的图框,此处选择默认点击none,其他几个按钮具有什么样的意义读者可自行选择尝试了解
在这里插入图片描述
选择none之后就会出现FWE的p值设置,点开输入自己想要的p值即可,此处设计为0.05,一般如果设置这个结束之后会再出现一个小框,让你输入一个控制体素的值,这时候就说明是差异的,但是需要控制多少体素才算是有个差异区,小编讲的比较通俗,目前也是这么理解的。
在这里插入图片描述
输入结束之后我们就能看到差异区域的图,类似于下图的样式,但是由于小编的数据量太小,所以此处没有找到组间差异。
在这里插入图片描述
至此,VBM其中的结构特征之一——mwp1被试名标准化灰质体积的双样本T检验就此结束,其他结构特征也是如此,只是换一下输入数据scans而已。


http://chatgpt.dhexx.cn/article/iVwOIVPM.shtml

相关文章

磁共振影像分析之: 基于FSL的VBM分析(1)

磁共振影像分析之: 基于FSL的VBM分析(1) 基本概念 在开始之前, 先给出几个基本概念: 磁共振成像 磁共振成像(Magnetic Resonance Imaging, MRI)是一种基于核磁共振原理和射频波探测组织结构和功能的医学影像技术. 值得一提的是, 磁共振成像技术没有辐射, 对人体没有影响. …

MRI图像处理:VBM原理和步骤

VBM是voxel-based morphometry的缩写, 是对被试之间灰质体素粒度统计分析。VBM可以得到人群中volume和gyrification的不同,对clinical score进行相关性分析,VBM不仅仅可以用于结构数据(T1),还可以用在fmri和…

MRI脑影像分析从哲学到技术:一文搞懂VBM预处理基本原理(全网最详细解析)

基于体素的形态学方法(voxel-based morphometry, VBM),是分析大脑解剖学(结构)差异最常用方法之一。 其通过给大脑volume逐体素打标签(分类)的方式来进行组织分割(segmentation&…

LabVIEW程序测试

LabVIEW程序测试 工程师经常不太关注测试,将更多时间用于其他开发。通过一定程度的测试,可以保证节省时间。 开发人员必须清楚地了解对测试的期望程度。此外,还必须标准化测试方法并跟踪测试结果。在开发需求和设计规范时,还要制…

史上最详细的小程序测试用例模板,以后再也不怕测试用例不会写了

目录 1. 文档介绍 1.1 文档目的 1.2 文档范围 1.3 读者对象 1.4 术语与缩写解释 2. 功能测试用例 2.1 被测试对象的介绍 2.2 测试范围与目的 2.3 测试环境与测试辅助工具的描述 2.4 功能测试用例 附录:评审意见 1. 文档介绍 1.1 文档目的 设计测试用例…

软件测试人员一定要会的微信小程序测试点

微信小程序: 不需要下载安装即可使用的应用, 实现了应用“触手可及”的梦想,用户扫一扫或者搜一下即可打开应用。 体现了“用完即走”的理念,用户不用关心是否安装太多应用的问题。 应用将无处不在,随时可用&#…

小程序测试流程

流程分为两个方面,解包可以挖掘信息泄露问题、隐藏的接口,抓包可以测试一些逻辑漏洞、API安全问题。两者结合起来就可以边调试边进行测试,更方便于安全测试。 搜索目标小程序 目标搜索不能仅仅局限于主体单位,支撑单位、供应商、…

【软件测试】

系列文章目录 文章目录 系列文章目录前言第四章 单元测试4.1 软件测试过程概述4.2 什么是单元测试4.2.1 单元测试的定义4.2.2 单元测试的重要性4.2.3 单元测试原则 4.3 单元测试的目标和任务4.3.1 单元测试的目标:单元模块被正确编码4.3.2 单元测试的主要任务 4.4 单…

软件测试之测试程序开发

软件测试培训之测试程序开发 脚本维护,测试数据准备,测试监控准备; 测试程序开发 性能测试场景设计和性能测试脚本设计中需要注意以下几个问题: 场景真实性: 每个脚本的具体操作步骤,是和真实环境操作类似的,每个场景内的测试程序之间的逻辑关系,压力比重…

程序员的测试课

git项目地址:GitHub - dreamhead/geektime-todo: Geektime Todo is a demo todo project for Geektime column. 1、实现一个Todo应用 设计规范 1、对于输入参数的检测,由入口部分代码进行处理。如空字符串。 2、Repository 的问题以运行时异常 的形式抛…

软件测试重点知识

软件测试的定义: 利用人工或自动化的手段来运行或测定某个系统,其目的在于测它是否满足规定的需求或检测预期结果与实际结果之间的差异。 软件测试的目的: 发现软件中存在的问题或缺陷,检查软件系统是否满足要求。 软件测试的对象…

跑批利器--读取文件

在上篇文章中已经对示例的基本业务和流程进行了解,同时也知道了SpringBatch的三个接口ItemReader,ItemProcessor,ItemWriter.接下来我们主要是通过示例来具体处理一个文本文件,将里面的数据和内容通过SpringBatch的加工处理来存到新的数据库中. SpringBatch提供专门的类去读取文…

金融任务实例实时、离线跑批,Apache DolphinScheduler 在新网银行的三大应用场景与五大优化...

在新网银行,每天都有大量的任务实例产生,其中实时任务占据多数。为了更好地处理任务实例,新网银行在综合考虑之后,选择使用 Apache DolphinScheduler 来完成这项挑战。如今,新网银行多个项目已经完成了实时与准实时的跑…

线程并发处理跑批任务

定时任务类代码: package com.jzfq.rms.autoApprove.job;import com.alibaba.fastjson.JSONObject; import com.jzfq.rms.autoApprove.bean.InnerRuleProcess; import com.jzfq.rms.autoApprove.bean.InnerRuleProcessQueryBean; import com.jzfq.rms.autoApprove.s…

Oracle-job跑批变慢案例

前言: 近期处理了一起应用job跑批变慢的案例,在一天job执行时间突然增加了几十倍,后面通过分析是由于索引的设计不合理导致执行计划的异常,把当时的问题分析过程记录下来,分享给大家。 问题: 数据库job存储执行时间增加几十倍 原因…

架构师自诉:如何做到百万数据半小时跑批结束

业务背景 跑批通常指代的是我们应用程序针对某一批数据进行特定的处理 在金融业务中一般跑批的场景有分户日结、账务计提、欠款批扣、不良资产处理等等 具体举一个例子 🌰 客户在我司进行借款,并约定每月 10 号码还款,在客户自主授权银行…

基于Kettle跑批的案例说明

需求概述 通过动态配置表的方式完成在kettle里动态配置参数,并调用ktr,实现跑批的目的。 问题分析 定义一个ktr读取配置表的信息并将拷贝记录到结果定义一个ktr从结果里获取记录并设置变量定义业务ktr(即按照业务需要开发的…

学习笔记-如何设计离线跑批系统

一、基本概念 离线跑批:通常指批量加工数据、完成一系列流程的定时任务。 业务场景:在银行、金融、支付出现较多,其他行业也可能涉及。 1. 定时的数据状态更新(到期失效) 2. 数据计算(计算罚息、计提&…

跑批利器--示例

接下来我们将通过简单的一个在线商店的应用示例来展示如何使用SpringBatch.通过这个示例我们可以进一步去理解SpringBatch批量处理程序它是如何实现高效的读写数据,何时去使用内部组件,如何实现你自己的组件,以及如何配置一个批量任务在Spring容器中. 这里我们简单描述一下业务…

如何设计一个多线程处理跑批功能

一、背景 最近承接了一个需求,背景是用户当天可以参与比赛竞猜,当天20点前参与竞猜,第二天上午10点出结果。系统的实现思路是用户参与竞猜时增加竞猜记录,第二天早上9点开始进行跑批,跑批依赖业务的配置,要…