我们的目标是将用在通用图像上的深度学习方法应用到医学图像中以帮助医疗。本文先从图像处理的基础知识开始讲解,包括使用pyDICOM将医学图像数据导入NumPY以及使用VTK可视化医疗数据。
为了便于影像信息的共享和交流,美国放射学会和美国国家电器制造商协会联合制定了医学数字图像通讯标准ACR/NEMA DICOM 3.0,其主要目的是为了在各种医疗影像产品之间提供一致性接口,以便更有效地在医学影像设备之间传输交换数字影像。DICOM标准主要由以下几部分组成:
1)概述:DICOM的概念、组成、内容及其评价。
2)兼容性: 说明了生产厂商该如何制定并描述自己的DICOM产品。包括对信息对象、服务类、以及传输协议、编码方法等的选择。
3) 信息对象定义:利用面向对象的设计方法,采用"E-R"模型,把具体事物映射到DICOM的应用范围之内。例如现实具体的患者,在DICOM中就映射为“患者IOD”,其中包括许多属性,如姓名、年龄、身高等。
4) 服务类定义:服务类是对现实中医学信息间的传递和通讯的抽象概括。
5) 数据结构和编码。
6)数据字典:数据字典给出各数据元素精确的定义,包括一个唯一标识符、一个名称、一个数据类型以及使用说明。
7)消息交换、8)、消息交换台网络支持、9)消息交换的点对点支持。
pydicom
代码的一部分。这个包的一个显着方面是,在读取DICOM文件时,它创建一个dicom.dataset.FileDataset
对象,其中不同的元数据被分配给具有相同名称的对象属性。我们将在下面看到:RefDs
来提取元数据,其文件名在lstFilesDCM
列表中是第一个。然后,我们计算3D NumPy数组的总尺寸,其等于(切片中的像素行数)x(x,y和z笛卡尔轴)x(切片中的像素列数)x(切片数) 。最后,我们使用PixelSpacing
和SliceThickness
属性来计算三个轴之间的像素间距。我们存储数组的维数ConstPixelDims
和间距ConstPixelSpacing
。numpy.arange
,
ConstPixelDims
和
ConstPixelSpacing
计算这个数组的轴。接下来是最后
pydicom
一部分:
你可以看到,我们在这里做的是首先创建一个NumPy数组ArrayDicom
,使用以前计算过的ConstPixelDims
尺寸命名。在dtype
这个阵列是相同dtype
的pixel_array
基准数据集RefDs
,我们最初用于提取元数据。这里的兴趣在于该pixel_array
对象是一个纯NumPy数组,其中包含特定DICOM切片/图像的像素数据。因此,我们下一步将循环遍历收集的DICOM文件名,并使用该dicom.read_file
函数将每个文件读入dicom.dataset.FileDataset
对象。然后,我们使用该pixel_array
对象的属性,并将ArrayDicom
沿z轴堆叠。
最后显示图像如下:
Reference:(有改动)
1. https://medium.com/@taposhdr/medical-image-analysis-with-deep-learning-i-23d518abf531
2. https://pyscience.wordpress.com/2014/09/08/dicom-in-python-importing-medical-image-data-into-numpy-with-pydicom-and-vtk/
3. DCM图像文件格式简析
4. https://en.wikipedia.org/wiki/DICOM
5. http://dicomiseasy.blogspot.com/p/introduction-to-dicom.html