基于Dpabi和spm12的脑脊液(csf)分割和提取笔记

一、前言

  脑脊液(csf)一直被认为与新陈代谢有重要关联,其为许多神经科学研究提供重要价值,从fMRI图像中提取脑脊液信号可用于多种神经系统疾病的诊断。特别是自2019年Science上那篇著名的csf-BOLD文章发表后,大家都试图用csf阅读出更多的信息。

  本人提取csf信号的思想都基于封面2019年这篇Science,不过因为扫描参数不同略有调整。我在学习csf-extract时还是花了一个月的时间,并且踩了不少坑,特此在这篇笔记里梳理与分享。

同一个被试的BOLD序列和最终得到的csf图像

二、环境配置

系统:Windows 11
软件运行平台:Matlab2022a
所需工具包:

  1. SPM12(下载安装教程)
  2. DPABI(​​​​​​下载安装教程)

三、脑脊液提取过程

csf protocol

目录

一、前言

二、环境配置

三、脑脊液提取过程

1.数据预处理

a.时间层校正(Slice Timing)

b.头动校正(Realign)

2.提取csf掩模

3.抓取csf信号

总结



1.数据预处理

DPARSF的基础教程在此不做赘述,如需要可以参考(基础教程)。

将功能像的数据都由dcm转化为.nii文件并去除了前面10个时间点后,就可以开始预处理了。

  • a.时间层校正(Slice Timing)
  • 首先必须要进行的是Slice Timing,因为各扫描层激发时间不同Slice timing校正可以将所有切片的信号同步到一个参考时间点,通常是TR(重复时间)的中点。打开DPARSF后在红框所圈范围分别填上序列对应的Slice Number,Slice Order和参考切片(一般为中间)。然后点击右下角运行。
  • DPRASFslicetiming前后对比,会发现信号强度经过了细微调整。
  • b.头动校正(Realign)
  • 【可选】头动校正(Realign)。有些用短回波成像的研究中并没有进行这一步,因为会改变csf附近的体素信号,但是我处理的是正常TR=2的序列。如果不进行头动校正影响较大,我还是选择了Realign,方法仅供参考。但无论是否应用头动校正,都需要DPARSF的头动参数.txt文件,让我们排除掉头动过大的被试。
DPARSF Realign前后,可以看到值基本没有太大变化。
 

  • 【可选】滤波(Filter)。滤波参数我选择的是0.01-0.1HZ因为低频信号通常包含呼吸、心跳等生理噪声,高频信号可能包含仪器噪声等无关信息。
  • 要不要做滤波? -可以都试。很多作者也报告省略滤波后的结果。但我用没有bandpass的信号进行相关矩阵分析发现:如果不做带通滤波,被试间的信号都显著相关,说明噪音大;bandpass后被试的信号只和自己的序列相关,与他人无关,说明提升了信噪比。
  • 如何做滤波? -用DPARSF请手动检查!最好自己写脚本,报错少。DPARSF的滤波功能应该是使用y_bandpass()函数完成的,会在某些情况下在一个时间点上生成全是0信号。如果用DPARSF自带的滤波,一定要在处理完后逐个时间点检查。
    滤波前后

2.提取csf掩模

  在前面的步骤中,我们将BOLD信号经过了时间校正(Slice Timing)、头动校正(Reaglign)、带通滤波(Filter)后已经得到了信噪比较高的BOLD图像。

  对预处理后的4DBOLD进行时间维度求平均,得到单张3D均值图像,然后利用SPM12的分割工具对该均值图像进行组织分割,得到CSF的概率图。之后设置较高的概率阈值(0.9)创建CSF掩模,以确保提取的是高置信度的CSF区域。最后将这个掩模应用到原始的4D功能像上,即可得到目标区域内的CSF时间序列信号。这种方法的优势在于通过严格的阈值筛选,保证了提取信号的可靠性。

% 计算均值图像并用SPM分割得到CSF掩模
img = mean(func_4d.img, 4);
save_nii(img, 'mean.nii');
spm_segment('mean.nii'); % 提取CSF区域信号
mask = double(csf_prob.img)/256 >= 0.9;
csf_timeseries = func_4d.img .* repmat(mask,[1,1,1,size(func_4d.img,4)]);

