LITS 数据集 标签分离

  • 标签分离原因说明
  • 简单原理说明
  • 代码实现
  • 分离效果
  • 结束语

标签分离原因说明

最近在用Unet做肝脏肿瘤分割,手中得到的数据集有LITS数据集,从网上下载下来的时候,格式是nii文件,因为我用的是2D Unet,所以要先把nii文件转为png格式。获取到的标签里面,肝脏和肿瘤是在一块的,所以想着把肝脏和肿瘤的标签分离出来再单独进行训练和预测,于是就有了这篇文章。

简单原理说明

在标签中,肝脏被标记为1,肿瘤被标记为2,所以,在加载图像后,对每一个图像中的不为1的像素置为0,以此得到只包含肝脏的标签。同理,把不为2的其他像素置为0,以此得到只包含肿瘤的标签。

代码实现

import os
import cv2
from medpy.io import load,save
import numpy as npdef label_seg(nii_path,save_folder):data_nii_path = nii_path + '/data'label_nii_path = nii_path+'/label'file_list = os.listdir(label_nii_path)    #批量处理for nii_label in file_list:liver_tumor_label, header = load(os.path.join(label_nii_path, nii_label))   # 加载nii文件liver_tumor_data, header1 = load(os.path.join(data_nii_path, nii_label.replace('segmentation', 'volume')))   # 加载nii文件liver_tumor_data[liver_tumor_data > 250] = 250    #加窗处理,过滤掉过于的组织liver_tumor_data[liver_tumor_data < -250] = -250liver = np.zeros(liver_tumor_label.shape)  # 创建一个全为0的矩阵,形状与加载的nii文件大小一样tumor = np.zeros(liver_tumor_label.shape)index = np.where(liver_tumor_label == 1)   # 肝脏标签为1,返回索引位置liver[index] = 1    # 将得到的肝脏坐标在新的矩阵中置为1,得到只包含肝脏的标签index1 = np.where(liver_tumor_label == 2)  # 肿瘤标签为2,返回索引位置tumor[index1] = 1   # 将得到的肿瘤坐标在新的矩阵中置为1,得到只包含肿瘤的标签slice_num = liver_tumor_label.shape[2]     # 获取切片数量tumor_path = save_folder+'/tumor_label'     # 分离的标签设置保存路径liver_path = save_folder+'/liver_label'train_tumor_path = save_folder+'/train_tumor'     # 训练数据保存路径train_liver_path = save_folder+'/train_liver'if not os.path.exists(tumor_path):      # 判断文件目录是否存在,不存在则创建os.mkdir(tumor_path)if not os.path.exists(liver_path):os.mkdir(liver_path)if not os.path.exists(train_tumor_path):      # 判断文件目录是否存在,不存在则创建os.mkdir(train_tumor_path)if not os.path.exists(train_liver_path):os.mkdir(train_liver_path)img_name = os.path.split(nii_label)     # 分离文件名,用以保存时的文件名前缀img_name = img_name[-1]img_name = img_name.split('.')img_name = img_name[0]for i in range(0, slice_num):if liver[:, :, i].max() > 0:    # 肝脏标签图片label_liver = liver[:, :, i] * 122liver_train_data = (liver_tumor_data[:, :, i] - liver_tumor_data[:, :, i].min()) / (liver_tumor_data[:, :, i].max() - liver_tumor_data[:, :, i].min()) * 255print(cv2.imwrite("%s/%s-%d.png" % (liver_path, "liver-"+img_name, i), label_liver)) print(cv2.imwrite("%s/%s-%d.png" % (train_liver_path, img_name.replace('segmentation', 'volume'), i), liver_train_data))  #保持分割出来的标签与数据的序号对应,因为肿瘤的标签量比较少if tumor[:, :, i].max() > 0:    # 肿瘤标签图片label_tumor = tumor[:, :, i] * 122tumor_train_data = (liver_tumor_data[:, :, i] - liver_tumor_data[:, :, i].min()) / (liver_tumor_data[:, :, i].max() - liver_tumor_data[:, :, i].min()) * 255print(cv2.imwrite("%s/%s-%d.png" % (tumor_path, "tumor-"+img_name, i), label_tumor))print(cv2.imwrite("%s/%s-%d.png" % (train_tumor_path, img_name.replace('segmentation', 'volume'), i),tumor_train_data))  #保持分割出来的标签与数据的序号对应,因为肿瘤的标签量比较少# save(liver, os.path.join(save_folder,"liver.nii"))# save(tumor, os.path.join(save_folder, "tumor.nii"))if __name__ == "__main__":label_nii_path = r'nii 文件保存路径'save_path = 'png图像数据保存位置'label_seg(label_nii_path,save_path)

分离效果

结束语

本人水平有限,如有不当之处望请指正。

