当前位置: 首页 > news >正文

【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&#xff0c;建议使用我的方式 FindObjectOfType<SceneFadeInAndOut>().FadeIn(() > { Debug.Log("Fade in MenuStart Scene"); }); using DG.Tweening; using System; using System.Numerics; using UnityEngi…...

快速使用Spring Cache

哈喽~大家好&#xff0c;这篇我们来看看快速使用Spring Cache。 &#x1f947;个人主页&#xff1a;个人主页​​​​​ &#x1f948; 系列专栏&#xff1a;【日常学习上的分享】 &#x1f949;与这篇相关的文章&#xff1a; R…...

Scrum敏捷开发培训内训:提升团队能力和效率的重要途径

在当今软件开发领域&#xff0c;Scrum敏捷开发方法越来越受到重视。Scrum是一种以团队协作为基础&#xff0c;注重灵活性和快速响应变化的方法。 为了帮助团队更好地掌握Scrum敏捷开发&#xff0c;培训变得越来越重要。Scrum敏捷开发方法注重高效协作、快速迭代和持续改进。通…...

kaggle新赛:Optiver 美股价格预测赛题解析

赛题名称&#xff1a;Optiver - Trading at the Close 赛题链接&#xff1a;https://www.kaggle.com/competitions/optiver-trading-at-the-close 赛题背景 证券交易所是快节奏、高风险的环境&#xff0c;每一秒都很重要。随着交易日接近尾声&#xff0c;强度不断升级&#…...

Vue 学习笔记 错误ResizeObserver loop completed with undelivered notifications

环境Vue3 Ts 使用了el-table 后&#xff0c;容易出现如下错误 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直连分享&#xff1a;Android设备间的高速连接 引言 随着无线局域网&#xff08;Wi-Fi&#xff09;的普及和发展&#xff0c;使用Wi-Fi直连技术&#xff08;P2P&#xff09;在没有中间接入点的情况下实现设备间直接互联成为可能。通过Wi-Fi直连&#xff0c;具备相应硬件…...

LeetCode 面试题 05.06. 整数转换

文章目录 一、题目二、Java 题解 一、题目 整数转换。编写一个函数&#xff0c;确定需要改变几个位才能将整数A转成整数B。 示例1: 输入&#xff1a; A 29 &#xff08;或者0b11101&#xff09;, B 15&#xff08;或者0b01111&#xff09; 输出&#xff1a; 2 示例2: 输入&a…...

增强for循环和一般for循环的对比使用

文章底部有个人公众号&#xff1a;热爱技术的小郑。主要分享开发知识、学习资料、毕业设计指导等。个人B站主页热爱技术的小郑 &#xff0c;视频内容主要是对应文章的视频讲解形式。有兴趣的可以关注一下。为何分享&#xff1f; 踩过的坑没必要让别人在再踩&#xff0c;自己复盘…...

云原生之使用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函数介绍常见的动态内存错误 关于动态内存分配 回想一下我们之前学过的内存开辟方式&#xff1a; int val 20;//在栈空间上开辟四个字节 char arr[10] {0};//在栈空间上开辟10个字节的连续空间在学…...

深度学习概念——端对端

目录 1、端对端是什么2、端对端有什么用3、例子4、引用 在读论文的过程中反复遇到端对端的概念&#xff0c;就需要理解深刻一些。在此将收集到的一些资料拿出来辅以自己的拙见&#xff0c;请大家多多批评指正&#xff01; 1、端对端是什么 在计算机学科中有一种算法叫分治法&a…...

苹果触控笔有必要买吗?平价ipad电容笔推荐

其实&#xff0c;市面上的数码类产品很多&#xff0c;有的侧重于美观&#xff0c;有的侧重于功能&#xff0c;有的侧重于性能。与iPad平板电脑搭配使用的电容笔同样也如此。因此&#xff0c;在选购电容笔时&#xff0c;一定要了解有关电容笔的知识。在购买之前&#xff0c;一定…...

React的高阶函数

1.认识高阶函数 高阶组件 本身不是一个组件&#xff0c;而是一个函数函数的参数是一个组件&#xff0c;返回值也是一个组件 高阶组件的定义 import ThemeContext from "../context/theme_context"function withTheme(OriginComponent) {return (props) > {retur…...

Java8实战-总结34

Java8实战-总结34 重构、测试和调试使用 Lambda 重构面向对象的设计模式观察者模式责任链模式 重构、测试和调试 使用 Lambda 重构面向对象的设计模式 观察者模式 观察者模式是一种比较常见的方案&#xff0c;某些事件发生时&#xff08;比如状态转变&#xff09;&#xff0…...

uniapp项目实践总结(二十四)安卓平台 APP 打包教程

