DICOM命令集和数据集解析

Dicom 基本知识-数据结构篇 阅读本文大概需要6分钟 'DICOM’数据是医疗影像的关键,一个.dcm 文件保存了单次诊断的全部信息(病人信息+图像数据),通过读取解析.dcm文件可以获取所有信息。 DICOM文件结构 打开任意一个.dcm文件,使用16进制打开,可以看到如下结构: 导言 导言部分128字节,可以直接跳过。 前缀 前缀标识的一个dicm文件,总共4个字节。 数据元素 在前缀后面就是真正的数据... 阅读详情
DICOM命令集和数据集解析 阅读次数:7523 | 发表时间:2004-1-15 19:13:14 -------------------------------------------------------------------------------- 王晓楠 (东软数字医疗系统股份有限公司,辽宁 沈阳 110179) 摘要:本文通过分析一个典型的DICOM消息,详细地解析了DICOM命令集和数据集的构成方式和其含义。并在此基础上,提出了一种实现DICOM命令集和数据集解析的实施方案,并对该种方案的设计思路和具体实现方法进行了详细的阐述。 关键词:医学数字成像及通信标准,信息对象定义,服务对象对 1. 前言 DICOM(Digital Imaging and Communications in Medicine)是医疗设备的国际标准通信协议,它为在不同医疗设备之间对医学图像等数字信息进行各种命令操作定义了统一的规范。现在,越来越多的医疗设备生产厂家开始施行并支持DICOM标准。现在广泛使用的版本是DICOM3.0。 在本文中,利用一个实例来分析DICOM协议是如何利用DICOM命令集和数据集在不同医疗设备之间进行图像存储操作的,并在此基础上,提出了一个解析DICOM命令集和数据集的实现方案。 2. 信息对象定义 DICOM是一个数字医学图像的网络通讯接口标准。基于此,将现实世界中的实体进行抽象数据化是制定标准的一个重要步骤。DICOM标准描述了许多信息对象类(Information Object Class,简称IOC)。这些信息对象类为现实世界中能够以数字医学图像这种方式通讯的实体提供了一个面向对象的抽象定义,这个定义称作信息对象定义(Information Object Definition,简称IOD)。一个信息对象定义(IOD)是由若干包含相关信息的信息实体组成。每一个信息实体对应着DICOM应用模型中的现实世界实体(如患者、图像等)的一个数据抽象。每个信息实体是由若干属性组成的,属性是现实世界实体性质(如患者的姓名、年龄、图像的成像日期等)的抽象。在DICOM标准中,每个属性用一个数据元素来描述,而一个信息实体的相关属性的集合则用数据集来描述。 3. 服务对象对 面向对象的设计不仅描述了对象本身的属性,同时还说明了怎样处理这些对象的方法。DICOM标准就是利用这个概念,定义了诸如存储图像、获取病人信息之类的服务。由于是面向对象的设计,故服务又被称作服务类。一个服务类由若干个相关的服务对象类(Service Object Pair Class,简称SOP Class)组成。SOP类是DICOM标准中定义的基本功能单位。对于一个特定的SOP类来说,一台装置可能扮演以下两个角色:一:服务类提供者(Service Class Provider,简称SCP),扮演这个角色的机器提供SOP类的服务,它相当于客户/服务器模型中的服务器(Server);二:服务类使用者(Service Class User,简称SCU),扮演这个角色的装置使用SOP类的服务,它相当于客户/服务器模型中的客户。例如一台成像装置要打印一幅图像,在这种情况下,该成像装置为与打印相关的SOP类的SCU,打印机为SCP。一个SOP类的一次具体实现称作服务对象对实例,存储图像、获取病人信息等操作就是通过SOP实例实现的。 图1形象地描述了SOP类及其实例的关系。 动词:Store 服务(DIMSE) 名词:MRI Image 信息对象定义IOD 一般句子:Store a MRI image SOP类 特指句子:Store this MRI image SOP实例 图1 SOP类与实例 4. DICOM消息 一个SOP类被定义为一组特定的服务与一个相关的信息对象(IOD)的结合,一个SOP类的具体实现是通过DICOM消息的交互完成的。 在DICOM标准中,DICOM消息由命令集和数据集组成,其中数据集描述现实世界信息对象的一个实例,而命令集则描述对这个信息对象实例做何种操作。命令集由若干个命令元素组成,每个命令元素由标签域、值长度域和值域组成。而数据集由若干个数据元素组成,每个数据元素由标签域、数据表示类型域(可选域)、值长度域和值域组成。 无论是在命令集还是数据集中,标签都唯一的标识一个命令或者数据元素,元素必须按标签的升序依次排列,且每个元素一般最多只能出现一次(嵌套除外),元素标签由一对组号和元素号组成,两者均为16位无符号整数;值长度域是以字节数表明值域的长度,其值必须为偶数;值域包含了有关操作命令的属性值(针对命令元素而言)或者现实世界信息对象实例的属性的具体值(针对数据元素而言),其长度是可变的,但是不能超过值长度域所规定的长度。 在数据集中,数据表示类型域是一个可选项,说明值域的类型。当元素中包含该域时,称作显式VR(Value Representation),否则称作隐式VR。 下面的表格描述了一个典型DICOM消息,其中数据集描述了一个图像的具体实例,而命令集的含义则是请求对该图像实例做存储(C-STORE)服务,很显然,这是一个从SCU发往SCP的存储(C-STORE)请求(REQUEST)消息。其中组号为0000的元素为命令元素,其它为数据元素。如表1所示。 表1 C-Store服务的DICOM请求消息 组 元素 长度 值 意义 说明 0000 0000 0004 0000 0056 0000 从本字段的结束至下一组开始的偶数字节 0000 0001 0004 0000 01A0 0010 从本字段的结束至报文结束的偶数字节 0000 0010 000C 0000 4341 2D52 454E 414D 3120 302E “ACR-NEMA 1.0” 识别码 0000 0100 0002 0000 0001 0001H 命令字段=C-Store-Request 0000 0110 0002 0000 123A 123A 由成像装置生成的报文识别号 0000 0200 0004 0000 4344 3148 “DCH1” 发送者逻辑地址 0000 0300 0004 0000 4341 3148 “ACH1” 接收者逻辑地址 0000 0800 0002 0000 0000 0000H 数据类型=图像 0008 0000 0004 0000 0080 0000 0008 0001 0004 0000 013E 0100 0008 0010 000C 0000 4341 2D52 454E 414D 3120 302E “ACR-NEMA 1.0” 识别码 0008 0020 000A 0000 3032 3230 312E 2E31 3532 “2002.11.25” 分项检查日期 0008 0030 0008 0000 3231 303A 3A35 “12:05:59” 分项检查时间 0008 0040 0002 0000 0000 0000H 数据集类型=图像 0008 0060 0002 0000 5254 “DR” 成像模式 0008 0070 0004 0000 4241 4443 “ABCD” 制造商 0008 0080 000E 0000 454D 4352 2059 4F48 5053 5449 4C41 “Mercy Hospital” 医院识别号 0008 0090 0000 0000 检查医师未知 0010 0000 0004 0000 0042 0000 组长度 0010 0010 000E 0000 4F4A 454E 2C53 4A20 4D49 4320 202E “JONES, Jim C. “ 患者姓名 0010 0020 0008 0000 3031 2D32 3033 2034 “102-304 “ 患者识别号 0010 0030 000A 0000 3931 3632 312E 2E31 3532 “1926.11.25” 患者出生日期 0010 0040 0002 0000 204D “M “ 患者性别=男 0018 0000 0004 0000 0000 0000 组长度为零—无其它元素传送 0020 0000 0004 0000 0018 0000 组长度 0020 0010 0004 0000 3932 3330 “2903” 分项检查号 0020 0020 0004 0000 5C52 2046 “R/F” 患者取向 0028 0000 0004 0000 002C 0000 组长度 0028 0010 0002 0000 0400 0400H 行数=1024 0028 0011 0002 0000 0400 0400H 列数=1024 0028 0030 0006 0000 2E20 5C33 332E “ .3/.3” 像素的实际尺寸=0.3*0.3像素 0028 0100 0002 0000 0008 008H 每个像素指定的位数=8 7FE0 0000 0004 0010 0008 0010 组长度 7FE0 0010 0000 0000 *******…***** 像素数据(524,288字节) 5. 编码 在实际应用中,利用两个基类CElement和CElementSet分别表示数据元素(或者命令元素)以及这些元素集合的抽象,并且描述各自的基本特征属性。利用这两个基本类可以派生出其它类。例如,我们利用类CElementSet的一个派生类DcmFile来描述一个DICOM图像文件,在这个类中,我们实现了两个主要方法loadDcmFile()和writeToDcmFile(),它们的含义分别是从指定的路径下读取DICOM图像文件和把数据集中的所有数据元素还原成指定路径下的DICOM图像文件;同样,我们利用类CElementSet的另外一个派生类CommandSet来描述一个命令集,它包含两个主要方法getCmdValue()和getDataType(),其含义分别是获取此命令集描述的服务和消息类型以及获取此命令集的操作对象(数据集)所描述的信息实体类型。 在解析一个命令集(或者数据集,例如一个DICOM图像文件)时,可以以标签为标识,读出感兴趣的命令元素(或者数据元素),并将该命令元素(数据元素)作为类CCommandElement(或者类CDataElement,均为类 CElement的派生类)的一个实例来处理。 例如在解析表1的DICOM消息时,首先应该读取它的命令集,即组号为0000的元素。读取的每个命令元素作为类CCommandElement (类CElement的派生类)的一个实例存在,而读取的所有命令元素的集合作为类CommandSet的一个实例存在。然后,再利用CommandSet提供的方法getCmdValue()和getDataType()获取此命令集描述的服务和消息类型以及此命令集的操作对象(即数据集)所描述的信息实体类型。在本例中,根据DICOM标准,由于命令集中标签为[0000,0010]的值域的具体值是0001H,所以,该命令集所描述的是C-STORE服务请求,而标签为[0000,0080]的值域的具体值是0000H,因此,该命令集的操作对象(即数据集)的类型是图像。综合起来,这个DICOM消息的含义就是存储封装在数据集中的图像文件。 解析完命令集后,根据解析结果,再读取同一个DICOM消息中的数据集,即组号不是0000的元素,这里,将每个读取的数据元素作为类CDataElement(类CElement的派生类)的一个实例存在,而读取的所有数据元素的集合作为类DcmFile的一个实例存在。然后,调用类DcmFile所提供的writeToDcmFile()方法,将这些数据元素还原成图像文件的形式并加以存储。最后,根据命令执行的成功与失败,构造一个响应信息,返回给服务请求端。 6.结束语 DICOM标准是第一个广为接受的医疗设备间通讯的国际标准,它作为一个计算机和医学相关联的纽带起着非常重要的作用。 本文通过分析一个典型的DICOM消息,详细地解析了DICOM命令集和数据集的构成方式和其含义。并在此基础上,提出了一种实现DICOM命令集和数据集解析的实施方案,并对该种方案的设计思路和具体实现方法进行了详细的阐述。实现DICOM命令集和数据集的解析为远程医疗应用提供了基础。 参考文献 1. National Electrical Manufacturer Association. Digital Imaging and Communication in Medicine(DICOM)[S],1999 2. 贾克斌,沈波. 实现医学影像存档和传输系统中的若干关键技术[J]. 中国图像图形学报,2000,5(A)(7):539-544
医学图像DICOM文件解析——DICOM内部信息详解篇 DICOM文件内部信息详解 阅读详情

