社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  机器学习算法

医学图像处理与深度学习入门

小白学视觉 • 3 年前 • 236 次点击  

点击上方小白学视觉”,选择加"星标"或“置顶

重磅干货,第一时间送达



利用深度学习技术,分析图像与视频,并且将之应用在诸如自动驾驶,无人机等等领域已经成为最新研究方向。在最新的一篇名为“A Neural Algorithm of Artistic Style”[1508.06576] A Neural Algorithm of Artistic Style中,作者描述了一种新的方式,从艺术作品中获得,并且应用到图像中,生成新的图像。另外,在 “Generative Adversarial Networks” [1406.2661] Generative Adversarial Networks(GAN) and “Wasserstein GAN” https://arxiv.org/pdf/1701.07875.pdf文章中,作者提出了新的模型,这些模型能够生成,类似于我们给出的原始数据。至此开启了半监督学习的新世界,并且为半监督学习铺平了道路。

然而这些研究领域仍然停留在普通图像上,然而我们的目标是将这些研究应用于医学图像,进而辅助医疗诊断。在进入主题之前,我们将从图像处理的基础开始,介绍基本的医学图像格式数据,并且将这些数据可视化。在下一篇文章中,我们将深入CNN方法,并且利用Keras(Keras Documentation),对肺癌进行预测。

图像处理基础(python)

 

当前,图像处理工具可谓层出不穷,其中,OpenCV(OpenCV library) 因为其强大的社区支持,以及广泛的可用性,在c++, java python等等编程语言中皆可使用,因此,OpenCV已经成为图像处理主流工具。在这篇文章中,我们将使用jupyter notebook与OpenCV。


安装OpenCV:

pip install opencv-python 或者直接从http://opencv.org中下载并安装。

打开jupyter notebook, 并且确认是否可以 import cv2. 接下来我们将使用到numpy 和 matplotlib。

在notebook中 ,输入以下代码检验是否可以打开并且查看图像。


基本脸部识别

让我们做一些有趣的事情,比如检测脸部。为了检测脸部,我们将使用最初由Rainer Lienhart创建的基于开源xml残片的20x20柔和的adaboost正面人脸检测器。这里有一个好的帖子,详细介绍哈尔级联检测Face Detection using Haar Cascades。

http://opencv.org中,还有很多类似的例子,http://docs.opencv.org/trunk/d6/d00/tutorial_py_root.html , 读者可以多多练习。现在我们已经了解一些基本的图像处理知识,下面我们将学习如何处理医学图像。


医学图像数据格式

医学图像采用数字成像和通信(DICOM)作为存储和交换医学图像数据的标准解决方案。这个标准的第一个版本是在1985年发布的。发展到现在,该方案有了一些改变。该标准使用文件格式和通信协议。

文件格式 - 所有患者医疗图像都以DICOM文件格式保存。除了其他图像相关数据(例如用于拍摄图像的设备以及医疗处理的一些背景)之外,该格式具有关于患者的PHI(受保护的健康信息),例如姓名,性别,年龄。医学影像设备创建DICOM文件。医生使用DICOM查看器,可显示DICOM图像的计算机软件应用程序,读取和诊断图像中的发现。

通信协议 - DICOM通信协议用于搜索档案中的成像研究,并将成像研究恢复到工作站以显示。连接到医院网络的所有医疗成像应用程序都使用DICOM协议来交换信息,主要是DICOM图像,还包括患者和手术信息。还有更先进的网络命令,用于控制和跟踪治疗,调度程序,报告状态,分担医生和成像设备之间的工作量。关于DICOM标准细节,在这里推荐一个很好的博客http://dicomiseasy.blogspot.com


分析DICOM图像

用于分析DICOM图像的一个很好的python包是pydicom。在本节中,我们将看到如何在Jupyter笔记本上呈现DICOM图像。安装OpenCV使用:pip install pydicom

安装pydicom软件包后,请回到jupyter笔记本。在笔记本中,导入dicom包和其他包,如下所示。

初次之外,我们还可以用pandas,scipy, skimage,mpl_toolkit 进行数据处理和分析。

