DICOM3.0标准梳理:

自1993年DICOM3.0首次发布后,DICOM标准不断的发展,每年都会进行多次扩充和修改。目前,DICOM标准共有22个章节,但是随着网络技术的发展,第9章和第13章节关于点对点连接传输的部分已被淘汰删除。

一、DICOM标准范畴:

Part 1: 引言与概述(Introduction and Overview):

​ 定义了文档中使用的属于并且对标准其他章节的概述。

Part 2: 兼容性(Conformance):

​ 定义了要求制造商精确描述其产品兼容性声明。

Part 3: 信息对象定义(Information Object Definitions):

​ 定义了若干个信息对象类,包括普通型和复杂型,作为医疗现实中实体的抽象定义。

Part 4: 服务类规范(Service Class Specifications):

​ 定义多个服务类,所有DICOM功能都通过服务类的使用来实现。

Part 5: 数据结构及编码(Data Structures and Encoding):

​ 定义了构造DICOM消息中传递的数据集的编码规则。

Part 6: 数据字典(Data Dictionary):

​ 列出了DICOM标准中所有的数据元 素定义。

Part 7: 信息交换(Message Exchange):

​ 定义了用于应用实体交换消息的服务和协议。

Part 8: 消息交换的网络通讯支持(Network Communication Support for Message Exchange):

​ 说明了DICOM实体之间在网络环境中通信服务和必要的上层协议的支持。这些服务和协议保证了应用实体之间有效地和正确地通过网络进行通信。DICOM中的网络环境包括OSI和TCP/IP两种参考模型,DICOM只是使用而不 是实现这两类协议,因而具有通用性。

Part 10: 用于介质交换的介质存储和文件格式(Media Storage and File Format for Media Interchange ):

​ 详细说明了在可移除介质上存储医学成像信息的通用模型。

Part 11: 介质存储应用概要(Media Storage Application Profiles):

​ 规定了介质存储中应用选择机制和策略。

Part 12: 用于介质交换的物理介质和介质格式(Media Formats and Physical Media for Media Interchange):

​ 介绍存储过程中数据和目录的格式以及管理规范要求。其中较为关键的是DICOMDIR文件,它在图像的目录分类中起着重要作用。

Part 14: 灰度图像的标准显示功能(Grayscale Standard Display Function):

​ 详细规范了胶片打印及各种图像显示器材的显示参数。

Part 15: 安全和系统管理概要(Security and System Management Profiles):

​ DICOM标准医疗图像中包含了病人非常详细的个人资料,因此为了保障在存储传输过程中数据的安全性,有必要对信 息实施加密传输。

Part 16: 内容映射资源(Content Mapping Resource):

​ 定义了DICOM信息对象的结构化文档模板和信息对象中使用的代码术语集。

Part 17: 解释信息(Explanatory Information):

​ 此部分包含解释信息的附录。

Part 18: Web服务(Web Services):

​ 此部分定义了通过使用HTTP URL/URI请求来访问DICOM对象的方式以及返回结果的格式。

Part 19: 应用托管(Application Hosting):

​ 定义了通过插件化程序的API访问格式。

Part 20: 使用HL7l临床文档架构的成像报告(Imaging Reports using HL7 Clinical Document Architecture):

​ 指定使用HL7的第二版CDA生成成像报告模板。

Part 21: DICOM与其他格式之间的转换(Transformations between DICOM and other Representations):

​ 说明了图像标注格式与NCI注释的转换。

Part 22: 实时通讯(Real-Time Communication):

​ 定义了视频流或音频流关联的DICOM元数据的实时传输服务。

DICOM3.0标准规定了医学影像格式和传输的众多细节,但是整个标准大致可分为两部分:

  • DICOM文件格式
  • DICOM网络通讯协议

二、DICOM文件格式:

​ 我们在医院拍片检查的大致流程是通过医学设备生成DICOM文件,然后医生使用DICOM阅读器来阅读并对图像中发现的问题进行诊断,所有患者的医学图像信息都是以DICOM文件格式进行存储的,其中包括患者的个人信息、生成图像的设备信息等。在现实世界中,dicom模型可对应为:Patient、Study、Series、Instance。通常一个病人在医院可进行多个检查,每项检查可能会对我们人体多个部位进行扫描,每个部位的扫面会产生多张图像,病人我们可以理解为Patient,检查可以理解为Study,每个部位可以理解为序列Series,每张图像可以是实例Instance,每个Instance实例可以是一个DICOM文件,一般情况下,我们可以理解为一个DICOM文件就是一张包含病人信息的图像,但是一个DICOM文件有时也可包含多帧图像,此时一个DICOM文件就应该是对应多张图像了。具体的实体关系,如下图所示:

