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 ...
随机推荐
- 安装zabbix-agent报错 Error: failure: repodata/primary.xml.gz from zabbix: [Errno 256] No more mirrors to try.
安装zabbix-agent报错 yum install -y zabbix-agent Loaded plugins: fastestmirror, refresh-packagekit, secu ...
- Python 学习之---文件目录处理
前言:有关文件夹与文件的查找,删除等功能 在 os 模块中实现.使用时需先导入这个模块, 导入的方法是:import os 一.取得当前目录 s = os.getcwd() s 中保存的是当前目录 ...
- 用sass的minix定义一些代码片段,且可传参数
/** *@module功能 *@description生成全屏方法 *@method fullscreen *@version 1.7.0 *@param{Integer}$z-index 指定层叠 ...
- java.sql.SQLException: Error while processing statement: FAILED: Execution Error, return code 2 from org.apache.hadoop.hive.ql.exec.mr.MapRedTask
执行Hive查询: Console是这样报错的 java.sql.SQLException: Error from org.apache.hadoop.hive.ql.exec.mr.MapRedTa ...
- C++之deque
deque(包含头文件#include<deque>)由若干段连续空间串接而成,一旦有必要在deque的头部或尾端增加新的空间,便配置一段定量连续的空间,串接在deque的头部或尾端.de ...
- css知多少(6)——选择器的优先级(转)
css知多少(6)——选择器的优先级 1. 引言 上一节<css知多少(5)——选择器>最后提到,选择器类型过多将导致一些问题,是什么问题呢?咱们直接举例子说明. 上图中,css中的两 ...
- Data Mining: SSE,MSE,RMSE,R-square指标讲解
转载自:http://blog.csdn.net/l18930738887/article/details/50629409 SSE(和方差.误差平方和):The sum of squares due ...
- Luogu 3457 [POI2007]POW-The Flood
感觉自己什么题都写不动了. 又是一个神贪心:把所有城市中的点按照高度从小到大排序之后拿出来逐个计算,枚举其他高度小于它的点向四周扩展,如果这个点不能被之前放过的抽水机覆盖,那么把答案加一,并在这个点放 ...
- oracle创建数据库的语句
首先 oracle严格来说表空间的概念和数据库的概念很像,为了理解的方便我们,可以把表空间就先当成数据库 我们在安装oracle的服务端的时候默认会安装一些,默认实例 1.建立表空间,现在解释下面语句 ...
- Entity Framework Tutorial Basics(32):Enum Support
Enum in Entity Framework: You can now have an Enum in Entity Framework 5.0 onwards. EF 5 should targ ...