接下来,我们介绍一些可以获得DICOM 数据库,如下:

  • kaggle competitions and Datasets

  • Dicom Library

  • Osirix Datasets

  • Visible Human Datasets

  • The Zubal Phantom

从以上数据库中下载dicom文件,并且载入jupyter notebook

第一步:在jupyter 中读取DICOM文件,并可视化

上图中,第一行代码,我们导入第一个dicom文件,我们使用它作为一个reference,用来获取元数据。

然后我们计算三维NumPy数组的总和,它们等于(切片中像素行的数量)x(切片中像素列的数量)x(切片的数量)沿着x,y和z笛卡尔坐标轴。最后,我们使用PixelSpacing和SliceThickness属性来计算三个轴上的像素之间的间距。我们将数组维存储在ConstPixelDims中,并将间距存储在ConstPixelSpacing [1]中。

第二步:进一步了解DICOM 格式数据:

CT扫描的测量单位是Hounsfield单位(HU),它是放射性强度的量度。仔细校准CT扫描仪以准确测量。关于这方面的详细了解可以在这里找到。https://web.archive.org/web/20070926231241/http://www.intl.elsevierhealth.com/e-books/pdf/940.pdf

每个像素被分配一个数值(CT值),它是相应体素中所有衰减值的平均值。将这个数字与水的衰减值进行比较,并在戈弗雷·豪斯菲尔德爵士(Sir Godfrey Hounsfield)之后以胡恩斯菲尔德单位(Hounsfield units,HU)的任意单位的比例显示。

这个标度将水分配为零的衰减值(HU)。CT数字的范围是2000HU宽,尽管一些现代扫描仪的HU的范围可以达到4000.每个数字代表在光谱两端的+1000(白色)和-1000(黑色)的灰色阴影。

一些扫描仪具有圆柱扫描边界,但是输出图像是方形的。落在这些边界之外的像素的固定值为-2000。

第一步通常是将这些值设置为0.接下来,让我们回到HU单位,通过乘以重新调整斜率并添加拦截(这些拦截方便地存储在扫描的元数据中!)。


Acknowledgements

【1】https://pyscience.wordpress.com/2014/09/08/dicom-in-python-

【2】importing-medical-image-data-into-numpy-with-pydicom-and-vtk/

【3】http://www.osirix-viewer.com/resources/dicom-image-library/

【4】http://wearables.cc.gatech.edu/paper_of_week/viola01rapid.pdf

【5】http://adilmoujahid.com/posts/2016/06/introduction-deep-learning-python-caffe/

【6】http://dicomiseasy.blogspot.com/

【7】https://www.kaggle.com/c/data-science-bowl-2017

【8】http://docs.opencv.org/trunk/d6/d00/tutorial_py_root.html

Kaggle community for all the different scripts and support



小白团队出品:零基础精通语义分割↓

下载1:OpenCV-Contrib扩展模块中文版教程
在「小白学视觉」公众号后台回复:扩展模块中文教程即可下载全网第一份OpenCV扩展模块教程中文版,涵盖扩展模块安装、SFM算法、立体视觉、目标跟踪、生物视觉、超分辨率处理等二十多章内容。

下载2:Python视觉实战项目52讲
小白学视觉公众号后台回复:Python视觉实战项目即可下载包括图像分割、口罩检测、车道线检测、车辆计数、添加眼线、车牌识别、字符识别、情绪检测、文本内容提取、面部识别等31个视觉实战项目,助力快速学校计算机视觉。

下载3:OpenCV实战项目20讲
小白学视觉公众号后台回复:OpenCV实战项目20讲即可下载含有20个基于OpenCV实现20个实战项目,实现OpenCV学习进阶。

交流群


欢迎加入公众号读者群一起和同行交流,目前有SLAM、三维视觉、传感器自动驾驶、计算摄影、检测、分割、识别、医学影像、GAN算法竞赛等微信群(以后会逐渐细分),请扫描下面微信号加群,备注:”昵称+学校/公司+研究方向“,例如:”张三 + 上海交大 + 视觉SLAM“。请按照格式备注,否则不予通过。添加成功后会根据研究方向邀请进入相关微信群。请勿在群内发送广告,否则会请出群,谢谢理解~


Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/132467
 
236 次点击