1. DICOM文件的主要结构:

DICOM文件主要包括文件头和像素数据两部分,文件头包括文件引言(Meta Information)和数据集(Data set)

典型的DICOM文件结构又如下图所示:

引言:用于存放文件的有关说明,共128个字节

**前缀:**为DICM,4个字符,共4个字节,说明是DICOM文件

文件头的最开始是引言,紧接着是前缀,然后是文件头,最后才是像素数据,像素数据对应得标签为(7fe0,0010),其他标签对应得信息详情可查询DICOM标准Part 6中得标准数据字典。

2. 数据元素的组成规则:

标签(Tag): 信息的唯一性编码,两个十六进制的数的组合(Group, Element) ,如(0002 0001)。

值表示法(VR): DICOM定义得的数据类型 。

数据长度: 所有的数据元素都应该为偶数长度,若为奇数,需要加空格或空。

数据值: 数据值,长度必须是偶数 。

3. MetaInfo文件引言:

​ 该部分主要用于存放一些常用的信息,在标签为0002的组中:

(Group Element) Tag Description 中文解释 VR VM
0002 0000 File Meta Information Group Length Meta Info的长度 UL 1 180
0002 0001 File Meta Information Version Meta Info的版本 OB 1
0002 0002 Media Storage SOP Class UID SOP Class UID 同Data Set里的SOP class UID UI 1
0002 0003 Media Storage SOP Instance UID SOP Instance UID 同Data Set里的SOP Instance UID UI 1 算出
0002 0010 Transfer Syntax UID DataSet的编码方式 UI 1
0002 0012 Implementation Class UID Implementation Class UID UI 1 实现类库决定
0002 0013 Implementation Version Name Implementation版本名 SH 1
0002 0016 Source Application Entity Title 最后一个编辑该文件的实体 AE 1
0002 0017 Sending Application Entity Title 网络上发送该文件的实体 AE 1
0002 0018 Receiving Application Entity Title 网络上接收该文件的实体 AE 1
0002 0100 Private Information Creator UID 私有信息的Creator的UID UI 1
0002 0102 Private Information Meta里面的私有信息 OB 1

4. 数据集DataSet:

​ 该部分用于存储图像相关信息,如病人Patient信息,检查Study信息、序列Series信息、实例Instance信息。

在检查信息、序列信息、实例信息中都有对应的一个唯一标识uid,并且形成层级关系:

UID 含义
第一级:StudyInstanceUID 标识同一患者的一次检查
第二级:SeriesInstanceUID 标识一次检查下的一次序列
第三级:SOPInstanceUID 标识一次序列下的产生的其中一个图像

5. 编码方式

编码方式可以理解为传输语法。

  1. 显式( explicit VR )和隐式( implicit VR)编码,区别是当DICOM为显示编码时数据元素会给出值表示法(VR),而隐式编码则不会给出。

    显式编码:

隐式编码:

  1. 大端(big endian)/小端(little endian),

    little endian:低位字节存放在低位,高位字节存放在高位。

    big endian:低位字节存放在高位,高位字节存放在低位。

默认的DICOM传输语法使用低价先存的编码方式,例如十六进制数据68AF482CH将被编码成2C4BAF68H。特别地,组号为 0000H的所有命令集数据元素必须使用低价先存和隐式VR的格式进行传输。

三、DICOM网络传输协议:

​ 在DICOM应用进行通信时,需要给应用命名也叫作AE(Application Entity),以便其他应用识别。 DICOM采用C/S模式来描述网络传输:客户端(Client)连接到服务端(Server),然后使用服务端提供的各项服务(Services)。不同于传统网络连接中的Server和Client,DICOM中的Server叫做Service Class Provider(SCP),Client叫做Service Class User(SCU)。想要建立DICOM连接(Association),客户端会向服务端发送连接请求消息,该消息主要描述客户端此次连接所期望的DICOM服务及相关设置;随后服务端会查看客户端发送过来的请求信息,确认自己是否支持客户端请求的相关服务并给出反馈信息(DICOM中叫做响应信息Response Message)。一旦网络连接建立,客户端(SCU)和服务端(SCP)就可以进行信息交互。

