转自:https://www.jianshu.com/p/5db8933a25a4
作者:我住的城市没有福合埕
1.什么是DICOM
DICOM(Digital Imaging and Communications in Medicine)即医学数字成像和传输协议,是用医疗影像(CT 核磁共振 DR CR 超声等)数据传输,存储,查询和显示的协议总和。
2.数据内容
DICOM数据由图像和病人、影像设备等相关数据组成的,比如病人姓名、年龄、生日性别等等。
3.VR
一个DICOM文件类似一个类,会有很多属性,属性可能是一个字段,数组或者包含了另外一个类。编程语言会定义基础数据类型,类似的DICOM定义很多基础类型叫做VR(Value Representations)值表现。
文本.jpeg
设备 人 实例 日期和时间.jpeg
文本格式 二进制格式.jpeg
PN 病人姓名
DICOM 规定了如下的姓名顺序:
姓^教名^中名^名前缀^名后缀
UIDs 唯一标识
UID是像“1.2.840.10008.1.2”那样由数字组成并由逗号分隔的字符串;UID字符串具有全球唯一性,能够保证在多 个国家、地点、厂商和设备间区分病人。
SQ 序列化数据集
SQ VR是对数据集序列的编码,每个数据集可能包含多个数据属性。用面向对象语言的说法,这个属性是一个类。
4.数据字典
DICOM的数据字典代表DICOM的属性名称,数据字典 由四个字节组成,前面两个字节表示项目组 后两个表示元素。
DICOM 数据字典中的一些行.jpeg
栗子
用DICOM语法记录一条信息
病人 Tom Smith,男性,生日 2000 年 8 月 8 日
(0010,0010)Smith^Tom (0010,0030)20000808 (0010,0040)M
5.简单的二进制编码
DICOM文件存储都是采用二进制的形式,所以上面栗子。在用DICOM编码如下:
二进制结构.jpeg
二进制值.jpeg
6.SQ编码
一个复杂的DICOM对象.jpeg
- 在 SQ 序列中的 DICOM 对象是以序列项目的形式进行编码的。
- 每个在 SQ 序列中的对象项目(object-item)前面都会有个(FFFE, E000)的标签(作为项
目分隔符项)。这个项目后面还会跟着以下之一:
a) DICOM 项目的显式长度(比如,表 11 的例子 1 中的第一个和第二个项目)。这个
长度是用来定义为了获得后面的对象所要读取的字节数。
b) 隐式(未定义)长度,设置为十六进制数字 FFFFFFFF(表 11 的例子 3 中的第二个
项目)。那么,我们需要用项目分隔符项(FFFE,E00D)来标记 DICOM 对象项目的结尾。 这个分隔符项是零长度的,因为他只是用来标记 DICOM 对象的结尾并且自己不含 有任何数据。 - 与项目相似,整个 SQ 序列能够显式长度或未定义长度:
a) 如果使用显式长度(例子 2,长度 00000A00),那么这个长度等于所有编码的 DICOM
对象序列(后面马上跟上长度标签)的总长度。在例子 2(见表 11)中,我们读取
00000A00 字节并且根据(FFFE,E000)标签将他们分割成 DICOM 对象。
b) 我们也可以使用隐式(未定义)长度,在 DICOM 中会标记为 FFFFFFFF。因为长度 是未知的,所以我们不得不用零长度的序列分隔符项(FFFE,E0DD)来标记 SQ 序列的
结尾。
1.jpeg
2.jpeg
3.jpeg
以上粗略的介绍了一下DICOM的语法,下一次将讲讲DICOM图像相关内容
作者:我住的城市没有福合埕
链接:https://www.jianshu.com/p/5db8933a25a4
来源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。