根据脑图谱获取感兴趣区域的mask
根据脑图谱获取感兴趣区域的mask
- 1,引入
- 1.1 ASPECT-Atlas
- 2,获取脑图谱感兴趣区域mask
- 参考:
1,引入
脑影像分析中,我们常常会针对性的对某些感兴趣区域进行分析,而对它们进行分析的前提是获取该区域的mask。感兴趣区域可以用以某些坐标为球心的球形区域定义,也可以用脑图谱上对应的某些脑区定义,其中,后者是较为常见的,也是我们今天要讨论的。脑图谱是一类特殊脑影像,它的每一个位置上不是信号值,而是脑区编号(标签),这也就意味着我们可以通过感兴趣区域的脑区编号,得到对应的感兴趣区域位置的集合,它也就是感兴趣区域的mask。
本文参考自:【MRI脑影像分析——根据脑图谱获取感兴趣区域mask,以海马体与丘脑为例(matlab+nilearn+nibabel+REST1.8)】。https://blog.csdn.net/sinat_35907936/article/details/118481241
1.1 ASPECT-Atlas
脑图谱是一类特殊脑影像,它的每一个位置上不是信号值,而是脑区编号(标签)。任何一个图谱都会有其对应的脑区编号(标签)表。非常常见的是一些包含海马体,丘脑等部位的脑图谱。
本文是做ASPECT评分任务的,为了更方便讲述,下面主要以ASPECT-Altas来进行讲述。
如下图所示为ASPECT的图谱。如果需要此图谱的可以私聊我。
这个图谱的对应标签值为:
我们可以看到,当点击图谱的M1左区域时,itk-ansp可以显示其标签强度值为10. 与列表相同。
以下将使用ASPECT-Atlas,提取岛叶,尾状核等所有部位,并保存成nii.gz格式数据。
这里主要使用python的方式,使用nibabel函数库。
2,获取脑图谱感兴趣区域mask
nibabel是python平台上用于解析神经影像的工具,不仅可以解析nifti也可以解析gifti。这里用它来解析并封装nifti,以生成mask。mask类型与保持上面一致。
pip install nibabel
提取M1左,对应标签:10.
一般建议选ROI内保存成1,区域外为0.
import numpy as np
import nibabel as nibarea_name = 'm1_left'
ROI_label = 10img = nib.load('./templete/AspectsAtlas_padding_2mm.nii.gz')
data = img.get_fdata()
mask = np.zeros(data.shape)# 创建mask
mask[data==ROI_label] = 1# 用原先的仿射矩阵与头包装mask成nifti
#区域内为1,区域外为0,一个编号new_img = nib.Nifti1Image(mask,img.affine, header=img.header)
new_img.to_filename(area_name + '_uni_mask.nii')# 区域内为原来编号,区域外为0
data = np.array(mask*data, dtype=np.uint8)
new_img = nib.Nifti1Image(data, img.affine, header=img.header)
new_img.to_filename(area_name + '_sep_mask.nii')
我们可以看下效果:M1左脑区被提取出来。
下面展示一次性读取excel表所有脑区,并保存:
import numpy as np
import nibabel as nib# 读取excel
import pandas as pd
# 指定 Excel 文件路径
excel_file_path = './templete/ASPECTAtlas_label_lookup.xlsx' # 替换为你的Excel文件路径
# 读取 Excel 文件
df = pd.read_excel(excel_file_path)
# 提取两列数据到列表
column1_data = df['parts'].tolist() # 替换 'Column1' 为第一列的实际列名
column2_data = df['label'].tolist() # 替换 'Column2' 为第二列的实际列名print(column1_data,column2_data)# 读取ASPECT-Atlas
img = nib.load('./templete/AspectsAtlas_padding_2mm.nii.gz')
data = img.get_fdata()for i, name in enumerate(column1_data):mask = np.zeros(data.shape)ROI_label = column2_data[i]area_name = './ASPECT_Region_3D/' + name# 创建maskmask[data == ROI_label] = 1# 用原先的仿射矩阵与头包装mask成nifti# 区域内为1,区域外为0,一个编号new_img = nib.Nifti1Image(mask,img.affine, header=img.header)new_img.to_filename(area_name + '_uni_mask.nii.gz')
参考:
[MRI脑影像分析——根据脑图谱获取感兴趣区域mask,以海马体与丘脑为例(matlab+nilearn+nibabel+REST1.8)]
https://blog.csdn.net/sinat_35907936/article/details/118481241
相关文章:

根据脑图谱获取感兴趣区域的mask
根据脑图谱获取感兴趣区域的mask 1,引入1.1 ASPECT-Atlas 2,获取脑图谱感兴趣区域mask参考: 1,引入 脑影像分析中,我们常常会针对性的对某些感兴趣区域进行分析,而对它们进行分析的前提是获取该区域的mask…...

Android Framework通信:Handler
文章目录 前言一、Handler源码分析1、创建Handler2、发送消息3、取消息4、消息处理5、线程切换的方法(Handler异步消息处理机制流程)handler.sendMessage()handler.post()View.post()Activity中的runOnUiThread() 二、Handler高频面试题1、为什么要有Han…...

