【Synapse数据集】Synapse数据集介绍和预处理,数据集下载网盘链接
【Segment Anything Model】做分割的专栏链接,欢迎来学习。
【博主微信】cvxiaoyixiao
本专栏为公开数据集的介绍和预处理,持续更新中。
文章目录
- 1️⃣Synapse数据集介绍
- 文件结构
- 源文件样图
- 文件内容
- 2️⃣Synapse数据集百度网盘下载链接
- 官网下载
- 登录
- 下载
- 没有加速器的从百度网盘下载 永久有效💮 💯
- 3️⃣Synapse数据集预处理目标
- 改变Synapse数据集类别
- 将官方Synapse数据集的Training 文件分切片转为npz保存。
- 将官方Synapse数据集的Training的部分文件处理为hy文件格式保存
- 4️⃣代码
- 文件目录
- 代码
1️⃣Synapse数据集介绍
文件结构

官网分为train和test train有83例患者nii原图和label。test有72名患者nii原图,没有label
源文件样图


文件内容
Synapse数据集由13个腹部器官由两名经验丰富的本科生手动标记,并由放射科医生使用MIPAV软件在体积基础上进行验证,包括:
(1) 脾脏
(2) 右肾
(3) 左肾
(4) 胆囊
(5) 食道
(6) 肝
(7) 胃
(8) 主动脉
(9) 下腔静脉
(10) 门静脉和脾静脉
(11) 胰腺
(12) 右肾上腺
(13) 左肾上腺
在勾画的GT图像中,像素大小代表类别,并和上面对应,比如 像素为2的地方代表是右肾。
⚠️⚠️⚠️有些患者可能没有(2)右肾或(4)胆囊,因此没有标记。
2️⃣Synapse数据集百度网盘下载链接
官网下载
官网链接
打开点击Files 不要直接点击Download Options❌ 要点击下面三个文件,选择要下载的东西。需要登录谷歌账号和借助加速器。


登录
登录进来是这样子的,这个时候在点击Download Options,之后点击Add

下载
点击左侧栏目的下载箭头,点击download,输入名字,点击Download Package

没有加速器的从百度网盘下载 永久有效💮 💯
链接:
https://pan.baidu.com/s/1jJm7tbiDMOA8S331QFu8CQ?pwd=bw5i提取码:bw5i
–来自百度网盘超级会员V6的分享
3️⃣Synapse数据集预处理目标
改变Synapse数据集类别
官方是:
(1) 脾脏
(2) 右肾
(3) 左肾
(4) 胆囊
(5) 食道
(6) 肝
(7) 胃
(8) 主动脉
(9) 下腔静脉
(10) 门静脉和脾静脉
(11) 胰腺
(12) 右肾上腺
(13) 左肾上腺
改变为:
1:脾脏
2:右肾
3:左肾
4:胆囊
5:肝脏
6:胃
7:主动脉
8:胰腺
对应关系也就是:
hashmap = {1:1, 2:2, 3:3, 4:4, 5:0, 6:5, 7:6, 8:7, 9:0, 10:0, 11:8, 12:0, 13:0}
将官方Synapse数据集的Training 文件分切片转为npz保存。
每个npz包含一个切片img和对应的label,文件名字以样本名称和切片id命名
比如第一个样本叫case0005,保存其第2个切片,那么最好的npz名称为case0005_slice002.npz
作为训练集的输入。
将官方Synapse数据集的Training的部分文件处理为hy文件格式保存
每个h5文件包含一个切片img和对应的label,并且以样本名称和切片id命名
4️⃣代码
文件目录

