雷锋网(公众号:雷锋网)按:本文由图普科技编译自《Medical Image Analysis with Deep Learning Part4》,是最近发表的《深度学习下的医学图像分析(三)》的后续文章。雷锋网独家首发。
对与深度学习相关的医疗保障工作而言,2017年的“Nvidia GTC大会”绝对是一个绝佳的信息来源。在大会上,有诸如Ian GoodFellow和Jeremy Howard的深度学习专家分享了他们对深度学习的见解;还有一些顶级医学院(例如西奈山医学院、纽约大学医学院、麻省综合医院等)和Kaggle在大会上介绍他们的建模战略。
在上一篇文章中,我们谈论了深度学习相关的基本内容。本文,我们将关注于医学图像及其格式。
本文分为三个部分——医学图像及其组成、医学图像格式和医学图像的格式转换。本文希望通过对深度学习的相关知识的介绍,最终达到医学图像分析的目的。
医学图像及其组成
由Michele Larobina和Loredana Murino发表的论文,对本文即将展开的讨论来说是一个很好的信息参考。Michele Larobina和Loredana Murino二人是意大利“生物架构和生物成像协会”(IBB)的成员。IBB是意大利“国家研究委员会”的组成部分,同时也是意大利最大的公共研究机构。我们的另一个参考信息资源是一篇题为《Working with the DICOM and NIfTI data standards in R》的论文。
什么是医学图像?
医学图像是反映解剖区域内部结构或内部功能的图像,它是由一组图像元素——像素(2D)或立体像素(3D)——组成的。医学图像是由采样或重建产生的离散性图像表征,它能将数值映射到不同的空间位置上。像素的数量是用来描述某一成像设备下的医学成像的,同时也是描述解剖及其功能细节的一种表达方式。像素所表达的具体数值是由成像设备、成像协议、影像重建以及后期加工所决定的。
医学图像的组成
医学图像组成 医学图像有四个关键成分——像素深度、光度表示、元数据和像素数据。这些成分与图像大小和图像分辨率有关。
图像深度(又称比特深度或颜色深度)是用来编码每个像素信息的比特数。比如说,一个8比特的光栅可以有256个从0到255数值不等的图像深度。
来源: desktop.arcgis.com/en/arcmap/10.3/manage-data/raster-and-images/bit-depth-capacity-for-raster-dataset-cells.htm
“光度表示”解释了像素数据如何以正确的图像格式(单色或彩色图片)显示。为了说明像素数值中是否存在色彩信息,我们将引入“每像素采样数”的概念。单色图像只有一个“每像素采样”,而且图像中没有色彩信息。图像是依靠由黑到白的灰阶来显示的,灰阶的数目很明显取决于用来储存样本的比特数。在这里,灰阶数与像素深度是一致的。医疗放射图像,比如CT图像和磁共振(MR)图像,是一个灰阶的“光度表示”。而核医学图像,比如正电子发射断层图像(PET)和单光子发射断层图像(SPECT),通常都是以彩色映射或调色板来显示的。
“元数据”是用于描述图形象的信息。它可能看起来会比较奇怪,但是在任何一个文件格式中,除了像素数据之外,图像还有一些其他的相关信息。这样的图像信息被称为“元数据”,它通常以“数据头”的格式被储存在文件的开头,涵盖了图像矩阵维度、空间分辨率、像素深度和光度表示等信息。
“像素数据”是储存像素数值的位置。根据数据类型的不同,像素数据使用数值显示所需的最小字节数,以整点或浮点数的格式储存。 图像大小=数据头大小(包括元数据)+行数 栏数*像素深度*(图像帧数)
医学图像格式
放射图像有6种主要的格式,分别为DICOM(医学数字成像和通讯)、NIFTI(神经影像信息技术)、PAR/REC(Philips磁共振扫描格式)、ANALYZE(Mayo医学成像)、NRRD(近原始栅格数据)和MNIC。
2017年5月的医学图像格式
在上图的五个格式中,DICOM和NIFTI是接受度最高的。
DICOM格式的基本内容
DICOM表示“医学数字成像和通讯”。DICOM是由“美国国家电气制造商协会”(NEMA)发布的标准,这一标准规范了医学成像的管理、储存、打印和信息传输,这些都是扫描仪或医院“医疗影像储传系统”(PACS)中的文件格式。 DICOM包括了一个文件格式和一个网络通讯协议,其中的网络通讯协议是医疗实体间使用TCP/IP进行沟通的一个规范和准则。 一个DICOM文件由一个数据头和图像数据组成的。数据头的大小取决于数据信息的多少。数据头中的内容包括病人编号、病人姓名等等。同时,它还决定了图像帧数以及分辨率。这是图片查看器用于显示图像的。即使是一个单一的图像获取,都会有很多DICOM文件。
来源:https://www.leadtools.com/sdk/medical/dicom-spec1
Pydicom是用于读取DICOM文件的Python库,详情请参阅文本第一部分的代码示例。 “oro.dicom”是用于读取DICOM数据的 R-package。
使用oro.dicom工具包来读取未压缩的DICOM文件
NIFTI格式的基本内容
“神经成像信息技术创新”将NIFTI格式视为ANALYZE7.5格式的替代品。NIFTI最初是用于神经成像的,但它也适用于一些其他的领域。NIFTI中一个主要的特点在于它包含了两个仿射坐标定义,这两个仿射坐标定义能够将每个立体元素指标(i,j,k)和空间位置(x,y,z)联系起来。 Nibabel是用于读取nifti文件的一个朋友Python库,“oro.nifti”是用于读取nifti数据的一个R工具包。
DICOM和NIFTI间的区别
DICOM和NIFTI之间最主要的区别在于NIFTI中的原始图像数据是以3D图像的格式储存的,而DICOM是以3D图像片段的格式储存的。这就是为什么在一些机器学习应用程序中NIFTI比DICOM更受欢迎,因为它是3D图像模型。处理一个单个的NIFTI文件,与处理上百个DICOM文件相比要轻松得多。NIFTI的每一张3D图像中只需储存两个文件,而在DICOM中则要储存更多文件。
NRRD格式的基本内容
灵活的NRRD格式中包含了一个单个的数据头文件和既能分开又能合并的图像文件。一个NRRD数据头能够为科学可视化和医学图像处理准确地表示N维度的栅格信息。“国家医学图像计算联盟”(NA-MIC)开发了一种用NRRD格式来表示“扩散加权图像”(DWI)和“扩散张量图像”(DTI)的方法。NRRD的“扩散加权图像”和“扩散张量图像”数据可以被解读为一个“3D切片机”,能够直观地确定张量图像的方向与神经解剖的预期是一致的。 一个NRRD文件的大致格式(带有数据头)如下图所示:
来源http://teem.sourceforge.net/nrrd/format.html#general.1
MINC格式的基本内容
MINC代表的是“医学成像NetCDF工具包”。MINC文件格式的开发始于1992年“蒙特利神经研究所”(MNI)。目前,McGill的“脑成像中心”(BCI)正积极地对MINC进行进一步开发。MINC格式的第一个版本(Minc1)是建立在标准的“网络常见格式”(NetCDF)之上的;而第二个版本的MINC格式,即Minc2,则是以“分级数据格式第五版”(HDF5)为基础建立的。HDF5支持无限制的多种数据类型,它适用于灵活高效的I/O和高容量、复杂的数据。正是有了这些新的特性和功能,Minc2才能处理大量的、复杂的数据库。 以下是一些研究性论文针对这些格式数据头所作的比较:
来源:出版于2014年的《医学图像格式》
格式转换
从DICOM格式转换为NIFTI格式
dicom2nii是将DICOM格式转换为NIFTI格式的常见工具。一个读取和编写NIFTI文件的Python库是nibabel。如果想要将DICOM格式转换为NIFTI格式,有很多自动转换的工具,比如dcm2nii。Python2的“dcmstack”能让一系列DICOM图像堆叠成多维度的数组,这些数组能够被编写为带有“数据头扩展”(DcmMeta扩展)的NIFTI文件,其中的“数据头扩展”其实就是一份DICOM文件元数据的摘要。
由DICOM格式转换为MINC格式
BIC的MINC团队开发了一种将DICOM转换为MINC图像的工具,这个程序是用C语言编写的,点击此链接查看github报告。 由NIFTI或ANALYZE转换为MINC格式 在BIC的MINC团队开发了另外一种能够将NIFTI或ANALYZE图像转换为MINC图像的工具,这个程序叫做nii2mnc。点击此链接查看包括nii2mnc在内的一系列转换工具。
总结
我们在本文介绍了好几种可以用于储存成像和深度学习的格式。我们的目标就是利用最佳的格式,让我们的卷积神经网络作出准确的预测。
在下一篇文章中,我们将讨论如何利用其中一种格式从CT扫描图像中进行肺部切割。
雷锋网原创文章,未经授权禁止转载。详情见转载须知。