3.抓取csf信号

  脑脊液主要分布在脑室系统和蛛网膜下隙中。在大脑横断面水平切片上,从下到上看,最大的CSF池是位于脑干前方的桥前池,这是在底部切片的位置。这就是我们在提取CSF信号时主要关注最后非零切片的原因 ,在这个位置上的CSF信号最为纯净,受到周围灰质和白质组织的污染最少。

% 对每个时间点的3D体积提取CSF信号
for i = 1:size(img,4)% 获取当前时间点的3D体积img3d = img(:,:,:,i);% 找到含有信号的最后一个切片(对应脑底部CSF池的位置)nonZeroSlices = squeeze(any(any(img3d, 1), 2));lastNonZeroSlice = find(nonZeroSlices, 1);img2d = img3d(:,:,lastNonZeroSlice);csf(j,i) = mean(img2d(img2d>0));
end

总结

  提取出来的csf可以与全脑信号计算耦合呢。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/59536.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

力扣:94--中序遍历二叉树

树 – 二叉树 完全二叉树: 完全二叉树可以用数组完美匹配位置(先序存储:根左右), 推论一 : 位置为k的节点,左孩子:2*k 1 ,右孩子 : 2 * (k 1&…

SQL 常用语句

目录 我的测试环境 学习文档 进入数据库 基础通关测验 语句-- 查 展示数据库; 进入某个数据库; 展示表: 展示某个表 desc 查询整个表: 查询特定列: 范围查询 等于特定值 不等于 介于 特定字符查询 Li…

Android——画中画模式

应用中的画中画 监听回到桌面与打开任务列表的广播收到广播之后,调用 enterPictureInPictureMode 方法进入画中画模式重写活动页面的 onPictureInPictureModeChanged 方法,补充进入画中画模式或退出画中画模式时的处理逻辑 回到桌面与切到任务列表 按…

keepalived 高可用搭建

一、部署准备 准备两台Linux(ubuntu)设备 主机:192.168.2.78 备机:192.168.2.18 设备安装keepalived(主机和备机都安装) sudo apt-get install keepalivedkeepalived配置文件为keepalived.conf,开始时文件可能不存在…

MySQL utf8mb3 和 utf8mb4引发的问题

问题描述 Cause: java.sql.SQLException: Incorrect string value: \xF4\x8F\xBB\xBF-b... for column sddd_aaa_ark at row 1 sddd_aaa_ark 存储中文字符时,出现上述问题 原因分析 sddd_aaa_ark在数据库中结构是 utf8字符的最大字节数是3 byte,但是某些…

ONLYOFFICE 文档8.2更新评测:PDF 协作编辑、性能优化及更多新功能体验

文章目录 🍀引言🍀ONLYOFFICE 产品简介🍀功能与特点🍀体验与测评ONLYOFFICE 8.2🍀邀请用户使用🍀 ONLYOFFICE 项目介绍🍀总结 🍀引言 在日常办公软件的选择中,WPS 和微软…

SAP-ABAP开发-ONLINE 程序、DIALOG屏幕开发

目录 一、Online 程序概览 1、程序类型 2、Online程序的主要对象 二、界面 1、SAP的屏幕开发 2、屏幕功能实现 3、界面中的事件块(Event Block) 4、界面的创建 三、简单界面元素 1、文本/输入框控件 2、数据检查 3、一些常用的关键字 四、复…

java、excel表格合并、指定单元格查找、合并文件夹

#创作灵感# 公司需求 记录工作内容 后端:JAVA、Solon、easyExcel、FastJson2 前端:vue2.js、js、HTML 模式1:合并文件夹 * 现有很多文件夹 想合并全部全部的文件夹的文件到一个文件夹内 * 每个部门发布的表格 合并全部的表格为方便操作 模…

平替谷歌翻译--沉浸式翻译

这款插件真特么的猛啊!!! 谷歌插件或者油猴插件都有。 沉浸式翻译 - 免费双语对照网页翻译插件

SDL基本使用

#include <stdio.h>#include <SDL.h>#undef main int main() {printf("Hello World!\n");SDL_Window *window NULL; // 声明窗口SDL_Init(SDL_INIT_VIDEO); // 初始化SDL// 创建SDL Windowwindow SDL_CreateWindow("Basic Window"…

印尼市场潜力无限!用友司库直联助力中企印尼“掘金”

在经济全球化的浪潮下&#xff0c;东南亚市场正焕发出勃勃生机。而其中印度尼西亚作为东盟 大的经济体&#xff0c;被认为是东南亚重要、有活力的市场之一&#xff0c;成为中企出海竞相布局的热门目的地。然而&#xff0c;在积极进军印尼市场的过程中&#xff0c;中国企业普遍面…

【系统架构设计师】2023年真题论文: 论软件可靠性评价的设计与实现(包括和素材和论文)

更多内容请见: 备考系统架构设计师-专栏介绍和目录 文章目录 真题题目(2023年 试题3)论文素材参考论文参考摘要正文总结真题题目(2023年 试题3) 软件可靠性评价是利用可靠性数学模型、统计技术等,对软件失效数据进行处理,评估和预测软件可靠性的过程,包括选择模型、收集数…

【贪心算法】No.1---贪心算法(1)

文章目录 前言一、贪心算法&#xff1a;二、贪心算法示例&#xff1a;1.1 柠檬⽔找零1.2 将数组和减半的最少操作次数1.3 最⼤数1.4 摆动序列1.5 最⻓递增⼦序列1.6 递增的三元⼦序列 前言 &#x1f467;个人主页&#xff1a;小沈YO. &#x1f61a;小编介绍&#xff1a;欢迎来到…

自动驾驶---“火热的”时空联合规划

1 背景 早期的不少规划算法都是横纵分离的&#xff08;比如Apollo&#xff09;&#xff0c;先求解path之后&#xff0c;依赖path的结果再进行speed的求解。这种横纵解耦的规划方式具有以下特点&#xff1a; 相对较为简单&#xff0c;计算量通常较小&#xff0c;容易实现实时性…

三十三、Python基础语法(面向对象其他语法-下)

一、属性划分 1.类属性 类属性&#xff1a;类属性就是类对象具有的属性&#xff0c;一般写法在类内部、方法的外部定义的变量,就是类属性&#xff0c;类属性在内存中只有一份。可以通过类名直接访问&#xff0c;也可通过实例访问。 class Circle:# 类属性&#xff0c;定义圆…

在VSCode中读取Markdown文件

在VSCode安装Markdown All in One或Markdown Preview Enhanced即可 插件Markdown All in One GitHub&#xff1a;https://github.com/yzhang-gh/vscode-markdown v3.6.2下载链接&#xff1a;https://marketplace.visualstudio.com/_apis/public/gallery/publishers/yzhang/vs…

IDEA在编译时: java: 找不到符号符号: 变量 log

一、问题 IDEA在编译的时候报Error:(30, 17) java: 找不到符号符号: 变量 log Error:(30, 17) java: 找不到符号 符号: 变量 log 位置: 类 com.mokerson.rabbitmq.config.RabbitMqConfig 二、解决方案 背景&#xff1a;下载其他同事代码时&#xff0c;第一次运行&#xff0c…

蓝禾,汤臣倍健,三七互娱,得物,顺丰,快手,途游游戏25秋招内推

蓝禾&#xff0c;汤臣倍健&#xff0c;三七互娱&#xff0c;得物&#xff0c;顺丰&#xff0c;快手&#xff0c;途游游戏25秋招内推 ①蓝禾 【岗位】国内/国际电商运营&#xff0c;设计&#xff0c;研发&#xff0c;营销&#xff0c;职能&#xff0c;工作地&#xff1a;深圳 【…

简单又便宜的实现电脑远程开机唤醒方法

现有的远程开机方案 1&#xff09;使用向日葵开机棒 缺点是比较贵一点&#xff0c;开机棒要一百多&#xff0c;而且查了评论发现挺多差评说不稳定&#xff0c;会有断联和无法唤醒的情况&#xff0c;而且设置也麻烦&#xff0c;还需要网卡支持WOL 2&#xff09;使用远程开机卡 …

《SparkSQL--通过ThriftServer连接DataGrip》

ThriftServer 功能&#xff1a;类似于HiveServer2&#xff0c;负责解析客户端提交的SQL语句&#xff0c;转换成Spark的任务进行执行本质&#xff1a;Spark中的一个特殊的程序&#xff0c;利用程序的资源运行所有SQL&#xff0c;该程序除非手动关闭&#xff0c;否则一直运行 启…