LITS 数据集 肝脏和肿瘤标签分离相关推荐

  1. R语言图形用户界面数据挖掘包Rattle:加载UCI糖尿病数据集、并启动Rattle图形用户界面、数据集变量重命名,为数据集结果变量添加标签、数据划分(训练集、测试集、验证集)、随机数设置

    R语言图形用户界面数据挖掘包Rattle:加载UCI糖尿病数据集.并启动Rattle图形用户界面.数据集变量重命名,为数据集结果变量添加标签.数据划分(训练集.测试集.验证集).随机数设置 目录

  2. AI 模型性能上不去?这真的不怪我,ImageNet 等数据集每 100 个标签就错 3 个!...

    标签错误会破坏基准的稳定性,然而,令人没想到的是,大多数机器学习中使用的10个主流基准测试集普遍存在标签错误.比如,把"狮子"标记成"猴子",把"青蛙 ...

  3. 电气仪表、电表检测、表计检测图像数据集(含VOC标签,3000多张图像,网盘下载链接)

    数据集图像示例: 下载地址:电气仪表.电表检测.表计检测图像数据集(含VOC标签,3000多张图像)

  4. 输电线路杆塔、导线分割图像数据集(含分割标签,1242张图像),输电线路巡检图像数据

    图像数据集概况: 分割标签: 下载地址:输电线路杆塔.导线分割图像数据集

  5. LITS数据集 总切片和单张Nii切片数目统计

    文章目录 LITS数据集切片统计 简单原理说明 代码实现 运行结果 总结 LITS数据集切片统计 我的数据集长这样,手中得到的数据集有LITS数据集,从网上下载下来的时候,格式是nii文件,因为我用的 ...

  6. 【Python】SimpleITK 针对于 LiTS 数据集,获取最大肝脏面积的切片

    效果图 文章目录 1. window_transform 2. extract_max_slice 3. extract_max_slice_with_seg 1. window_transform ...

  7. Tensorflow生成自己的图片数据集TFrecords(支持多标签label)

    Tensorflow生成自己的图片数据集TFrecords 尊重原创,转载请注明出处:https://blog.csdn.net/guyuealian/article/details/80857228 ...

  8. 【学习笔记】使用Tensorflow版ENet训练自己的数据集labelme生成灰度标签图片问题

    使用的代码:kwotsin所写的Tensorflow版,180星 记录一下训练的过程,方便以后翻阅. 首先是数据集的准备,数据集的文件夹结构为: ├── test ├── testannot ├── ...

  9. 根据文件夹中的图片数据集生成.txt文件标签

    文章目录 前言 数据集格式 Python实现 注意事项 前言 深度学习中的与图片有关的任务,如图像识别,图像分类,目标检测,图像分割等,在准备图片数据集时,图片的序号和标签往往是由.txt文件获取的. ...

最新文章

  1. 树形dp --- 2020 icpc 南京 M Monster Hunter
  2. 我为什么还要造轮子?欠踹?Monk.UI表单美化插件诞生记!
  3. 银屑病与寿命的关系(调研手稿七)
  4. JAVA中返回值为字母时_LeetCode#524通过删除字母匹配到字典里最长单词-java中CompareTo方法用法以及Comparator中Compare方法返回值...
  5. Leetcode--221.最大正方形
  6. Java中Thread类的方法简介
  7. 人工智能先驱 Nils Nilsson 去世,吴恩达、Yann LeCun 悼念!
  8. 使用Pixel Bender Toolkit制作特效——给过滤器增加参数(Part 3)
  9. 硬件电路学习之开尔文电桥双臂讲解
  10. python下拉框二级联动_Excel数据规范输入技巧 | 二级联动下拉菜单
  11. html5自助建站源码,疯狂原始人
  12. 【计算机网络 一 概述】
  13. 如何实现汇川PLC和工业机器人的协议解析与数据采集?
  14. 在疫苗生产、包装、入库、放行、质量管理、电子数据采集/输入应用电子签名
  15. mybatis jar下载
  16. 解析Linux中的系统安全及应用(二)
  17. RIP实验步骤(RNA Immunoprecipitation)
  18. 深度学习入门与快速实践
  19. python电路仿真_蔡氏电路仿真实验
  20. 网关是什么,一文带你快速入门腾讯技术工程

热门文章

  1. 聊天没有表情包被嘲讽,用python爬取了十万张表情包
  2. Android通过音量键调节音量大小
  3. 怎么选择聚合支付公司
  4. Java 两数相乘保留两位小数
  5. java实现从左到右打印二叉树
  6. 地图兴趣点聚合算法的探索与实践
  7. randperm函数
  8. 逻辑运算符 [MySQL][数据库]
  9. 很容易理解的C语言快速排序算法(完整注释+完整输出)
  10. B树最小高度和最大高度的推导