嗨~好久不见
实验室开班啦~搬砖工小D来了
本期是根据资料对医图格式的学习整理:医学图像之DICOM格式解析
1. DICOM(Digital Imaging and Communications in Medicine):
医学数字成像和通信,是医学图像和相关信息的国际标准(ISO 12052)。DICOM被广泛应用于放射医疗,心血管成像以及放射诊疗诊断设备(X射线,CT,核磁共振,超声等),并且在眼科和牙科等其它医学领域得到越来越深入广泛的应用。所有患者的医学图像都以 DICOM 文件格式进行存储。这个格式包含关于患者的 PHI(protected health information,https://en.wikipedia.org/wiki/Protected_health_information)信息,例如姓名,性别,年龄,以及其他图像相关信息比如捕获并生成图像的设备信息,医疗的一些上下文相关信息等。医学图像设备生成 DICOM 文件,医生使用 DICOM 阅读器(能够显示 DICOM 图像的计算机软件)阅读并对图像中发现的问题进行诊断
(2)目前采用的标准是DICOM3.0,每一张图像中都携带着大量的信息,这些信息具体可以分为以下四类:(a)Patient(b)Study(c)Series(d)Image。每一个DICOM Tag都是由两个十六进制数的组合来确定的,分别为Group和Element。如(0010,0010)这个Tag表示的是Patient’s Name,它存储着这张DICOM图像的患者姓名。
(3)基于C++的DCMTK、基于Java的dcm4che以及基于python的pydicom,都是非常优秀的解释DICOM标准的第三方库,通过在工程中引入它们可以避免软件开发人员去进行底层的解析工作,可为项目开发提高效率。下文将会利用基于python的pydicom解析一下dicom文件。
4)目前例如CT,核磁共振,超声等利用精确准直的X线束、γ射线、超声波等,与灵敏度极高的探测器一同围绕人体的某一部位作一个接一个的断面扫描,所以扫描后得到的图像是多层的图像,而我们把一层层的图像在z轴上堆叠起来就可以形成三维图像(这就涉及到三维重建的问题),这时,每一层的图像我们都可以存在dicom文件中(当然,dicom文件不是单纯的像素信息,它还有很多的数据头部信息),如下图,我们的目的就是要把在这些数据头部信息和像素信息从一系列dicom文件中读取出来。
(5) DICOM文件是指按照DICOM标准而存储的医学文件,一般由一个DICOM文件头和一个DICOM数据集合组成,结构图如下图
DICOM文件头包含了标识数据集合的相关信息,每个DICOM文件都必须包括一个文件头:
文件导言,由128个字节组成。
DICOM前缀,可根据这长为4个字节的字符串是否等于“DICM”来判断该文件是不是DICOM文件。
文件信息元素
有关DICOM文件中的数据集部分内容在下一个知识点。
3.DICOM内部信息详解(DICOM Tag与VR)
(1)DICOM文件的主要组成部分是数据集,它是由DICOM数据元素按照指定的顺序依次排列组成的。对于DICOM文件,一般采用显式传输,数据元素按照标签Tag从小到大顺序排列。最基本的单元是数据元,数据元主要由4个部分组成:
DICOM TAG: 存储该项信息的标识
VR(value representation) :存储描述该项信息的数据类型。
value length : 存储描述该项信息的数据长度
value: 存储描述该项信息的数据值
(2)DICOM TAG的分类与说明,在上一个内容中说过,DICOM TAG具体可分为4大类。
Patient Tag:
Study Tag:
Series Tag:
Image Tag:
(3)VR是DICOM标准中用来描述数据类型的,总共有27个值。简单分类如下: