医学图像处理与深度学习入门
https://www.toutiao.com/a6701130271518884366/
利用深度学习技术,分析图像与视频,并且将之应用在诸如自动驾驶,无人机等等领域已经成为最新研究方向。在最新的一篇名为“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
作者 | william张真人william张真人 - 知乎
版权声明
本文版权归《william张真人》,转载请自行联系
医学图像处理与深度学习入门相关推荐
- 医学图像处理和深度学习入门
图像处理基础(python) 原作链接:https://mp.weixin.qq.com/s/qhqnAoWa81cdeTY5ywZnnw 现在深度学习使用最多的语言应该就是python.因为pyth ...
- python与医学图像处理_医学图像处理与深度学习(一)
从本文开始,作者将开始介绍图像处理的基础知识,基本的医学图像数据,并且对这些数据进行可视化处理. 利用深度学习技术,分析图像与视频,并且将之应用在诸如自动驾驶,无人机等等领域已经成为最新研究方向.在最 ...
- 模块一:深度学习入门算法
模块一:深度学习入门算法 1.深度学习必备知识 1.1深度学习要解决的问题 机器学习流程: 数据获取 -----> 特征工程 -----> 建立模型 ------> 评估与应用 特征 ...
- LeCun亲授的深度学习入门课:从飞行器的发明到卷积神经网络
Root 编译整理 量子位 出品 | 公众号 QbitAI 深度学习和人脑有什么关系?计算机是如何识别各种物体的?我们怎样构建人工大脑? 这是深度学习入门者绕不过的几个问题.很幸运,这里有位大牛很乐意 ...
- 深度学习入门之PyTorch学习笔记:卷积神经网络
深度学习入门之PyTorch学习笔记 绪论 1 深度学习介绍 2 深度学习框架 3 多层全连接网络 4 卷积神经网络 4.1 主要任务及起源 4.2 卷积神经网络的原理和结构 4.2.1 卷积层 1. ...
- 给深度学习入门者的Python快速教程 - 番外篇之Python-OpenCV
转载自:https://zhuanlan.zhihu.com/p/24425116 本篇是前面两篇教程:给深度学习入门者的Python快速教程 - 基础篇 给深度学习入门者的Python快速教程 - ...
- pytorch深度学习入门笔记
Pytorch 深度学习入门笔记 作者:梅如你 学习来源: 公众号: 阿力阿哩哩.土堆碎念 B站视频:https://www.bilibili.com/video/BV1hE411t7RN? 中国大学 ...
- 深度学习入门笔记(十七):深度学习的极限在哪?
欢迎关注WX公众号:[程序员管小亮] 专栏--深度学习入门笔记 声明 1)该文章整理自网上的大牛和机器学习专家无私奉献的资料,具体引用的资料请看参考文献. 2)本文仅供学术交流,非商用.所以每一部分具 ...
- 深度学习入门笔记(十二):深度学习数据读取
欢迎关注WX公众号:[程序员管小亮] 专栏--深度学习入门笔记 声明 1)该文章整理自网上的大牛和机器学习专家无私奉献的资料,具体引用的资料请看参考文献. 2)本文仅供学术交流,非商用.所以每一部分具 ...
最新文章
- 回顾 | 2018年十大AI新闻 中国继续占据主导优势
- ExoPlayer 开发者指导
- select里加链接
- 认识Web.config文件
- python3 协程 写法_理解Python的协程(Coroutine)
- python基于web可视化_python可视化(转载)
- 【转】CSS(10)盒子模型
- weblogic8.1在myeclipse中启动正常,在单独的weblogic中无法正常启动的解决方案.
- UVA ~ 816 ~ Abbott's Revenge (BFS + 打印路径)
- 弹弹堂手游语音服务器怎么连接,腾讯弹弹堂手游空间怎么进去 互动玩法攻略介绍...
- 用Auto.js批量删除空间说说
- Laravel-hyn/multi-tenancy多租户扩展的使用
- 我来回答人生百问^_^老姚
- ToDoList 案例完整 尚硅谷
- Android安全:禁止APP录屏和截屏
- 一文看懂WebRTC媒体服务器
- mac的home、end、pageUp、pageDown键
- 使用Oracle sql_trace 工具
- 微信小程序调用python分析图片_小帅丶干货之图像识别在微信小程序展示
- html表格中加函数,excel中的substitute函数