LUNA16数据集(二)肺结节可视化
在检测到肺结节后,还需要可视化,这样才能为诊断服务。
我使用的项目地址为:https://github.com/wentaozhu/DeepLung
项目基于论文:DeepLung: Deep 3D Dual Path Nets for Automated Pulmonary Nodule Detection and Classification
该项目论文地址为:https://arxiv.org/abs/1801.09555
检测出肺结节可疑区域后,将其在原始CT图像上展示出来,原理比较简单,就是找出肺结节对应的切片,并圈出结节。贴下代码
首先是读取原始CT数据,需要sitk包,读取的filename是.mhd格式,里面包含CT图像的信息,不过数据其实在同名的.raw文件。
itkimage = sitk.ReadImage(filename)#读取.mhd文件
numpyImage = sitk.GetArrayFromImage(itkimage)#获取数据,自动从同名的.raw文件读取
之后,将其传入下面的函数,ct_scan就是上面的numpyImage。
def show_nodules(ct_scan,nodules,radius=20,pad=5,max_show_num=3):#radius是正方形边长一半,pad是边的宽度,max_show_num最大展示数
show_index = []
for idx in xrange(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: continue
x, y, z = int(nodules[idx,0]), int(nodules[idx,1]), int(nodules[idx,2])
data = ct_scan[z]
#注意 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:#检查是否有结节在同一张切片,如果有,只显示一张
continue
show_index.append(z)
plt.figure
plt.imshow(data,cmap='gray')
plt.show()
需要强调的是,检测出的肺结节有不止一个,分布于不同切片,有些结节位于同一张切片,一般来讲,单个CT的肺结节数不会超过三个,所以只展示可能性最高的三个就应该够了。
此处可视化的办法是直接修改像素值,其它方法我还没有试过,相信只要能画出线条就可以。
结果展示

论文官方也给出了展示demo,不过略有不同,官方展示的是预处理后的切片,肺结节的位置自然也是与之对应,展示一下

LUNA16切片的大小统一为512X512,预处理后的尺寸明显不同了。
LUNA16数据集(二)肺结节可视化的更多相关文章
- 肺结节CT影像特征提取(二)——肺结节CT图像特征提取算法描述
摘自本人毕业论文<肺结节CT影像特征提取算法研究> 医学图像特征提取可以认为是基于图像内容提取必要特征,医学图像中需要什么特征基于研究需要,提取合适的特征.相对来说,医学图像特征提取要求更 ...
- LUNA16数据集(三)预处理
在(一)和(二)中简单介绍了LUNA16数据集的组成,以及肺结节的可视化,有了对数据集的基本了解后,还要对数据集进行预处理,计算机视觉中原始数据一般不会直接送入神经网络,这里也是如此. 这篇博客想写已 ...
- LUNA16数据集(一)简介
LUNA16,全称Lung Nodule Analysis 16,是16年推出的一个肺部结节检测数据集,旨在作为评估各种CAD(computer aid detection计算机辅助检测系统)的ban ...
- 肺结节CT影像特征提取(四)——肺结节CT影像特征提取MATLAB代码实现
之前的文章讲述了肺结节CT影像数据特征提取算法及基于MATLAB GUI设计的肺结节CT影像特征提取系统.本文将讲述几个主要部分的代码实现,分别是预处理.灰度特征提取.纹理特征提取.形态特征提取数据. ...
- 肺结节CT影像特征提取(三)——肺结节CT影像特征提取系统软件设计
肺结节的特征提取在临床中有着重要应用,在上篇文章已经对肺结节的基本特征和CT影像特征提取算法有了介绍,提出了三类肺结节CT影像特征提取算法.本文重点介绍肺结节CT影像特征提取系统的功能介绍及使用,利用 ...
- 肺结节CT影像特征提取(五)——肺结节CT影像ROI区域灰度直方图及其图形化
在博客肺结节CT影像特征提取中,已经实现了肺结节的灰度.纹理和形态特征的提取.但是,对于进一步了解ROI区域像素值或者说CT值的分布来说,还存在一定的不足,不能够很好的显示ROI区域. 因此,本文将进 ...
- 机器学习——logistic回归,鸢尾花数据集预测,数据可视化
0.鸢尾花数据集 鸢尾花数据集作为入门经典数据集.Iris数据集是常用的分类实验数据集,由Fisher, 1936收集整理.Iris也称鸢尾花卉数据集,是一类多重变量分析的数据集.数据集包含150个数 ...
- 学习笔记TF056:TensorFlow MNIST,数据集、分类、可视化
MNIST(Mixed National Institute of Standards and Technology)http://yann.lecun.com/exdb/mnist/ ,入门级计算机 ...
- TensorFlow 下 mnist 数据集的操作及可视化
from tensorflow.examples.tutorials.mnist import input_data 首先需要连网下载数据集: mnsit = input_data.read_data ...
随机推荐
- C#操作JSON专题
第一章:C#如何拿到从http上返回JSON数据? 第二章:C#如何解析JSON数据?(反序列化对象) 第三章:C#如何生成JSON字符串?(序列化对象) 第四章:C#如何生成JSON字符串提交给接口 ...
- 常见浏览器bug以及解决方法
1.图片下方3像素: (1).描述:在div中插入图片时,图片会将div下方撑大三像素. (2).hack1:将</div>与<img>写在一行上(可以解决ie6/7): (3 ...
- nginx配置域名
其他都一样,就特别说下server块的配置. server { listen 80; server_name www.icweshop.com; # 注意:这里你填写的域名必须在/etc/hosts中 ...
- .each循环的两种使用方法
- MyBatis总结八:缓存介绍(一级缓存,二级缓存)
简介 为数据库的查询进行缓存,是减少数据库压力的主要途径.分为一级缓存和二级缓存. 一级缓存:session级别缓存,作用于当前会话. 二级缓存:SessionFactory级别缓存,作用于整个Ses ...
- nyoj42欧拉回路
一笔画问题 时间限制:3000 ms | 内存限制:65535 KB 难度:4 描述 zyc从小就比较喜欢玩一些小游戏,其中就包括画一笔画,他想请你帮他写一个程序,判断一个图是否能够用一笔画下 ...
- C++——const
参考:https://www.cnblogs.com/Forever-Kenlen-Ja/p/3776991.html ; //修饰变量,a不能该内容(更改为其他的值) int* const p = ...
- python列表--查找集合中重复元素的个数
方法一: >>> mylist = [1,2,2,2,2,3,3,3,4,4,4,4] >>> myset = set(mylist) >>> f ...
- 在windows中安装OpenSSH,无密码登录,永远不断线
到这里下载最新安装包:https://github.com/PowerShell/Win32-OpenSSH/releases下载下来解压,然后用管理员打开服务器自带的PowerShell,运行下列命 ...
- MacBook Pro (13 英寸, 2017 年)安装win10系统
准备: windows10系统镜像 16G或更大容量U盘(存放驱动,必须格式化为FAT) 官方提供的驱动软件 详细步骤: 1.打开Bootcamp,选择镜像文件 2.点击下一步,选择Bootcamp分 ...