LUNA 2016 数据集详解

LUNA16数据集的由来
LUNA 2016 数据集来自2016年LUng Nodule Analysis比赛,这里是其官方网站。
LUNA16数据集是最大公用肺结节数据集LIDC-IDRI的子集,LIDC-IDRI它包括1018个低剂量的肺部CT影像。LIDC-IDRI删除了切片厚度大于3mm和肺结节小于3mm的CT影像,剩下的就是LUNA16数据集了。
其数据集的文件内容如下:

  1. subset0.zip~subset9.zip 包含所有CT图像的10个zip文件,数据格式为“.mhd”,“.raw”
  2. CSVFILES文件夹,包括3文件:annotations.csv,candidates.csv,sampleSubmission.csv
  3. annotations.csv:1186个肺结节信息,字段有seriesuid,coordX,coordY,coordZ,diameter_mm
  4. candidates.csv:一共551065条数据。其中,正例(class:1):1351条,其余都是负例(class:0)
  5. sampleSubmission.csv:正确格式的提交文件示例,我们不提交,暂时没用。

mdh数据格式详解
这里有一篇很好的文章,关于医疗影像的mhd和dcm格式图像的读取和坐标转换
每个病例的数据的存储都是由一个.mhd和一个.raw格式的文件组成。.mdh是说明文件,具体数据在.raw文件中,
mdh样例:

ObjectType = Image
NDims = 3          #三维数据
BinaryData = True              #二进制数据
BinaryDataByteOrderMSB = False
CompressedData = False
TransformMatrix = 1 0 0 0 1 0 0 0 1        #100,010,001 分别代表x,y,z
Offset = -195 -195 -378       #原点坐标
CenterOfRotation = 0 0 0
AnatomicalOrientation = RAI
ElementSpacing = 0.7617189884185791 0.7617189884185791 2.5     #像素间隔 x,y,z
DimSize = 512 512 141        #数据的大小 x,y,z
ElementType = MET_SHORT
ElementDataFile = 1.3.6.1.4.1.14519.5.2.1.6279.6001.173106154739244262091404659845.raw      #数据存储的文件名

python读取mdh的方法
mhd已经交代了图像数据的信息,接下来对图像数据进行读取,这里主要用的Python中的SimpleITK库

import SimpleITK as sitk
import matplotlib.pyplot as plt
case_path = './1.3.6.1.4.1.14519.5.2.1.6279.6001.126264578931778258890371755354.mhd'
itkimage = sitk.ReadImage(case_path)   #这部分给出了关于图像的信息,可以打印处理查看,这里就不在显示了
#print(itkimage)
image = sitk.GetArrayFromImage(itkimage)     #z,y,x
#查看第100张图像
plt.figure()
plt.imshow(image[100,:,:])

annotations.csv坐标转换
annotations.csv中提供了医生标注肺结节位置信息
seriesuid:表示每个病例图像对应的文件名
coordX,coordX,coordX,diameter_mm:表示医生标注的结节位置信息和直径

在使coordX用卷积网络对肺结节进行检测时,我们需要根据医生提供的标注信息,在图像中找到相应的肺结节位置,接下来说医生标注的坐标与图像中的坐标的关系。
mhd中给定了图像中的原点坐标为(-195 ,-195 ,-378) #x,y,z
像素间隔为(0.7617189884185791,0.7617189884185791,2.5) #x,y,z
通过以上信息可以计算结节相对原点的坐标,然后用这个坐标除以像素间隔,即为在图像中对应的结节位置
#世界坐标转换到图像中的坐标

def worldToVoxelCoord(worldCoord, origin, spacing):stretchedVoxelCoord = np.absolute(worldCoord - origin)voxelCoord = stretchedVoxelCoord / spacingreturn voxelCoord

#图像上的坐标转换为世界坐标

def VoxelToWorldCoord(voxelCoord, origin, spacing):strechedVocelCoord = voxelCoord * spacingworldCoord = strechedVocelCoord + originreturn worldCoord

LUNA16数据集肺结节显示
LUNA16数据集肺结节显示代码如下:

import SimpleITK as sitk
import matplotlib.pyplot as plt
import numpy as np
filename='data\\1.3.6.1.4.1.14519.5.2.1.6279.6001.173106154739244262091404659845.mhd'
itkimage = sitk.ReadImage(filename)#读取.mhd文件
OR=itkimage.GetOrigin()
print(OR)
SP=itkimage.GetSpacing()
print(SP)
numpyImage = sitk.GetArrayFromImage(itkimage)#获取数据,自动从同名的.raw文件读取def show_nodules(ct_scan, nodules,Origin,Spacing,radius=20, pad=2, max_show_num=4): # radius是正方形边长一半,pad是边的宽度,max_show_num最大展示数show_index = []for idx in range(nodules.shape[0]): # lable是一个nx4维的数组,n是肺结节数目,4代表x,y,z,以及直径if idx < max_show_num:if abs(nodules[idx, 0]) + abs(nodules[idx, 1]) + abs(nodules[idx, 2]) + abs(nodules[idx, 3]) == 0:continuex, y, z = int((nodules[idx, 0]-Origin[0])/SP[0]), int((nodules[idx, 1]-Origin[1])/SP[1]), int((nodules[idx, 2]-Origin[2])/SP[2])print(x, y, z)data = ct_scan[z]radius=int(nodules[idx, 3]/SP[0]/2)#pad = 2*radius# 注意 y代表纵轴,x代表横轴data[max(0, y - radius):min(data.shape[0], y + radius),max(0, x - radius - pad):max(0, x - radius)] = 3000 # 竖线data[max(0, y - radius):min(data.shape[0], y + radius),min(data.shape[1], x + radius):min(data.shape[1], x + radius + pad)] = 3000 # 竖线data[max(0, y - radius - pad):max(0, y - radius),max(0, x - radius):min(data.shape[1], x + radius)] = 3000 # 横线data[min(data.shape[0], y + radius):min(data.shape[0], y + radius + pad),max(0, x - radius):min(data.shape[1], x + radius)] = 3000 # 横线if z in show_index: # 检查是否有结节在同一张切片,如果有,只显示一张continueshow_index.append(z)plt.figure(idx)plt.imshow(data, cmap='gray')plt.show()b = np.array([[-116.2874457,21.16102581,-124.619925,10.88839157],[-111.1930507,-1.264504521,-138.6984478,17.39699158],[73.77454834,37.27831567,-118.3077904,8.648347161]])
show_nodules(numpyImage,b,OR,SP)