Redis的安装和配置
一、Redis的安装 使用命令将redis安装到linux服务器 yum -y install redis配置redis配置文件 redis的配置文件默认路径为/etc/redis.conf,对配置文件进行修改。 (1)注释掉bind 127.0.0.1; bind配置项设置的是redis允许的ip地址访问…...

Java武侠文字游戏
import java.util.Random;public class Role {//姓名private String name;//血量private int blood;//性别private char gender;//长相(随机)private String face;String[] boyfaces {"风流俊雅", "气宇轩昂", "相貌英俊", "五官端正"…...

数字化时代下,汽车行业如何突破现有营销困境?
之前三年的“口罩”时期,给全球和中国汽车市场带来不小影响,汽车销售市场整体下滑,传统营销模式很难适应现阶段汽车营销需求,那么在当下,汽车行业应该如何突破现有营销困境呢?接下来就由媒介盒子跟大家聊聊…...

19 | 如何搞清楚事务、连接池的关系?正确配置是怎样的
事务的基本原理 在学习 Spring 的事务之前,你首先要了解数据库的事务原理,我们以 MySQL 5.7 为例,讲解一下数据库事务的基础知识。 我们都知道 当 MySQL 使用 InnoDB 数据库引擎的时候,数据库是对事务有支持的。而事务最主要的作…...

备忘录模式-撤销功能的实现
在idea写代码的过程中,会经常用到一个快捷键——“crtl z”,即撤销功能。“备忘录模式”则为撤销功能提供了一个设计方案。 1 备忘录模式 备忘录模式提供一种状态恢复机制。在不破坏封装的前提下,捕获对象内部状态并在该对象之外保存这个状态。可以在…...

C++入门(二)
文章目录 一、缺省参数1、概念2、缺省参数分类1、全缺省参数2、半缺省参数 3、特性总结 二、函数重载1、引入函数重载2、函数重载概念3、函数重载分类4、C支持函数重载的原理--名字修饰(name Mangling) 三、 引用1、引用概念2、引用特性3、 常引用4、 使用场景1、做参数2、做返…...

【软件设计师】面向对象类图的六种关系
面向对象类图的六种关系(继承、实现、依赖、关联、聚合、组合) 1、泛化(继承)2、实现3、依赖4、关联5、聚合6、组合 面向对象类图的六种关系(继承、实现、依赖、关联、聚合、组合) 进行面向对象设计时&…...

二十七、【四种蒙版】
文章目录 图层蒙版剪贴蒙版快速蒙版矢量蒙版 图层蒙版 在当前图层加上蒙版,黑色画笔的可以让当前图层消失,白色的画笔可以让当前图层出现: 无论填充什么样的颜色,蒙板只有黑白灰三种颜色。模板最简单应用就是我们在插入图形的时候…...
卡尔曼家族从零解剖-(00)目录最新无死角讲解
讲解关于slam一系列文章汇总链接:史上最全slam从零开始,针对于本栏目讲解的 卡尔曼家族从零解剖 链接 :卡尔曼家族从零解剖-(00)目录最新无死角讲解:https://blog.csdn.net/weixin_43013761/article/details/133846882 文末正下方中心提供了本人 联系…...

Linux系统之ip命令的基本使用
Linux系统之ip命令的基本使用 一、ip命令介绍1.1 ip命令简介1.2 ip命令的由来1.3 ip命令的安装包 二、ip命令使用帮助2.1 ip命令的help帮助信息2.2 ip命令使用帮助 三、查看网络信息3.1 显示当前网络接口信息3.2 显示网络设备运行状态3.3 显示详细设备信息3.4 查看路由表3.5 查…...
【推荐算法】ctr cvr联合建模问题合集
ctr和cvr分开建模相比ctcvr的优势? 在电商搜索推荐排序中,将ctr和cvr分开建模,相比直接建模ctcvr的优势是什么? - 萧瑟的回答 - 知乎 总结: 1、ctr的数据可以试试获取,能实时训练。但是cvr存在延迟现象&…...
安装njnx --chatGPT
gpt: 要在 Debian 11 上安装 Nginx(通常称为 "nginx"),您可以使用 apt 包管理器执行以下步骤: 1. **登录到您的 Debian 11 服务器**。您可以使用 SSH 客户端以 root 或具有管理员权限的用户身份登录。 2. **更新软件…...

性能测试需求分析
1、客户方提出 客户方能提出明确的性能需求,说明对方很重视性能测试,这样的企业一般是金融、电信、银行、医疗器械等;他们一般对系统的性能要求非常高,对性能也非常了解。提出需求也比较明确。 曾经有一个银行项目,已经…...

logback服务器日志删除原理分析
查看以下的logback官方文档 Chapter 4: Appendershttps://logback.qos.ch/manual/appenders.html 按文档说明,maxHistory是设置保存归档日志的最大数量,该数量的单位受到fileNamePattern里的值%d控制,如果有多个%d,只能有一个主%d࿰…...

到底什么才是真正的商业智能(BI)
随着人工智能、云计算、大数据、互联网、物联网等新一代信息化、数字化技术在各行各业内开始大规模的应用,社会上的数字化、信息化程度不断加深,而数据价值也在这样的刺激下成为了个人、机构、企业乃至国家的重要战略资源,成为了继土地、劳动…...

Pulsar Manager配置自定义认证插件访问
Pulsar Manager配置自定义认证插件访问 Pulsar Manager和dashboard部署和启用认证 pulsar自定义认证插件开发 前面博客讲了以token方式访问pulsar 这节博客讲如何配置自定义认证插件的方式访问pulsar #启动pulsar-manager docker run --name pulsar-manager -dit \-p 9527:…...
Java SimpleDateFormat linux时间字符串转时间轴的坑
Mon Oct 16 09:51:28 2023 这是linux 的 date命令得到的时间,要转换称时间戳。 EEE MMM dd HH:mm:ss yyyy 这样的格式,看起来就是正确的,可是就是报错 Unparseable date: "Mon Oct 16 09:51:28 2023" 下面是正确的代码 String[…...

202、RabbitMQ 之 使用 fanout 类型的Exchange 实现 Pub-Sub 消息模型---fanout类型就是广播类型
目录 ★ 使用 fanout 类型的Exchange 实现 Pub-Sub 消息模型代码演示:生产者:producer消费者:Consumer01消费者:Consumer02测试结果 完整代码ConnectionUtilPublisherConsumer01Consumer02pom.xml ★ 使用 fanout 类型的Exchange …...

使用分级同态加密防御梯度泄漏
抽象 联邦学习 (FL) 支持跨分布式客户端进行协作模型训练,而无需共享原始数据,这使其成为在互联和自动驾驶汽车 (CAV) 等领域保护隐私的机器学习的一种很有前途的方法。然而,最近的研究表明&…...

UDP(Echoserver)
网络命令 Ping 命令 检测网络是否连通 使用方法: ping -c 次数 网址ping -c 3 www.baidu.comnetstat 命令 netstat 是一个用来查看网络状态的重要工具. 语法:netstat [选项] 功能:查看网络状态 常用选项: n 拒绝显示别名&#…...

什么是库存周转?如何用进销存系统提高库存周转率?
你可能听说过这样一句话: “利润不是赚出来的,是管出来的。” 尤其是在制造业、批发零售、电商这类“货堆成山”的行业,很多企业看着销售不错,账上却没钱、利润也不见了,一翻库存才发现: 一堆卖不动的旧货…...
基础测试工具使用经验
背景 vtune,perf, nsight system等基础测试工具,都是用过的,但是没有记录,都逐渐忘了。所以写这篇博客总结记录一下,只要以后发现新的用法,就记得来编辑补充一下 perf 比较基础的用法: 先改这…...

C# 类和继承(抽象类)
抽象类 抽象类是指设计为被继承的类。抽象类只能被用作其他类的基类。 不能创建抽象类的实例。抽象类使用abstract修饰符声明。 抽象类可以包含抽象成员或普通的非抽象成员。抽象类的成员可以是抽象成员和普通带 实现的成员的任意组合。抽象类自己可以派生自另一个抽象类。例…...

uniapp微信小程序视频实时流+pc端预览方案
方案类型技术实现是否免费优点缺点适用场景延迟范围开发复杂度WebSocket图片帧定时拍照Base64传输✅ 完全免费无需服务器 纯前端实现高延迟高流量 帧率极低个人demo测试 超低频监控500ms-2s⭐⭐RTMP推流TRTC/即构SDK推流❌ 付费方案 (部分有免费额度&#x…...
【JavaSE】绘图与事件入门学习笔记
-Java绘图坐标体系 坐标体系-介绍 坐标原点位于左上角,以像素为单位。 在Java坐标系中,第一个是x坐标,表示当前位置为水平方向,距离坐标原点x个像素;第二个是y坐标,表示当前位置为垂直方向,距离坐标原点y个像素。 坐标体系-像素 …...
JS手写代码篇----使用Promise封装AJAX请求
15、使用Promise封装AJAX请求 promise就有reject和resolve了,就不必写成功和失败的回调函数了 const BASEURL ./手写ajax/test.jsonfunction promiseAjax() {return new Promise((resolve, reject) > {const xhr new XMLHttpRequest();xhr.open("get&quo…...
为什么要创建 Vue 实例
核心原因:Vue 需要一个「控制中心」来驱动整个应用 你可以把 Vue 实例想象成你应用的**「大脑」或「引擎」。它负责协调模板、数据、逻辑和行为,将它们变成一个活的、可交互的应用**。没有这个实例,你的代码只是一堆静态的 HTML、JavaScript 变量和函数,无法「活」起来。 …...

消防一体化安全管控平台:构建消防“一张图”和APP统一管理
在城市的某个角落,一场突如其来的火灾打破了平静。熊熊烈火迅速蔓延,滚滚浓烟弥漫开来,周围群众的生命财产安全受到严重威胁。就在这千钧一发之际,消防救援队伍迅速行动,而豪越科技消防一体化安全管控平台构建的消防“…...