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张真人》,转载请自行联系

医学图像处理与深度学习入门相关推荐

  1. 医学图像处理和深度学习入门

    图像处理基础(python) 原作链接:https://mp.weixin.qq.com/s/qhqnAoWa81cdeTY5ywZnnw 现在深度学习使用最多的语言应该就是python.因为pyth ...

  2. python与医学图像处理_医学图像处理与深度学习(一)

    从本文开始,作者将开始介绍图像处理的基础知识,基本的医学图像数据,并且对这些数据进行可视化处理. 利用深度学习技术,分析图像与视频,并且将之应用在诸如自动驾驶,无人机等等领域已经成为最新研究方向.在最 ...

  3. 模块一:深度学习入门算法

    模块一:深度学习入门算法 1.深度学习必备知识 1.1深度学习要解决的问题 机器学习流程: 数据获取 -----> 特征工程 -----> 建立模型 ------> 评估与应用 特征 ...

  4. LeCun亲授的深度学习入门课:从飞行器的发明到卷积神经网络

    Root 编译整理 量子位 出品 | 公众号 QbitAI 深度学习和人脑有什么关系?计算机是如何识别各种物体的?我们怎样构建人工大脑? 这是深度学习入门者绕不过的几个问题.很幸运,这里有位大牛很乐意 ...

  5. 深度学习入门之PyTorch学习笔记:卷积神经网络

    深度学习入门之PyTorch学习笔记 绪论 1 深度学习介绍 2 深度学习框架 3 多层全连接网络 4 卷积神经网络 4.1 主要任务及起源 4.2 卷积神经网络的原理和结构 4.2.1 卷积层 1. ...

  6. 给深度学习入门者的Python快速教程 - 番外篇之Python-OpenCV

    转载自:https://zhuanlan.zhihu.com/p/24425116 本篇是前面两篇教程:给深度学习入门者的Python快速教程 - 基础篇 给深度学习入门者的Python快速教程 - ...

  7. pytorch深度学习入门笔记

    Pytorch 深度学习入门笔记 作者:梅如你 学习来源: 公众号: 阿力阿哩哩.土堆碎念 B站视频:https://www.bilibili.com/video/BV1hE411t7RN? 中国大学 ...

  8. 深度学习入门笔记(十七):深度学习的极限在哪?

    欢迎关注WX公众号:[程序员管小亮] 专栏--深度学习入门笔记 声明 1)该文章整理自网上的大牛和机器学习专家无私奉献的资料,具体引用的资料请看参考文献. 2)本文仅供学术交流,非商用.所以每一部分具 ...

  9. 深度学习入门笔记(十二):深度学习数据读取

    欢迎关注WX公众号:[程序员管小亮] 专栏--深度学习入门笔记 声明 1)该文章整理自网上的大牛和机器学习专家无私奉献的资料,具体引用的资料请看参考文献. 2)本文仅供学术交流,非商用.所以每一部分具 ...

最新文章

  1. 回顾 | 2018年十大AI新闻 中国继续占据主导优势
  2. ExoPlayer 开发者指导
  3. select里加链接
  4. 认识Web.config文件
  5. python3 协程 写法_理解Python的协程(Coroutine)
  6. python基于web可视化_python可视化(转载)
  7. 【转】CSS(10)盒子模型
  8. weblogic8.1在myeclipse中启动正常,在单独的weblogic中无法正常启动的解决方案.
  9. UVA ~ 816 ~ Abbott's Revenge (BFS + 打印路径)
  10. 弹弹堂手游语音服务器怎么连接,腾讯弹弹堂手游空间怎么进去 互动玩法攻略介绍...
  11. 用Auto.js批量删除空间说说
  12. Laravel-hyn/multi-tenancy多租户扩展的使用
  13. 我来回答人生百问^_^老姚
  14. ToDoList 案例完整 尚硅谷
  15. Android安全:禁止APP录屏和截屏
  16. 一文看懂WebRTC媒体服务器
  17. mac的home、end、pageUp、pageDown键
  18. 使用Oracle sql_trace 工具
  19. 微信小程序调用python分析图片_小帅丶干货之图像识别在微信小程序展示
  20. html表格中加函数,excel中的substitute函数

热门文章

  1. 【必会】SQL 命令大全
  2. ios项目编译错误:error: Multiple commands produce 'Faun.app/Assets.car'
  3. 如何无痛写文章 - 《麦肯锡教我的写作武器》
  4. 大疆2019届秋招笔试--测试工程师
  5. 区块链从业者地摊致富秘籍
  6. 【目标检测】英雄联盟能用YOLOv5实时目标检测了 支持onnx推理
  7. 3. lambda 方法引用
  8. 实验记录 | SpeedSeq安装
  9. python毕业设计 基于django框架企业公司网站系统毕业设计设计与实现
  10. ZYT and LBC