【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官网的下载页面 …...
第19节 Node.js Express 框架
Express 是一个为Node.js设计的web开发框架,它基于nodejs平台。 Express 简介 Express是一个简洁而灵活的node.js Web应用框架, 提供了一系列强大特性帮助你创建各种Web应用,和丰富的HTTP工具。 使用Express可以快速地搭建一个完整功能的网站。 Expre…...
HTML 语义化
目录 HTML 语义化HTML5 新特性HTML 语义化的好处语义化标签的使用场景最佳实践 HTML 语义化 HTML5 新特性 标准答案: 语义化标签: <header>:页头<nav>:导航<main>:主要内容<article>&#x…...
【杂谈】-递归进化:人工智能的自我改进与监管挑战
递归进化:人工智能的自我改进与监管挑战 文章目录 递归进化:人工智能的自我改进与监管挑战1、自我改进型人工智能的崛起2、人工智能如何挑战人类监管?3、确保人工智能受控的策略4、人类在人工智能发展中的角色5、平衡自主性与控制力6、总结与…...
【Linux】shell脚本忽略错误继续执行
在 shell 脚本中,可以使用 set -e 命令来设置脚本在遇到错误时退出执行。如果你希望脚本忽略错误并继续执行,可以在脚本开头添加 set e 命令来取消该设置。 举例1 #!/bin/bash# 取消 set -e 的设置 set e# 执行命令,并忽略错误 rm somefile…...
从WWDC看苹果产品发展的规律
WWDC 是苹果公司一年一度面向全球开发者的盛会,其主题演讲展现了苹果在产品设计、技术路线、用户体验和生态系统构建上的核心理念与演进脉络。我们借助 ChatGPT Deep Research 工具,对过去十年 WWDC 主题演讲内容进行了系统化分析,形成了这份…...
SpringBoot+uniapp 的 Champion 俱乐部微信小程序设计与实现,论文初版实现
摘要 本论文旨在设计并实现基于 SpringBoot 和 uniapp 的 Champion 俱乐部微信小程序,以满足俱乐部线上活动推广、会员管理、社交互动等需求。通过 SpringBoot 搭建后端服务,提供稳定高效的数据处理与业务逻辑支持;利用 uniapp 实现跨平台前…...
【android bluetooth 框架分析 04】【bt-framework 层详解 1】【BluetoothProperties介绍】
1. BluetoothProperties介绍 libsysprop/srcs/android/sysprop/BluetoothProperties.sysprop BluetoothProperties.sysprop 是 Android AOSP 中的一种 系统属性定义文件(System Property Definition File),用于声明和管理 Bluetooth 模块相…...
保姆级教程:在无网络无显卡的Windows电脑的vscode本地部署deepseek
文章目录 1 前言2 部署流程2.1 准备工作2.2 Ollama2.2.1 使用有网络的电脑下载Ollama2.2.2 安装Ollama(有网络的电脑)2.2.3 安装Ollama(无网络的电脑)2.2.4 安装验证2.2.5 修改大模型安装位置2.2.6 下载Deepseek模型 2.3 将deepse…...
Spring Security 认证流程——补充
一、认证流程概述 Spring Security 的认证流程基于 过滤器链(Filter Chain),核心组件包括 UsernamePasswordAuthenticationFilter、AuthenticationManager、UserDetailsService 等。整个流程可分为以下步骤: 用户提交登录请求拦…...
Linux中《基础IO》详细介绍
目录 理解"文件"狭义理解广义理解文件操作的归类认知系统角度文件类别 回顾C文件接口打开文件写文件读文件稍作修改,实现简单cat命令 输出信息到显示器,你有哪些方法stdin & stdout & stderr打开文件的方式 系统⽂件I/O⼀种传递标志位…...
