DICOM的数据结构和编码(1)
无论是在DICOM文件还是DICOM通信中,其信息都是由许多data element(数据单元)的集合所表示,每个data element表示一个属性,如病人姓名、图像类型等等。这些data element按照Tag值从小到大依次连接,类似于数据结构的链表或者数组(SQ类型有另外的编码方式,以后会讲到),请看下图,一个data element包含四个字段Tag,VR,ValueLength,Value Field.
Tag,就是医疗图像信息的唯一性编码,它唯一的表示某种参数或者属性。Tag的值由一个16位的组号和一个16位的单元号组成,如(0008,0020) (注:16进制编码) 表示Study Date(检查日期),这些Tag的定义在第6章Data Dictionary中可以查到。
VR即Value Representation 翻译过来的意思就是值的表达方式,其实就类似于软件的数据类型,如int,string类型。它是由2个单字节
字符表示,如'AE'表示这是AE Title类型的数据。VR在实际存储编码中不一定会有,这取决于采用的transfer syntax(传输语法),采用implicit little endian的语法时,VR是没有的,这就需要软件系统自己有套字典可以根据Tag去查找VR 。
Value Length: 就是Value Field的长度,以字节为单位
Value Field: 值域,字节长度必须为偶数。
将data element的数据结构编码为字节流时受以下几个因素影响:
1.传输语法: Implicit/Explicit VR, BIG/LITTLE Endian
2.VR
当采用implicit VR时,其编码如下,这个时候是没有VR字段的,它采用data dictionary默认的VR.
当采用Explicit VR时,如果VR = OB,OW,OF,SQ,UT,UN时,其编码如下,
如果VR为其他值是编码如下
BIG/LITTLE Endian
影响的是多字节类型数据的字节编码顺序
Little Endian: 最低字节先编码。
Big Endian: 最高字节先编码
对于单字节类型的数据,如字符串或者其他字节型数据没有影响,以下VR类型的受影响:
2-byte US, SS, OW,AT
4-byte OF, UL, SL, FL
8 byte FD
例如: 8-byte FD的数据6789ABCD,
在little endian编码下是CDAB8967, 在BIG endian编码下是6789ABCD.
这个区别非常重要,尤其在实现dicom数据编解码功能时,一定要注意判断,通过字节交换统一为一样的数据格式,否则同样的数据在不同的平台下会得出不同的结果。