结果图像,三张图,其中一张如下:

LUNA 2016 数据集详解相关推荐

  1. 全卷积神经网路【U-net项目实战】LUNA 2016 数据集详解

    文章目录 1.LUNA 2016 数据集详解 2.mdh数据格式详解 3.python读取mdh的方法 4.annotations.csv坐标转换 5.LUNA16数据集肺结节显示 1.LUNA 20 ...

  2. ILSVRC2015_VID数据集详解

    数据集下载地址:http://bvisionweb1.cs.unc.edu/ilsvrc2015/ILSVRC2015_VID.tar.gz 总说: 数据集包括3862 snippets用于训练,55 ...

  3. KITTI数据集详解和评价标准

    from: https://blog.csdn.net/Solomon1558/article/details/70173223 摘要:本文融合了Are we ready for Autonomous ...

  4. MS COCO数据集详解

    这是我的推广信息,以激励自己更好的分享自己的知识和经验!也希望看到的你能够多多支持,谢谢! 1. 滴滴云AI大师: 目前滴滴云正在大力推广自己的云计算服务,需要购买的朋友们用我的AI大师码 「2049 ...

  5. 从手写数字识别入门深度学习丨MNIST数据集详解

    就像无数人从敲下"Hello World"开始代码之旅一样,许多研究员从"MNIST数据集"开启了人工智能的探索之路. MNIST数据集(Mixed Natio ...

  6. 汇总 | 深度学习中图像语义分割基准数据集详解

    点击上方"小白学视觉",选择加"星标"或"置顶" 重磅干货,第一时间送达 汇总图像语义分割那些质量最好的数据集与常用benchmark数据集 ...

  7. 在VM虚拟机Windows Server r2上部署安装Microsoft Dynamics CRM 2016 步骤详解(一)

    应公司需求,最近在学微软的Dynamics CRM.在搭建环境的过程中也遇到了一些雷坑,在这里分享一下安装部署过程当中所遇到的一些问题, 安装Microsoft Dynamics CRM 2016的几 ...

  8. YOLOv5训练自己的数据集详解

    入门小菜鸟,希望像做笔记记录自己学的东西,也希望能帮助到同样入门的人,更希望大佬们帮忙纠错啦~侵权立删. 目录 一.YOLOv5源码下载 二.环境配置 三.创建数据集 四.更改配置 1.coco128 ...

  9. 【详解】NLP之常用数据集详解

    GLUE数据集合的介绍: 自然语言处理(NLP)主要自然语言理解(NLU)和自然语言生成(NLG).GLUE(General Language Understanding Evaluation)由纽约 ...

最新文章

  1. 不同的source control下配置DiffMerge
  2. 如何查看Linux内核是否为64位版本?
  3. VS 默认开发环境如何更改
  4. nova7修屏逛校园2021-07-07
  5. java 请求响应_java http接口请求响应 request response
  6. BOOST_PREDEF_TESTED_AT宏相关的测试程序
  7. linux(系统centos6.5)常用命令总结
  8. docker部署django项目、mysql主从搭建、django实现读写分离
  9. android 屏幕长宽,怎么获取手机屏幕长宽
  10. Xcode iphone模拟器运行不流畅
  11. Ubuntu 16.04系统下出现搜狗拼音安装失败问题
  12. 解决问题:Something‘s wrong--perhaps a missing \item. \end{thebibliography}
  13. sklearn中的数据集2 (Covertype 一个关于植被的数据集)
  14. linux系统怎么取消下载,Linux系统怎么彻底删除文件
  15. Android 从系统媒体库中选择视频
  16. java自动输入验证码_【自动化测试】使用Java+selenium填写验证码成功登录
  17. yolox的正负样本分配策略mmdet代码详解
  18. 安卓 网络工具_安卓设备可用苹果Magsafe无线充电,但功率鸡肋,安卓并不需要...
  19. 统计学计算机类实验报告,2015统计学实验报告.doc
  20. true false 与TRUE FALSE 的区别

热门文章

  1. Java学习-使用文本编辑器编辑Java源代码
  2. Java画图程序设计
  3. arduino 下16进制转2进制
  4. MFC_Session2
  5. Centos部署 hyperledger cello记录
  6. 网站架构演变_8个观看英语演变的网站
  7. 系统稳定性(基于matlab求传递函数特征根)
  8. 计算机视觉基础入门(2)
  9. CVE-2012-1889(暴雷)漏洞分析
  10. 初级会计实务--第三章第二节、应付及预收账款