​ 从上图看出,SCU与SCP之间的数据通信主要包括图像数据的传输以及与图像相关的病人信息的传输等。这些信息的传输主要是利用DIMSE消息服务层中的各种服务原语实现的,包括C-STORE、C-FIND、C-MOVE、N-SET等。 DIMSE消息服务层的主要功能就是将SCU/SCP层的通信需求转换成DICOM中规定的各种消息服务原语,然后将消息服务原语传给下一层。在收到该消息服务原语后,DICOM上层协议层首先通过协议关联单元实现两个对等的应用实体的关联,商讨抽象句法以及传输语法。完成关联后,DICOM上层协议层将消息服务原语以及附加的信息组织成协议数据单元,并实现数据交换。

1.DICOM上层协议层(ULP):

​ ULP的作用主要包括两方面:①提供应用层的公共服 务元素ACSE,具体包括在对等应用实体间通信连接的建立协商,连接正常释放协 商,异常中止协商等功能;②为DIMSE提供网络数据传输支持,也就是以ULP规定的协议数据包格式传送或接收DIMSE的命令流与数据流。

​ DICOM标准中,ULP定义了四种类型服务:

​ 对应七个协议数据单元 :

协议 作用
A-ASSOCIATE-RQ PDU 用于发起链接时,并带有协商信息
A-ASSOCIATE-AC PDU 接受协商信息,DUL建立成功
A-ASSOCIATE-RJ PDU 拒绝协商信息,DUL建立失败
P-DATA-TF PDU 携带数据,主要服务于上层DIMSE
A-RELEASE-RQ PDU 释放请求
A-RELEASE-RP PDU 释放确认
A-ABORT PDU 中断操作,发生于异常和错误情况

2. DIMSE层:

​ DICOM消息服务元素(DIMSE)为DICOM应用实体提供服务,其服务主要指加在信息对象定义(IOD)上的操作(Operation)或通告(Notification)。DIMSE层需要在关联已经建立的前提下工作,根据上层的指令调用相关的服务类,并结合信息实体形成服务对象对(SOP)。该层通过SOP完成应用实体支持的某项功能,例如C-STORE操作可完成一个IOD的传输和存储。DICOM3.0标准中一共定义了11种DIMSE服务:

(1)C-STORE服务:由DIMSE服务用户发起,请求对等的DIMSE服务用户完成复合SOP实例信息的存储。

(2)C-GET服务:由DIMSE服务用户发起,请求根据指定的属性,从对等的DIMSE服务用户取得一个或多个复合SOP实例的信息。

(3)C-MOVE服务:由DIMSE服务用户发起,要求另一个对等的DIMSE用户根据它提供的某些属性信息,将某个或某些SOP实例信息提供给第三个DIMSE用户。

(4)C-IND服务:由DIMSE服务用户发起,请求找到和一系列指定属性字符串相匹配的由对等的DIMSE服务用户管理的SOP实例的属性。C.FIND服务返回相配的属性和属性值的列表。如果没有或出错则返回相应信息。

(5)C-ECHO服务:由DIMSE服务用户发起,用于和对等的DIMSE服务用户确认端到端的通信。

(6)N-EVENT-REPORT服务:唯一的一个通告服务,由DIMSE服务用户发起,报告给对等的DIMSE服务用户一个关于某个SOP实例的事件。

(7)N-GET服务:由DIMSE服务用户发起,从对等的DIMSE服务用户取得信息。

(8)N-SET服务:由DIMSE服务用户发起,请求对等的DIMSE服务用户设置相关信息。

(9)N-ACTION服务:由DIMSE服务用户发起,请求对等的DIMSE服务用户执行某个动作。

(10)N-CI垣ATE服务:由DIMSE服务用户发起,请求对等的DIMSE服务用户创建某个SOP类的实例。

(11)N-DELETE服务:由DIMSE服务用户发起,请求对等的DIMSE服务用户删 除某个SOP类的实例。

3. SCU / SCP管理层:

​ DICOM 分别定义为服务类使用者(SCU)/N务类提供者(SCP)。作为客户的SCU使用DIMSE 服务构建、发送请求消息,并接收SCP的响应消息;作为服务器的SCP将接收来自SCU的请求消息,执行消息所要求的操作和通告,并将产生的结果构建为响应消息发送给SCU。这里SCU/SCP必须首先声明支持何种DICOM服务类。服务类是一组相关的SOP类的集合,完成某一具体的DICOM功能,每个SOP类由IOD以及施 加于该IOD的DIMSE操作组成。

