从本文开始,作者将开始介绍图像处理的基础知识,基本的医学图像数据,并且对这些数据进行可视化处理。

利用深度学习技术,分析图像与视频,并且将之应用在诸如自动驾驶,无人机等等领域已经成为最新研究方向。在最新的一篇名为“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。

医学图像数据格式

医学图像采用数字成像和通信(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值),它是相应体素中所有衰减值的平均值。 将这个数字与水的衰减值进行比较,并在戈弗雷·豪斯菲尔德爵士(Sir Godfrey Hounsfield)之后以胡恩斯菲尔德单位(Hounsfield units,HU)的任意单位的比例显示。

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

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

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

在下一部分中,我们将使用Kaggle的肺癌数据集和使用Keras的卷积神经网络。 我们将根据这篇文章提供的信息来进行下一个。

Acknowledgements:

python与医学图像处理_医学图像处理与深度学习(一)相关推荐

  1. [转载] python实现语义分割_使用Keras实现深度学习中的一些语义分割模型

    参考链接: Keras中的深度学习-数据预处理 Keras-Sematic-Segmentation 使用Keras实现深度学习中的一些语义分割模型. 配置 tensorflow 1.13.1+ten ...

  2. python风格变换图片_图片风格转换--深度学习介绍

    前言 先举个机器学习的应用例子:图片的风格转换. 原图.jpg 处理后的图.jpg 机器学习 通过计算机强大的计算能力进行迭代运算.试错得到相关知识. 形象生动的描述请看:机器学习 深度学习 神经网络 ...

  3. Deep Learning with Python 读书笔记6.26 I 什么是深度学习

    我感觉这样记录,对于我来说挺好的.因为我看两端对齐的语句容易走神,这样记录阅读的话,就很少出现之前的情况. 我写的初衷,也是自己来看,所以感觉写的不好的,请保留下意见,谢谢. 里面的每一个字我都看过, ...

  4. 三维图像处理_医学有限元鼻上颌骨复合体三维有限元模型的建立

    欢迎将文章分享到朋友圈 1.目的:通过建立鼻上颌骨复合体三维有限元模型,探讨建立三维有限元模型建立的方法,为研究鼻上颌骨复合体的生物力学的特性提供了基础. 2.方法:螺旋CT薄层扫描获取DICOM格式 ...

  5. 图像处理(3):深度学习之图像分类(垃圾分类案例)

    文章目录 AI垃圾分类 产品描述 垃圾分类-数据分析和预处理 代码结构 resnext101网络架构 垃圾分类-训练 垃圾分类-评估 垃圾分类-在线预测 1. 你是什么垃圾? 2. 告诉你,你是什么垃 ...

  6. python机器人库_机器人之实战深度学习(上)OpenCV库

    本文主要向大家介绍了机器人之实战深度学习(上)OpenCV库,通过具体的内容向大家展现,希望对大家学习机器人有所帮助. 在如今人工智能的浪潮下,无数模拟机器学习和深度学习的开发者工具倍出,其中在计算机 ...

  7. python 数据结构转换层_[mcj]使用OpenCV深度学习进行性别和年龄分类(C++/Python)...

    在本教程中,我们将讨论应用于面部的深度学习的有趣应用.我们将估计年龄并从单个图像中找出该人的性别.该模型由Gil Levi和Tal Hassner训练.我们将简要讨论本文的主要思想,并提供有关如何在O ...

  8. 三维图形几何变换算法实验_计算机视觉方向简介 | 深度学习视觉三维重建

    点击上方"计算机视觉life",选择"星标" 快速获得最新干货 作者: Moonsmile https://zhuanlan.zhihu.com/p/79628 ...

  9. C++调用Python文件,TensorFlow和PyTorch构建的深度学习模型,无法使用GPU的情况分析。

    C++调用Python深度学习模型,包含TensorFlow和PyTorch等构造的模型,然后使用GPU出现问题.包含C++调用Python函数,C++加载模型到GPU,GPU内存占用过大,计算完毕内 ...

最新文章

  1. smart-socket如何实现字符串通信
  2. MFCC+DTW做声纹识别
  3. 【Android 逆向】Frida 框架 ( Frida 框架使用环境 | Frida 框架作用 | Frida 框架模块 )
  4. [Issue Fixed]-Ubuntu开发环境下遇到的环境问题梳理
  5. oracle的em能干什么,转载 解决Oracle的EM登录
  6. python操作数据库
  7. LeetCode 143. 重排链表(链表反转+快慢指针)
  8. oracle升级后出现 ora-02055,分布式更新失败 0ra-02055错误 请各位指点(在线等待)...
  9. python函数库 阶跃 信号函数 调用_有没有大神知道 step2 阶跃响应函数的 里面的T的怎么定义...
  10. python换算消费品价格,做折实
  11. [蓝桥杯历届试题] 汉诺塔计数
  12. 副业宝典~副业思维让你拥有更多钱
  13. 计算机应不应该学电路,应该怎么学才能入门电子技术
  14. Oracle表添加时间字段(执行insert、update时,时间字段自动插入当前系统时间)
  15. 年报文本分析:jieba词频统计
  16. c++系列:关于MSVCR100.dll、MSVCR100d.dll、Msvcp100.dll、Msvcp100D.dll 故障查及解决方法
  17. 2022年安全员-C证上岗证题目及在线模拟考试
  18. Linux磁盘管理之GPT分区,Linux磁盘管理之GPT分区
  19. 计算机分级时无法度量视频播放,无法度量视频播放性能怎么办-无法度量视频播放性能的解决方法 - 河东软件园...
  20. 北大计算机直博第五年,我选择退学,没有硕士学位...

热门文章

  1. MS PROJECT 下载
  2. 【C/C++笔记】 C/C++常见问题笔记 1
  3. 软件工程基础第一次作业
  4. [转帖]国产麒麟系统为何饱受争议?
  5. 微软2016校园招聘4月在线笔试 hihocoder 1288 Font Size (模拟)
  6. 云脉H5文档识别的性能评估指标
  7. 4个月转行做软件测试,我的薪资飙升300%
  8. 明日之后登录显示服务器连接中断,明日之后连接中断怎么办 无法登陆服务器解决方法...
  9. PC端微信扫码支付二维码生成接口的调整
  10. vs code 配置 git完整