专栏名称: 医学影像云
《医学影像云》公众号(yxyxjs)平台,旨在为同道提供医学影像领域的资讯信息、学术思想、前沿科技、发展趋势等学习和交流切磋的平台。望各位医学同道在本平台得己所需,共同进步!
目录
相关文章推荐
转化医学网  ·  【Nature子刊】仁济医院朱鹤团队:揭秘载 ... ·  1 周前  
贝壳社  ·  起底艾伯维神经科学领域 ·  1 周前  
51好读  ›  专栏  ›  医学影像云

从数据结构到Python实现:如何使用深度学习分析医学影像(上)

医学影像云  · 公众号  · 医学  · 2017-06-19 17:07

正文

摘要

运用深度学习技术进行图像和视频分析,并将它们用于自动驾驶汽车、无人机等多种应用场景中已成为研究前沿。近期诸如《A Neural Algorithm of Artistic Style》等论文展示了如何将艺术家的风格转移并应用到另一张图像中,而生成新的图像。其他如《Generative Adversarial Networks》(GAN)以及「Wasserstein GAN」等论文为开发能学习生成类似于我们所提供的数据的模型做了铺垫。因此,它们在半监督学习领域打开了新世界的大门,也为将来的无监督学习奠定了基础。


尽管这些研究领域处于通用图像层面,但我们的目标是将它们应用于医学图像以辅助医疗。我们需要从基础开始。本文第一部分将从图像处理的基础、医学图像格式化数据的基础以及一些可视化的医疗数据谈起。而后一部分文章将深入探究卷积神经网络,并使用 Keras 来预测肺癌。

基本图像处理(利用 python 实现)

图像处理库有很多,但 OpenCV(开源计算机视觉库,open computer vision)凭借其广泛的支持且可用于 C++、java 和 python 的优点而成为主流。而我更偏向于使用 jupyter notebook 导入 OpenCV。

你可以使用 pip install opencv-python,也可以从 opencv.org 网站直接进行安装。


安装 opencv


现在打开 Jupyter notebook 并确认能够导入 cv2。你还需要 numpy 和 matplotlib 库来在 notebook 内查看图片。



现在来检查能否打开并通过键入下述代码在笔记本上查看图像。


通过 OpenCV 进行图像加载的示例


基本人脸识别

我们来做点有意思的事情吧,比如人脸识别。我们将使用一种最初由 Rainer Lienhart 开发的正面人脸识别器,它使用了基于开源 xml 残基(stump-based)的 20x20 柔和 adaboost 算法。

关于 Haar-cascade 检测的详细范例:http://docs.opencv.org/trunk/d7/d8b/tutorial_py_face_detection.html

使用 OpenCV 进行人脸识别

在文档区使用 opencv 进行图像处理的例子不胜枚举。

我们已经了解了图像处理的基础,下面来了解医学图像格式吧。


医学图像数据格式

医学图像以数字成像和通信(DICOM)为存储与交换医学图像数据的标准解决方案。该标准的第一版发布于 1985 年,之后有少许修改;它使用了文件格式和通信协议如下。

  • 文件格式:所有患者的医疗图像都以 DICOM 文件格式进行保存。该格式不仅具有与图像相关的数据(如用于捕获图像的设备和医疗处理情境),还具有关于患者的 PHI (受保护的健康信息,protected health information),如姓名、性别、年龄等。医疗影像设备可以创建 DICOM 文件,而医生可以使用 DICOM 查看器以及可显示 DICOM 图像的计算机应用程序来读取并诊断从图像获得的结果。

  • 通信协议:DICOM 通信协议用于搜索档案中的成像研究,并将成像研究恢复到工作站来显示。连接到医院网络的全部医学成像应用程序都使用 DICOM 协议来交换信息,其中大部分信息是 DICOM 图像,但还包括患者和手术信息。此外还有更先进的网络命令用于控制并跟踪治疗、调整进程、报告状态,并在医生和成像设备之间共享工作负载。


现有篇博文很细致地描述了 DICOM 标准,此处为链接:http://dicomiseasy.blogspot.com/


▲分析DICOM文件

Pydicom 是一个 python 包,它很适合分析 DICOM 图像。本节将阐述如何在 Jupyter notebook 上呈现 DICOM 图像。


安装 Pydicom 使用:pip install pydicom。