通过上述DICOM网络通讯的介绍,可知DIMSE从起源上,是面向局域网应用设计的,它往往要求通讯双方具有固定且已知的IP,并且在开始正式传输数据前,通讯双方要先完成一套稍显复杂的“握手互认”过程,其并不适用于互联网。DICOM Web服务标准则是一套基于RESTful进行设计的适用于互联网的通讯方式。

四、DICOM Web Service:

DICOM Web Service为dicom标准第18章内容。主要服务有:WADO-URI、WADO-RS、STOW- RS、QIDO-RS和UPS-RS。 定义了在互联网上基于RESTful接口,如何进行DICOM影像的查询、获取、存储和工作流程协同,以及如何查询一台服务对外提供哪些接口。

1. WADO-URI:

URI服务也叫做WADO-URI,即使用HTTP协议中的GET请求来获取DICOM文件实例或者DICOM渲染后的Image实例的一种解决方案,规定了客户端的请求规范以及服务端的响应规范。

从客户端的角度分析,除了指定请求头和请求体内容,还指定了我们用于查询目标实例的查询条件参数。查询参数有强制性参数、普通可选性参数、其他可选性参数。

强制性查询参数:每个请求中必须携带

参数字段 备注
requestType “WADO” 本次请求类型
studyUID uid 检查UID
seriesUID uid 序列UID
objectUID uid 实例UID

普通可选性参数:

参数字段 备注
contentType ”application/dicom“ 当该值存在时,响应对象时一个DICOM文件
charset charset 字符集类型

当请求获取的目标资源是一个DICOM数据文件时,还可以有下列可选性参数:

参数字段 备注
anonymize “yes” 数据匿名化,该参数有值时,服务端响应的DICOM文件需抹去文件中的病人信息
transferSyntax uid 响应的DICOM文件的编码格式

当请求获取的目标资源是DICOM渲染过后的Image图像,还支持下列可选性参数:

参数字段 备注
frameNumber uint 当前渲染的实例在其所在序列中的帧数
annotation “patient”
“technique”
①"patient":渲染后的图片需标注用户个人信息;
②”technique“:渲染后的图片标注病人检查的完成情况信息。
imageQuality uint 图像质量,可以设置1-100来表示图像质量
rows uint 图像的行数
columns uint 图像的列数
region decimal 图像区域,其左上角像素点的x/y坐标和右下角像素点的x/y坐标,范围是0.0-1.0
windowCenter decimal 窗位
windowWidth decimal 窗宽
presentationSeriesUID uid 渲染DICOM的序列ID
presentationUID uid 渲染DICOM的实例ID

请求url实例:

// 请求一个DICOM文件,并进行匿名化处理
http://www.linkingmed.com?requestType=WADO
&studyUID=1.2.250.1.59.40211.12345678.678910
&seriesUID=1.2.250.1.59.40211.789001276.14556172.67789
&objectUID=1.2.250.1.59.40211.2678810.87991027.899772.2
&contentType=application/dicom
&anonymize=yes
&transferSyntax=1.2.840.10008.1.2.4.50

2. Studies Service and Resources:

Studies 服务主要负责对Study相关资源进行存储、检索、更新和搜索。包括以下三个子服务:

  • WADO-RS:指提供通过web获取DICOM资源的RESTful服务, 可以指定获取某个Study,某个Series,某个Image,甚至是某一个Frame 。此外,请求的发起方还可以指定自己能够或希望接受的图像类型:

  • STOW- RS:指提供通过web存储DICOM资源的RESTful服务, 影像的上传存储除了影像数据本身,还需要提供与影像相关的其他信息,用于生成符合条件的DICOM头文件信息:

  • QIDO-RS:指通过RESTful接口查询服务器上是否有自己符合指定条件的影像 。指定的条件可以是患者ID,也可以检查编号等。

3. Worklist Service and Resources:

  • UPS-RS:dicom的工作协同服务,又叫工作清单服务,指通过RESTful接口来创建、声明和更新工作任务的状态 。

4. Capabilities

​ 服务能力查询, 于支持访问者去查询一台DICOMweb服务器都对外提供哪些服务。

总结:目前有许多开源的DICOM标准库,如C++实现的dcmtk,java实现的dcm4che,C#实现的fo-dicom,Python实现的pydicom等。

