DICOM的数据结构和编码(1)

来源:互联网 发布:服装品牌网络活动策划 编辑:程序博客网 时间:2024/05/26 02:55

 

   无论是在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数据编解码功能时,一定要注意判断,通过字节交换统一为一样的数据格式,否则同样的数据在不同的平台下会得出不同的结果。