安装 pydicom 包之后,回到 Jupyter notebook 进行操作。在 notebook 中导入 dicom 包以及其他包,如下所示:


我们也能使用 pandas、scipy、skimage 以及 mpl_toolkit 等其他的包来进行数据处理与分析。

你可以在线获得很多免费的 DICOM 数据集,但下述数据集在入门阶段定能有所帮助:

  • Kaggle Competitions and Datasets:它是我的最爱。请查阅肺癌竞争和糖尿病视网膜病变的数据:https://www.kaggle.com/c/data-science-bowl-2017/data

  • Dicom Library:面向教育和科学的 DICOM 库,其提供免费的在线医疗 DICOM 图像或视频文件共享服务。

  • Osirix Datasets:提供通过各种成像模式获取的大量人类数据集。

  • Visible Human Datasets:在这里可视化人类计划的一部分数据可以免费利用,这很奇怪,因为获取这些数据既不免费也不轻松。

  • The Zubal Phantom:该网站免费提供 CT 和 MRI 这两种男性的多个数据集。

请下载 dicom 文件并加载到 jupyter notebook 中。



现在将 DICOM 图像加载到列表中。


第一步:在 Jupyter 中进行 DICOM 图像的基本查看操作

在第一行加载第一个 DICOM 文件来提取元数据,这个文件将赋值为 RefDs,其文件名会列在 lstFilesDCM 列表的顶端。



然后来计算 3D NumPy 数组的总维度,它等于在笛卡尔坐标轴中(每个切片的像素行数*每个切片的像素列数*切片数)。最后,使用 PixelSpacing 和 SliceThickness 属性来计算三个轴之间的像素间距。我们将把数组维度储存在 ConstPixelDims 中,把空间储存在 ConstPixelSpacing [1] 中。



第二步:查看 DICOM 格式的细节

CT 扫描中的测量单位是亨氏单位(Hounsfield Unit,HU),它是辐射强度的度量。CT 扫描仪经过高度校准以精确测量。


每个像素都被分配了一个数值(CT 号),它是包含在相应体素(corresponding voxel)中的所有衰减值的平均数。将这个数字与水的衰减值进行比较,并以任意单位中的亨氏单位(HU)为刻度进行显示。

这个刻度将水的衰减值(HU)标为 0。CT 数量的范围是 2000HU,但一些现代扫描仪具有较高的 HU 范围,最高可达 4000。每个数字表示在光谱的其中一端会出现+1000(白色)和-1000(黑色)的灰色阴影。

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

第一步通常是将这些值设置为 0。接着,通过与重新缩放的斜率相乘并添加截距来返回到亨氏单位(斜率和截距均很方便地存储在扫描的元数据中!)。


下部分将会用到 Kaggle 的肺癌数据集,并使用 Keras 卷积神经网络进行建模;它将以上文所提供的的信息为基础。


在上文中,我们介绍了一些使用 OpenCV 进行图像处理的基础知识,以及 DICOM(医学数字影像和通讯)图像基础。下面我们将从卷积神经网络(Convolutional Neural Nets)的视角来谈一谈深度学习基础。在下部分文章里,我们将以 Kaggle 的肺癌数据集为实例,来研究一下在一个肺癌 DICOM 图像中要寻找的关键信息,并使用 Kera 开发出一个预测肺癌的模型。


>>>转载声明:版权申明【本微信所有转载文章系出于传递更多信息之目的,且明确注明来源和作者,不希望被转载的媒体或个人可与我们联系,我们将立即进行删除处理】

>>>来源:机械之心

>>>选自:Medium


征稿启事

内容范围

有关医学影像技术的资讯、动态、市场、前沿等信息和文章;各种设备的技术应用、维护、检测、防护、质控、管理等文章;有关本行业的晋升、继续教育考题、复习资料等。

来稿要求

请务必保证原创,拒绝抄袭,文责自负。本微信公众号对所录用文章会进行自动识别,一经发现非原创文章,将作撤稿处理,不予录用。

关于版权

作者投稿一旦经本平台录用,即默认稿件版权已被授权本平台,并同步发布到《医学影像技术网》主站点。

关于报酬

原创文章一旦录用,即将以微信红包形式给予作者100-2000元稿费。

寄稿地址

请各位来稿者将您的稿件(请附带联系方式、微信号)发送至邮箱:[email protected]我们将以邮件和微信的形式进行反馈。

本平台拥有最终解释权