相关推荐

DICOM:由fo-dicom库解析DICOM文件引申出来的……

背景:近期由于收到博友咨询fo-dicom的兼容性和扩展性和自身Github的fo-dicom仓库更新等原因,发现fo-dicom官方主版本已经更新到了3.X系列,貌似完善了不少东西,不过还没有时间仔细研究。以后再抽时间试用并介绍吧。本篇博文由之前自己的fo-dicom版本库在解析不规范DICOM文件时弹出的【错误】:Requested xxxx bytes past end of file…引申

只要踏出一步,路就在前方——zssure 1万+

LIDC-IDRI肺结节公开数据集Dicom和XML标注详解

LIDC-IDRI肺结节公开数据集Dicom和XML标注详解  字数统计: 4,209字   |    阅读时长: 21分   Medical Image1 Dicom LIDC Xml 文章首发于简书:LIDC-IDRI肺结节公开数据集Dicom和XML标注详解,现在搬运至博客。 一、数据来源   数据集采用为 LIDC-IDRI (The Lung Image Database...

jessican_uestc的博客 4万+

fo-dicom开源库是如何满足 DICOM标准的基本要求

fo-dicom,第一个基于.NET Standard 2.0 开发的DICOM开源库上面介绍的这些基本概念,只是众多内容中的一小部分,仅仅因为这些概念在使用fo-dicom期间经常被引用,理解它们的含义和使用方法对于成功处理DICOM数据非常重要。

dotnet研习社 2119

【数据集处理】dicom文件、albumentations库

它提供了丰富的图像增强方法,具有高效、灵活和易用的特点,被广泛用于深度学习模型的训练。Albumentations 的使用非常直观,你可以通过定义一个增强序列,然后将其应用到图像和标注数据(如标签、边界框、关键点等)上。DICOM标准的广泛采用极大地促进了医学图像的数字化和信息化,使得医疗机构能够更高效地管理和利用医学影像数据。通过这种方式,每次从数据集中读取图像时,都会应用不同的增强变换,从而增加数据的多样性,提升模型的泛化能力。DICOM协议支持在网络中传输医学图像和相关数据。

藓类少女的博客 2148

什么是DICOM以及DICOM如何运作

一.什么是DICOM 定义: DICOM 就是医学数字成像和传输协议(Digital Imaging and COmmunications in Medicine)的简称,多年来致力于创造最广泛和根本的数字医学成像标准。比如,DICOM 提供使医学成像数据能够在诊断中被精确地表达和处理的所有工具。此外,与普遍看法相反,DICOM不只是图像或者文件,他是数据传输、存储和显示协议的总和。 PACS 图像传输和归档系统(Picture Archiving and CommunicationSystems)。PAC

qq_35524189的博客 1万+

DICOM文件格式剖析(初识)

DICOM文件格式剖析(初识) 初识DICOM文件,发现网上的资料有点少,大部分的资料都是一些简单的解析,近期在开发对DICOM文件进行操作的封装类,读取磁盘的数据来分析dcm文件的具体存储格式,在这里总结一下 复杂的DICOM文件 我们知道在操作系统中已经提供了很多的文件格式了,如:。那么为何又提出了DICOM文件(一般文件后缀名是.dcm或.dic) ...

qq_39071305的博客 9100

【转】DICOM命令集和数据集解析!!

转自:DICOM命令集和数据集解析 - 微笑的艾米 - 博客园 摘 要:本文通过分析一个典型的DICOM消息,详细地解析了DICOM命令集和数据集的构成方式和其含义。并在此基础上,提出了一种实现DICOM命令集和数据集解析的实施方案,并对该种方案的设计思路和具体实现方法进行了详细的阐述。 关键词:医学数字成像及通信标准,信息对象定义,服务对象对 1.前言 DICOM(Digital Imaging and Communications in Medicine)是医疗设备的国...

sinolover的专栏 1238

DICOM 基础知识:深入理解DICOM数据结构与标签说明

DICOM 基础知识:深入理解DICOM数据结构与标签说明

编程技术探索者,分享C/C++、C#、Java、数据库等开发经验,聚焦实战技巧与AI兴趣,助力编程爱好者成长。 3597

医学图像之DICOM格式解析

前面转载:医学图像之DICOM格式解析 医学图像之DICOM格式解析 目录 1.医学影像学的介绍 2.DICOM信息的简介 3.DICOM内部信息详解(DICOM Tag与VR) 4.利用python+pydicom这个库解析DICOM文件 5.DICOM的三个切面 6.我自己的实验 1.医学影像学 (1).医学影像学Medical Imaging,是研究借助于某种介质(...

Elvirangel的博客 6020

DICOM图像解析:深入解析DICOM格式文件的高效读取与处理

DICOM图像解析:深入解析DICOM格式文件的高效读取与处理

编程技术探索者,分享C/C++、C#、Java、数据库等开发经验,聚焦实战技巧与AI兴趣,助力编程爱好者成长。 3534

DICOM底层数据集和传输语法构建.zip

使用c#开发的系统项目源码、数据集

【转】医学图像之DICOM格式解析

最近导师给安排了新任务,由于刚进入实验室,对于医学图像这一块还一知半解,所以就想分享一下有关医学常见影像的学习资料(尤其是dicom后缀的图像文件),欢迎大家一起交流。 目录 1.医学影像学的介绍 2.DICOM信息的简介 3.DICOM内部信息详解(DICOM Tag与VR) 4.利用python+pydicom这个库解析DICOM文件 5.DICOM的三个切面 1.医学影像学 (1).医学影像学Medical Imaging,是研究借助于某种介质(如X射线、电磁场、超声波等)与人体.

sinolover的专栏 4471

dicom数据集.zip

dicom数据集.zip

医学DICOM文件解析(笔记整理)

简介: 之前做超声的时候第一次接触带dicom后缀的图像文件,于是记录一下有关医学影像的学习笔记。 DICOM(Digital Imaging and Communications in Medicine)即医学数字成像和通信,是医学图像和相关信息的国际标准(ISO 12052)。它被广泛应用于放射医疗,心血管成像以及放射诊疗诊断设备(X射线,CT,核磁共振,超声等),并且在眼科和牙科等其它医学领域得到越来越深入广泛的应用。 DICOM文件: 医学图像设备生成 DICOM 文件,医生使用 DICOM 阅读器

散修炼丹师手记 9282

从爱好者到工程师:如何低成本体验RFSoC ZU47DR?性能实测与避坑指南

本文详细介绍了如何低成本体验赛灵思RFSoC ZU47DR芯片,包括二手开发板选购、租赁服务、精简开发环境搭建等实用方案。通过性能实测与避坑指南,帮助爱好者和工程师在有限预算下充分利用这款集成了ARM处理器和FPGA的高性能芯片,降低开发门槛。

weixin_42525005的博客 211

数字IC设计技能篇之如何在RTL级降低功耗?

以上就是本次降低芯片功耗的部分心得和收获,由于是在芯片设计阶段还没办法后端直接给出power的报告,前端一般使用spyglass和fsdb来进行功耗分析,后续会更新如何使用spyglass在前仿阶段进行power的分析,以及持续更新有关RTL级降低功耗的相关内容。

mzynk的博客 1200
上一篇: VC中包含的头文件名,不区分大小写
下一篇: VTK
littlening
博客等级 码龄17年 52粉丝 3原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值