DICOM3.0标准梳理相关推荐

  1. 【转】DCMTK开源库类继承结构与DICOM3.0标准元素定义的对应关系图

    转自:https://blog.csdn.net/zssureqh/article/details/9275271 最近由于课题需要,拿出来一些时间阅读了下DICOM3.0标准.在处理相关的DCM医学 ...

  2. pacs dicom3.0 DCMTK EFilm

    pacs dicom3.0 DCMTK EFilm -------------------------------------------------- http://bbs.hc3i.cn/thre ...

  3. DICOM:DICOM3.0网络通信协议(三)

    背景: 专栏对于DICOM网络传输介绍过多次,例如DICOM:DICOM3.0网络通信协议(续).DICOM医学图像处理:DICOM网络传输.DICOM医学图像处理:全面分析DICOM3.0标准中的通 ...

  4. dicom3.0和dcmtk学习笔记

    dcmtk学习笔记 DCMTK开源库更偏重于按照层(Layer)来实现DICOM应用实体(AE)之间的连接(ACSE)及消息传输(DIMSE),主要分为DIMSE(应用层).ACSE(属于OSI七层协 ...

  5. DICOM:DICOM3.0网络通信协议之“开源库实现剖析”

    背景: 日前,通过对比fo-dicom与dcm4che两种开源库(也是C#与Java两大语言体系)的不同实现来实战学习了DICOM的网络传输,博文中列举了两大开源库各自的实现特点,以及使用的语言特性. ...

  6. 等保2.0标准发布一周年,行业用户如何有效落实合规建设

    等保2.0标准发布一周年,行业用户如何有效落实合规建设 5月10日,等级保护2.0三项核心国家标准已经正式发布一周年.各行各业都非常重视等级保护建设,相继出台了行业等级保护政策及标准文件.新国标的发布 ...

  7. 医疗技术之DICOM3.0

    DICOM 医学数字成像和通信(Digital Imaging and Communications in Medicine, DICOM)是医学图像和相关信息的国际标准.DICOM3.0组成如下图. ...

  8. DICOM3.0中的VR相关介绍

    最近在跟一个关于医疗的项目,所以了解了一下DICOM3.0协议. DICOM(Digital Imaging and Communications in Medicine)即医学数字成像和通信,是医学 ...

  9. Google Chrome 悄悄升级 WebGL 2.0 标准

    Google Chrome 悄悄升级了 WebGL 2.0 标准,可以借助新一代显卡,提供先进的 3D 影像,还可以使用 WebGL 2.0 获得更快的 3D 渲染. 其实早在 Chrome 56(今 ...

最新文章

  1. Netty序章之BIO NIO AIO演变
  2. dropbox解决办法
  3. 记录学习MVC过程,HTML铺助类(二)
  4. Spring框架集成mybatis框架的配置(笔记)
  5. html5 测试用例,Web 测试通用测试用例
  6. 【动态规划】[Uva11270]Tiling Dominoes
  7. 原生html5时间组件,JFinal遇到了原生Html5时间组件格式转换问题怎么处理?
  8. kafka 的pom文件_Flink的sink实战之二:kafka
  9. MyBatis源码阅读(二) --- 执行流程分析
  10. 了解下常用分析JVM参数以及优化工具
  11. Linux之——命令大全
  12. 富怡CAD计算机在哪,富怡CAD的工具介绍之一
  13. 游戏开发商如何租用合适稳定的游戏服务器?
  14. MySQL GROUP_CONCAT()函数的排序方法
  15. 整数规划(分支定界、匈牙利法)
  16. Android 吸入动画效果详解(仿mac退出效果)
  17. 一位女程序员兼俩小子妈咪的人生历程(1)
  18. 《游戏设计模式》学习笔记
  19. 寻呼机制(Paging)
  20. 15-Puzzle Problem

热门文章

  1. 成功入职字节跳动!Java程序员如何有效提升学习效率
  2. 非期望产出超效率SBM模型MATLAB代码
  3. 大众汽车用html写出来代码,大众车系常用系统初始化方法及匹配编码
  4. windows10 驱动开发环境搭建vs2019 helloworld
  5. 【分解质因数】合数的质因数分解
  6. python时域波形特征分析
  7. 一站式开发一个安卓APP-原型设计篇
  8. 购买了域名就能用了么?
  9. 计算机控制技术课程总结
  10. Matlab-梁单元有限元分析(有限元基础-曾攀)