导语:当你的应用程序开发完成后,在上架安卓应用商店之前,需要进行打包操作,下面简单介绍一下打包方法。 目录 准备工作配置项目生成证书打包配置准备工作 在打包之前,请保证你的 uniapp 应用程序编译到安卓手机模拟器的 App 是可以正常运行的,APP 打包分为安卓和 ios 两…...

GeoServer地图服务器权限控制

目录 1下载相关软件 2部署软件 3配置鉴权环节 4Java工程 5测试鉴权 6测试鉴权结果分析 本文章应该会后面试验一个鉴权功能就会发布一系列测试过程&#xff08;GeoServer有很多鉴权方式&#xff09; 1Download - GeoServer 1下载相关软件 进入geoserver官网的下载页面 …...

基于算法竞赛的c++编程(28)结构体的进阶应用

结构体的嵌套与复杂数据组织 在C中&#xff0c;结构体可以嵌套使用&#xff0c;形成更复杂的数据结构。例如&#xff0c;可以通过嵌套结构体描述多层级数据关系&#xff1a; struct Address {string city;string street;int zipCode; };struct Employee {string name;int id;…...

华为云AI开发平台ModelArts

华为云ModelArts&#xff1a;重塑AI开发流程的“智能引擎”与“创新加速器”&#xff01; 在人工智能浪潮席卷全球的2025年&#xff0c;企业拥抱AI的意愿空前高涨&#xff0c;但技术门槛高、流程复杂、资源投入巨大的现实&#xff0c;却让许多创新构想止步于实验室。数据科学家…...

React hook之useRef

React useRef 详解 useRef 是 React 提供的一个 Hook&#xff0c;用于在函数组件中创建可变的引用对象。它在 React 开发中有多种重要用途&#xff0c;下面我将全面详细地介绍它的特性和用法。 基本概念 1. 创建 ref const refContainer useRef(initialValue);initialValu…...

AtCoder 第409​场初级竞赛 A~E题解

A Conflict 【题目链接】 原题链接&#xff1a;A - Conflict 【考点】 枚举 【题目大意】 找到是否有两人都想要的物品。 【解析】 遍历两端字符串&#xff0c;只有在同时为 o 时输出 Yes 并结束程序&#xff0c;否则输出 No。 【难度】 GESP三级 【代码参考】 #i…...

pam_env.so模块配置解析

在PAM&#xff08;Pluggable Authentication Modules&#xff09;配置中&#xff0c; /etc/pam.d/su 文件相关配置含义如下&#xff1a; 配置解析 auth required pam_env.so1. 字段分解 字段值说明模块类型auth认证类模块&#xff0c;负责验证用户身份&am…...

【大模型RAG】Docker 一键部署 Milvus 完整攻略

本文概要 Milvus 2.5 Stand-alone 版可通过 Docker 在几分钟内完成安装&#xff1b;只需暴露 19530&#xff08;gRPC&#xff09;与 9091&#xff08;HTTP/WebUI&#xff09;两个端口&#xff0c;即可让本地电脑通过 PyMilvus 或浏览器访问远程 Linux 服务器上的 Milvus。下面…...

[ICLR 2022]How Much Can CLIP Benefit Vision-and-Language Tasks?

论文网址&#xff1a;pdf 英文是纯手打的&#xff01;论文原文的summarizing and paraphrasing。可能会出现难以避免的拼写错误和语法错误&#xff0c;若有发现欢迎评论指正&#xff01;文章偏向于笔记&#xff0c;谨慎食用 目录 1. 心得 2. 论文逐段精读 2.1. Abstract 2…...

Nginx server_name 配置说明

Nginx 是一个高性能的反向代理和负载均衡服务器&#xff0c;其核心配置之一是 server 块中的 server_name 指令。server_name 决定了 Nginx 如何根据客户端请求的 Host 头匹配对应的虚拟主机&#xff08;Virtual Host&#xff09;。 1. 简介 Nginx 使用 server_name 指令来确定…...

【python异步多线程】异步多线程爬虫代码示例

claude生成的python多线程、异步代码示例&#xff0c;模拟20个网页的爬取&#xff0c;每个网页假设要0.5-2秒完成。 代码 Python多线程爬虫教程 核心概念 多线程&#xff1a;允许程序同时执行多个任务&#xff0c;提高IO密集型任务&#xff08;如网络请求&#xff09;的效率…...

HashMap中的put方法执行流程(流程图)

1 put操作整体流程 HashMap 的 put 操作是其最核心的功能之一。在 JDK 1.8 及以后版本中&#xff0c;其主要逻辑封装在 putVal 这个内部方法中。整个过程大致如下&#xff1a; 初始判断与哈希计算&#xff1a; 首先&#xff0c;putVal 方法会检查当前的 table&#xff08;也就…...