自己划分Training文件到自己的测试集和训练集,因为官网的测试集没有label。
代码
import os
from glob import glob
import h5py
import nibabel as nib
import numpy as np
from tqdm import tqdm# 自己手动选择的测试样本
test_data = [1, 2, 3, 4, 8, 22, 25, 29, 32, 35, 36, 38]
# 源数据集类别和我们规定的类别对应关系
hashmap = {1:1, 2:2, 3:3, 4:4, 5:0, 6:5, 7:6, 8:7, 9:0, 10:0, 11:8, 12:0, 13:0}use_normalize=True
# 文件夹路径,保存处理之后的npz文件
dst_path="./pre_over_dataset"
def preprocess_train_image(image_files: str, label_files: str) -> None:# 创建一个文件夹,保存处理之后的npz文件os.makedirs(f"{dst_path}/train_npz", exist_ok=True)a_min, a_max = -125, 275b_min, b_max = 0.0, 1.0print(len(image_files))pbar = tqdm(zip(image_files, label_files), total=len(image_files))for image_file, label_file in pbar:# **/imgXXXX.nii.gz -> parse XXXXnumber = image_file.split('/')[-1][3:10]if int(number) in test_data:continueimage_data = nib.load(image_file).get_fdata()label_data = nib.load(label_file).get_fdata()image_data = image_data.astype(np.float32)label_data = label_data.astype(np.float32)# 除去像素中在最大值和最小值之外的。# 如果某个像素小于最小值则替换成最小值,如果某个像素大于最大值,则替换成最大值image_data = np.clip(image_data, a_min, a_max)# 是否进行归一化if use_normalize:assert a_max != a_minimage_data = (image_data - a_min) / (a_max - a_min)H, W, D = image_data.shape# 通道最先image_data = np.transpose(image_data, (2, 1, 0)) # [D, W, H]label_data = np.transpose(label_data, (2, 1, 0))counter = 1# 遍历哈希表,将元数据分类对应我们规定的新分类。for k in sorted(hashmap.keys()):assert counter == kcounter += 1# 并更改对应位置像素值,到新的分类label_data[label_data == k] = hashmap[k]# 按照deep分切片保存for dep in range(D):save_path = f"{dst_path}/train_npz/case{number}_slice{dep:03d}.npz"# 保存成npz,里面是label和imagenp.savez(save_path, label=label_data[dep,:,:], image=image_data[dep,:,:])pbar.close()def preprocess_valid_image(image_files: str, label_files: str) -> None:os.makedirs(f"{dst_path}/test_vol_h5", exist_ok=True)
#我们规定的最大最小像素。可以改a_min, a_max = -125, 275b_min, b_max = 0.0, 1.0pbar = tqdm(zip(image_files, label_files), total=len(image_files))for image_file, label_file in pbar:# **/imgXXXX.nii.gz -> parse XXXXnumber = image_file.split('/')[-1][3:7]if int(number) not in test_data:continueimage_data = nib.load(image_file).get_fdata()label_data = nib.load(label_file).get_fdata()image_data = image_data.astype(np.float32)label_data = label_data.astype(np.float32)image_data = np.clip(image_data, a_min, a_max)if use_normalize:assert a_max != a_minimage_data = (image_data - a_min) / (a_max - a_min)H, W, D = image_data.shapeimage_data = np.transpose(image_data, (2, 1, 0))label_data = np.transpose(label_data, (2, 1, 0))counter = 1for k in sorted(hashmap.keys()):assert counter == kcounter += 1label_data[label_data == k] = hashmap[k]save_path = f"{dst_path}/test_vol_h5/case{number}.npy.h5"f = h5py.File(save_path, 'w')f['image'] = image_dataf['label'] = label_dataf.close()pbar.close()if __name__ == "__main__":# 根目录,到Training文件夹就行data_root = "./Training"# 获取所有训练测试文件image_files = sorted(glob(f"{data_root}/img/*.nii.gz"))label_files = sorted(glob(f"{data_root}/label/*.nii.gz"))# 传入预处理函数,这个是转为npz的preprocess_train_image(image_files, label_files)# 这个是转为h5的preprocess_valid_image(image_files, label_files)
相关文章:
【Synapse数据集】Synapse数据集介绍和预处理,数据集下载网盘链接
【Segment Anything Model】做分割的专栏链接,欢迎来学习。 【博主微信】cvxiaoyixiao 本专栏为公开数据集的介绍和预处理,持续更新中。 文章目录 1️⃣Synapse数据集介绍文件结构源文件样图文件内容 2️⃣Synapse数据集百度网盘下载链接官网下载登录下…...
【运动规划算法项目实战】Dynamic Window Approach算法(附ROS C++代码)
文章目录 前言一、简介1.1 DWA算法原理1.2 DWA算法的应用场景1.4 DWA算法的优缺点1.4.1 优点1.4.2 缺点二、代码实现2.1 算法细节2.1.1 DWA的控制输入:2.1.2 动态窗口的计算2.1.3 评价函数的优化2.2 程序说明2.21 PathGenerator2.2.2 WaypointAction2.2.3 使用方法2.3 代码演示…...
第十四届蓝桥杯大赛软件赛决赛 C/C++ 大学 B 组 试题 A: 子 2023
[蓝桥杯 2023 国 B] 子 2023 试题 A: 子 2023 【问题描述】 小蓝在黑板上连续写下从 1 1 1 到 2023 2023 2023 之间所有的整数,得到了一个数字序列: S 12345678910111213 ⋯ 20222023 S 12345678910111213\cdots 20222023 S12345678910111213⋯2…...
Unity 场景淡入淡出效果
一. 使用Dotween,建议使用我的方式 FindObjectOfType<SceneFadeInAndOut>().FadeIn(() > { Debug.Log("Fade in MenuStart Scene"); }); using DG.Tweening; using System; using System.Numerics; using UnityEngi…...
快速使用Spring Cache
哈喽~大家好,这篇我们来看看快速使用Spring Cache。 🥇个人主页:个人主页 🥈 系列专栏:【日常学习上的分享】 🥉与这篇相关的文章: R…...
Scrum敏捷开发培训内训:提升团队能力和效率的重要途径
在当今软件开发领域,Scrum敏捷开发方法越来越受到重视。Scrum是一种以团队协作为基础,注重灵活性和快速响应变化的方法。 为了帮助团队更好地掌握Scrum敏捷开发,培训变得越来越重要。Scrum敏捷开发方法注重高效协作、快速迭代和持续改进。通…...
kaggle新赛:Optiver 美股价格预测赛题解析
赛题名称:Optiver - Trading at the Close 赛题链接:https://www.kaggle.com/competitions/optiver-trading-at-the-close 赛题背景 证券交易所是快节奏、高风险的环境,每一秒都很重要。随着交易日接近尾声,强度不断升级&#…...
Vue 学习笔记 错误ResizeObserver loop completed with undelivered notifications
环境Vue3 Ts 使用了el-table 后,容易出现如下错误 ERROR ResizeObserver loop completed with undelivered notifications. at handleError (webpack-internal:///./node_modules/webpack-dev-server/client/overlay.js:299:58) at eval (webpack-internal:///./nod…...
Wi-Fi直连分享:Android设备间的高速连接
Wi-Fi直连分享:Android设备间的高速连接 引言 随着无线局域网(Wi-Fi)的普及和发展,使用Wi-Fi直连技术(P2P)在没有中间接入点的情况下实现设备间直接互联成为可能。通过Wi-Fi直连,具备相应硬件…...
LeetCode 面试题 05.06. 整数转换
文章目录 一、题目二、Java 题解 一、题目 整数转换。编写一个函数,确定需要改变几个位才能将整数A转成整数B。 示例1: 输入: A 29 (或者0b11101), B 15(或者0b01111) 输出: 2 示例2: 输入&a…...
增强for循环和一般for循环的对比使用
文章底部有个人公众号:热爱技术的小郑。主要分享开发知识、学习资料、毕业设计指导等。个人B站主页热爱技术的小郑 ,视频内容主要是对应文章的视频讲解形式。有兴趣的可以关注一下。为何分享? 踩过的坑没必要让别人在再踩,自己复盘…...
云原生之使用Docker部署RSS阅读器Huntly
云原生之使用Docker部署RSS阅读器Huntly 一、Huntly介绍1.1 Huntly简介1.2 Huntly功能2.1 本地环境规划2.2 本次实践介绍 三、本地环境检查3.1 检查Docker服务状态3.2 检查Docker版本3.3 检查docker compose 版本 四、下载Huntly镜像五、部署Huntly5.1 创建挂载目录5.2 创建Hun…...
Powershell 实现禁用密码复杂性,空密码
前提条件 开启wmi,配置网卡,参考 实现一键关闭密码策略和远程空密码登录 最近客户需要的一个无法理解的需求,需要远程登录不输入密码,安全性没有了还要实现,没办法客户是上帝,客户怎么开心怎么来都行,安全性问题告知不重视,实际环境不建议一下操作,只要联网你被黑的哦…...
【c语言】详解动态内存管理
目录 关于动态内存分配malloc和calloc函数介绍动态内存回收----freerealloc函数介绍常见的动态内存错误 关于动态内存分配 回想一下我们之前学过的内存开辟方式: int val 20;//在栈空间上开辟四个字节 char arr[10] {0};//在栈空间上开辟10个字节的连续空间在学…...
深度学习概念——端对端
目录 1、端对端是什么2、端对端有什么用3、例子4、引用 在读论文的过程中反复遇到端对端的概念,就需要理解深刻一些。在此将收集到的一些资料拿出来辅以自己的拙见,请大家多多批评指正! 1、端对端是什么 在计算机学科中有一种算法叫分治法&a…...
苹果触控笔有必要买吗?平价ipad电容笔推荐
其实,市面上的数码类产品很多,有的侧重于美观,有的侧重于功能,有的侧重于性能。与iPad平板电脑搭配使用的电容笔同样也如此。因此,在选购电容笔时,一定要了解有关电容笔的知识。在购买之前,一定…...
React的高阶函数
1.认识高阶函数 高阶组件 本身不是一个组件,而是一个函数函数的参数是一个组件,返回值也是一个组件 高阶组件的定义 import ThemeContext from "../context/theme_context"function withTheme(OriginComponent) {return (props) > {retur…...
Java8实战-总结34
Java8实战-总结34 重构、测试和调试使用 Lambda 重构面向对象的设计模式观察者模式责任链模式 重构、测试和调试 使用 Lambda 重构面向对象的设计模式 观察者模式 观察者模式是一种比较常见的方案,某些事件发生时(比如状态转变)࿰…...
uniapp项目实践总结(二十四)安卓平台 APP 打包教程
导语:当你的应用程序开发完成后,在上架安卓应用商店之前,需要进行打包操作,下面简单介绍一下打包方法。 目录 准备工作配置项目生成证书打包配置准备工作 在打包之前,请保证你的 uniapp 应用程序编译到安卓手机模拟器的 App 是可以正常运行的,APP 打包分为安卓和 ios 两…...
GeoServer地图服务器权限控制
目录 1下载相关软件 2部署软件 3配置鉴权环节 4Java工程 5测试鉴权 6测试鉴权结果分析 本文章应该会后面试验一个鉴权功能就会发布一系列测试过程(GeoServer有很多鉴权方式) 1Download - GeoServer 1下载相关软件 进入geoserver官网的下载页面 …...
UE5模型加载避坑指南:为什么你的Runtime OBJ导入总是丢失材质?
UE5运行时OBJ材质丢失终极解决方案:从原理到工具函数全解析 当你在UE5中动态加载OBJ模型时,是否遇到过这样的场景:模型虽然成功加载,但所有材质都变成了难看的粉色默认材质?这可能是技术美术和程序化生成领域最常见的痛…...
Comsol 复现气液固相变:管中流水加热气化的奇妙模拟之旅
comsol相变模拟,论文复现,气液固相变,管道高温热湿耦合 comsol管中流水加热气化,水由左侧流入右侧流出在科研与工程领域,对气液固相变以及热湿耦合现象的研究至关重要。而 Comsol 作为一款强大的多物理场仿真软件&…...
CloudCompare进阶指南:PoissonRecon点云重建实战技巧
1. 点云重建入门:为什么选择PoissonRecon? 刚接触三维建模的朋友可能都有这样的困惑:扫描仪获取的原始点云数据看起来像一团散乱的星空,怎么才能变成光滑的曲面模型?这就是点云表面重建要解决的问题。在CloudCompare的…...
【技术选型指南】Avalonia、MAUI、Uno Platform、Flutter、Electron、Qt与Tauri:从场景到决策的深度剖析
1. 跨平台框架选型的核心考量因素 当你准备启动一个新项目或重构现有技术栈时,面对琳琅满目的跨平台框架,选择困难症很容易发作。我经历过多次这样的技术决策过程,发现关键在于先明确项目的核心需求。就像装修房子前要先确定是想要北欧简约风…...
COMSOL声子晶体复能带模型与PDE模块:声学黑洞复能带模型及实虚能带绘制与二维结构分析
comsol声子晶体复能带模型 PDE模块 声学黑洞 复能带模型 实能带与虚能带的绘制 参考论文 前两个是论文图,后四个是模型及结果图。 可根据模型设置,进行其他二维结构的分析复能带这玩意儿搞声子晶体的肯定不陌生,但用COMSOL PDE模块手搓模型…...
PvZ Toolkit:突破植物大战僵尸限制的终极修改器
PvZ Toolkit:突破植物大战僵尸限制的终极修改器 【免费下载链接】pvztoolkit 植物大战僵尸 PC 版综合修改器 项目地址: https://gitcode.com/gh_mirrors/pv/pvztoolkit 副标题:面向全阶段玩家的游戏体验增强工具,让每一场攻防战尽在掌…...
Qwen3-ForcedAligner-0.6B低延迟实时处理能力展示
Qwen3-ForcedAligner-0.6B低延迟实时处理能力展示 如果你正在寻找一个能快速、精准地为语音和文字“打上时间标签”的工具,那么Qwen3-ForcedAligner-0.6B绝对值得你花几分钟了解一下。想象一下,一段长达5分钟的演讲音频,你需要精确知道每个词…...
CentOS 6下OpenSSH从5.3升级到8.0的完整避坑指南(附Telnet备用方案)
CentOS 6环境下OpenSSH安全升级全流程:从风险规避到应急通道搭建 当一台运行CentOS 6的服务器在安全扫描中被标记出OpenSSH 5.3的高危漏洞时,任何有经验的运维工程师都会感到脊背发凉——这就像发现自家大门用的还是二十年前的挂锁。但更令人焦虑的是&am…...
革新性跨系统应用运行方案:APK Installer实现Windows原生Android应用体验
革新性跨系统应用运行方案:APK Installer实现Windows原生Android应用体验 【免费下载链接】APK-Installer An Android Application Installer for Windows 项目地址: https://gitcode.com/GitHub_Trending/ap/APK-Installer 当您急需在Windows电脑上运行某个…...
再也不怕消息被撤回!Windows防撤回工具完全使用指南
再也不怕消息被撤回!Windows防撤回工具完全使用指南 【免费下载链接】RevokeMsgPatcher :trollface: A hex editor for WeChat/QQ/TIM - PC版微信/QQ/TIM防撤回补丁(我已经看到了,撤回也没用了) 项目地址: https://gitcode.com/…...
