1、 什么是DICOM?
DICOM(DigitalImaging andCommunications inMedicine)是指医疗数字影像传输协定,是用于医学影像处理、储存、打印、传输的一组通用的标准协定。它包含了文件格式的定义以及网络通信协议。DICOM是以TCP/IP为基础的应用协定,并以TCP/IP联系各个系统。两个能接受DICOM格式的医疗仪器间,可通过DICOM格式的文件,来接收与交换影像及病人资料。
目前,DICOM被广泛应用于放射医疗,心血管成像以及放射诊疗诊断设备(X射线,CT,核磁共振,超声等),并且在眼科和牙科等其它医学领域得到越来越深入广泛的应用。
2、DICOM的存储格式
DICOM文件的整体结构如图2.1所示,先是128字节的导言部分(没有实际信息),接着是四个字节组成的"DICM"字符串,然后是若干DataElement元素依次排列直至文件结束。
图2.1 DICOM文件存储结构示意图
大小端:适用于所有的数值型字段,包括:组号域、元素号域、长度域、数值域(IS、DS、US、SS、UL、FL等)其中,传输TAG、文件元TAG不受大小端影响,一律为小端(包括所有域)
2.1 DataElement的三种结构
DataElement是存储文件信息的主体,DataElement的总体结构如图2.2所示:
图2.2 DataElement的结构图
Tag由2 Byte的组号和2 Byte的元素号组成,VR是DICOM特有的值表示法,关于值表示法的解释见2.3节。按照VR的类型以及是否显示VR,DataElement又分为三种具体的结构。
- 显示VR:VR为OB OW OF UT SQ UN的元素结构
结构 | 组号 | 元素号 | VR | 预留 | 值长度 | 数据元素值 |
---|---|---|---|---|---|---|
字节数 | 2 | 2 | 2 | 2(0x00,0x00) | 2 | 由值长度确定 |
- 显示VR:VR为普通类型时元素结构(少了预留那一行)
结构 | 组号 | 元素号 | VR | 值长度 | 数据元素值 |
---|---|---|---|---|---|
字节数 | 2 | 2 | 2 | 2 | 由值长度确定 |
- 隐式VR
结构 | 组号 | 元素号 | 值长度 | 数据元素值 |
---|---|---|---|---|
字节数 | 2 | 2 | 2 | 由值长度确定 |
2.2 DataElement的Tag
DataElement的Tag用于标识Element的数据内容,比如病人信息、图像的格式等。Tag总共有2000多个,常用的主要组号:0002组描述设备通讯,0008组描述特征参数,0010组描述患者信息,0028组描述图像信息参数。
Dicom文件数据中所有dataElement从前到后按tag又可简单分段:文件元Tag,普通Tag,像素Tag。
0) 通讯Tag(0002+元素号):定义通讯传输语法
1) 文件元Tag(组号+0000):不受传输语法影响,总是以小端显式VR方式表示,用于定义传输语法;文件元Tag的dataElement,并没有多大的意义,它的值长度是整个组所有DataElement的字节长度,一个Dicom中可以只有一个文件元Tag,也可以有多个文件元Tag。
2) 普通Tag:除了文件元Tag和像素Tag,其余的都是普通Tag数据。包括:图像宽,高,数据传输格式,病人姓名,病人生日,病历医院,病历科室,病情的描述等等数据;
3) 像素Tag(7fe0,0010):表示DataElement存储的是病历的图像数据。
常用的Tag分类表见文末。
2.3 DataElement的VR
VR(Value Representation)值表示法是DICOM文件中特有的一种数据类型表示方式,规定了不同数据类型的含义及存储格,共有27种VR。在隐式VR的结构中会根据元素标识进行判断。Tag和VR是有对应关系的,每一种Tag其实是有一个固定的VR类型。
27种VR表附在文末。
2.4 DataElement的数据长度
数据长度用两个字节存储了数据元素值的长度,所有DICOM数据元素都应该为偶数长度,若为奇数,追加空格或空NULL。当数据长度为0xFFFFFFFF时,数据一直到截止符为止。
附表:
表1 常用的Tag分类表
表2 27种VR的含义及数据长度
参考:
常用Tag和VR表格
DICOM文件解析
dicom文件详细解析