DICOM图像文件解析及程序设计
DICOM医学图像处理:DIMSE消息发送与接收“大同小异”之DCMTKfo-dicommDCM

DICOM医学图像处理:DIMSE消息发送与接收“⼤同⼩异”之DCMTKfo-dicommDCM背景:从DICOM⽹络传输⼀⽂开始,相继介绍了C-ECHO、C-FIND、C-STORE、C-MOVE等DIMSE-C服务的简单实现,博⽂中的代码给出的实例都是基于fo-dicom库来实现的,原因只有⼀个:基于C#的fo-dicom库具有⾼封装性。
对于初学者来说实现⼤多数的DIMSE-C、DIMSE-N服务⼏乎都是“傻⽠式”操作——构造C-XXX-RQ、N-XXX-RQ然后绑定相应的OnResponseReceived处理函数即可。
本博⽂希望在前⼏篇预热的基础上,对⽐DCMTK、fo-dicom、mDCM三种库构建DIMSE消息的具体操作,来分析⼀下三者对于DIMSE消息的发送和接收的实现,为后续搭建简易版的Dicom Server服务器做准备。
DIMSE:DIMSE,是DICOM Message Service Element的简称。
DICOM3.0第7部分指出:DIMSE为对等DICOM应⽤实体进⾏医学影像及相关信息交换提供了⼀种应⽤服务元素定义(Application Service Element),包括服务和协议(DIMSE Service 和DIMSE Protocol)。
DIMSE Protocol:DIMSE基于DIMSE协议来提供服务,DIMSE协议规定了构造消息必需的编码规则。
⼀条DICOM MESSAGE由固定的指令集合(Command Set),外加可选择的数据集合(Data Set)构成,如下截图所⽰:DIMSE Services:DIMSE服务因操作SOP类型的不同分为DIMSE-C Services和DIMSE-N Services,DIMSE-C服务⽀持在对等DICOM实体间进⾏Composite SOP Instance操作,主要包括C-ECHO、C-FIND、C-STORE、C-MOVE、C-GET等;⽽DIMSE-N服务⽀持Normalized SOP Instance操作,主要包括N-EVENT-REPORT、N-GET、N-SET、N-CREATE、N-ACTION、N-DELETE。
DICOM医学图像数据的读取

1 DIGOM文件结构【1】 DICOM格式图像文件是指按照DICOM标准而存储的文
件。DICOM文件一般由DICOM文件头(Header)和DICOM数 据集(Data Set)组成,如图l所示。
数据长度(Ⅵ一)数据长度指明了该数据元素的数据域中数 据的长度(字节数)。一般要求字节数目为偶数,不是偶数的补 充一个字节。这个长度,}{是值的长度,不包括数据元素标签、 VR、数据长度字段。
极据城(VF)数据域中包含了该数据元素的数值。该字段的 数据类型由数据元素的VR标志。
在DICOM数据集中,最后一个数据元素为像素数据 (7FEO,0010),该元素中存储九墨I像的像素信息,而像素数据 (7FEO,0010)之前其它数据元素记录的则是与图像有关的文本 信息,如患者姓名、检查日期、检查设备等。
图1 DICOM文件结构
DICOM文件头的最开始是可选的文件前言,它包括前同 步码和前缀。前同步码长128字节,都设成00H,文件前缀为四 个字节的字符串“DICM”。文件前言之后是文件总信息头,包含 对标识数据集的i兑明信息,如文件的传输语法、SOP类等。
DICOM数据集由DICOM数据元素(Data Element)按一
2 DIGOM文件数据的读取 2.1数据的读取[21
首先打开文件,跳过128字节的同步码,读取4个字节的
和读者借蒯数据进行聚类,其结果对于提高馆藏图书的利用 率和读者借阋的兴趣度,完善个性化读者服务具有十分重要 的意义。 参考文献: 【1l Jiawei Hart,Micheline Kamber著,范明,王小峰等肆.文据挖攮:概
论解读DICOM医学图像文件及其显示的VC实施方法

1
论解读DICOM 医学图像文件及其显示的VC++实施方法
林春漪①②
尹俊勋① 马丽红① 陈健宇③
摘 要 DICOM3.0 是医学影像存储和传输的国际标准,它的制定为不同的医学影像设备和用户提供 了统一的接口标准和交互协议。解读 DICOM3.0 的医学图像文件格式以及解决其显示问题是医学图像处 理的基础,对医学影像技术的研究具有重要的意义。分析并展示了 DICOM3.0 医学图像文件的数据结构, 利用 VC++的 DIB 位图显示方法显示图像。
1. explicit VR 与 implicit VR: explicit VR
现代医学仪器与应用
指明数据元素中必须含 VR,而 implicit VR 则指 明数据元素中不必含 VR。
2. Big Endian 与 Little Endian 的字节排序: ①Big Endian 定义:对多个字节的二进制数据, 按顺序方法排列每字节;②Little Endian 定义: 对多个字节的二进制数据,按倒序方法排列字 节。但两者对由单字节组成的字符串的排序均 为从左到右排序。另外对于“VR=OB”的数据 编码则不受 Big Endian 与 Little Endian 的影响。
标签(TAG)项:是数据元素的标识符, 唯一地定义了数据元素的物理意义,由组号(2 字节无符号整数)和元素号(2 字节无符号整数) 组成。
值的含义(VR)项:描述了数据元素值域 的数据类型,是依赖于传输语法的可选项,表 示为 2 字节的字符。
值域长(VL)项:表达了值域的字节数, 占据 2 字节或 4 字节,对于 SQ、OW、OB 的数 据元素,可以是不定长,用 FFFFFFFFH 表示。
pydicom和SimpleITK分别解析医学影像中dicom文件

pydicom和SimpleITK分别解析医学影像中dicom⽂件⾸先,⽆论是pydicom还是SimpleITK都是需要事先导⼊到python中的库,如果使⽤的是pycharm IDE,可以先创建python3的虚拟环境,然后在虚拟环境下通过file-setting-Project interpreter ,在添加模块⾥⾯直接搜上述两个库的名称,点击安装即可。
pydicom提取单张dicom图像1import pydicom2from matplotlib import pyplot34 ds = pydicom.read_file('C:/Users/****/Desktop/CT000000.dcm')# DICOM⽂件的位置5print(ds.dir()) # 打印所有 DICOM TAG 名6print(ds.dir('Pixe')) # 打印包含 'pat' 的 DICOM TAG7print(ds.PatientName, ds.PatientSex, ds.PatientID, ds.PatientBirthDate, ds.PatientAge) # 打印 DICOM TAG 相应的属性值8print(ds.data_element('PatientName')) # 打印⼀个完整的数据元素,包括 DICOMTAG编码值(Group, Element), VR, Value9print(ds.data_element('PatientID').VR, ds.data_element('PatientID').value)10 pixel_bytes = ds.PixelData # 原始⼆进制⽂件1112 pix = ds.pixel_array # 像素值矩阵13print(pix.shape) # 打印矩阵维度14 pyplot.imshow(pix, cmap=pylab.cm.bone)15 pyplot.show() # cmap 表⽰ colormap,可以是设置成不同值获得不同显⽰效果,打印dicom图⽚注意,此时可能会报错,报错的地⽅是ds.pixel_array,原因是某些格式的dicom⽂件不能⽤pydicom提取,。
DICOM文件解读

接着昨天,对文件格式的分析:0100h-0119h:这里的02 00 10 00将其进行字节转换后为00020010,这里标签的含义是UID,55 49即为UI,值域长度为12 00,将其字节转换后为0012即为18,表示后面18个字节都是值的内容即1.2.840.10008.1.2。
011ah-0135h:这里的02 00 12 00将其进行字节转换后为00020012,值描述还是UI,值域长度为14 00即为20个字节,值的内容为1.2.40.0.12.0.9812.0。
0136h-0147h:这里的02 00 13 00将其进行字节转换后为00020013,其值描述为53 48即为SH(可见标准第五部分short string),0A 00即值域长度为10,其值的内容为0.1B/WIN32。
0148h-015fh:这里的02 00 16 00将其进行字节转换后为00020016,其值描述为41 45即为AE,值域长度为10 00字节顺序转换为0010即为16个字节长度,其值的内容为IRIS后跟12个字节的空格(20)。
0160h-0171h:这里的08 00 05 00将其进行字节转换后为00080005,查找标准第六部分得知其为特定字符集(Specific Character Set),0A 00字节转换后000A知字节长度为10,后跟两个字节的保留字,从0168h开始为ISO_IR 100,表示ISO组织的一个记录号。
0172h-018fh:这里的08 00 08 00将其进行字节转换后为00080008,查找标准第六部分得知其为图像类型(Image Type),同上一个数据元一样这个地方也没有表示值,16 00字节转换后0016得知字节长度为22,后跟两个字节的保留字,从017ah开始为ORIGINAL\PRIMARY\AXIAL,表示该图像的类型。
0190h-01b1h:这里的08 00 16 00将其进行字节转换后为00080016,查找标准第六部分得知其为SOP服务类的UID(SOP Class UID),为什么这里就不需要判断VR而有标签直接得出是属于UI呢?是隐形显示吗隐形显示与显性显示的区别如何从图像中看出来!1A 00转换字节为001A即长度为26,后跟两个字节的保留字,从0198h开始为1.2.840.10008.5.1.4.1.1.2,与下面的00080018一起指得是与DICOM文件的传输识别有关的识别码。
DICOM文件编程

dcmtk程序包简介该文简单列出了dcmtk程序包的简介,包括主要接口类的简单说明,可用工具以及一些例子。
下一步工作准备详细分析每个程序包中的接口类功能,并结合源码和dicom文档分析其实现过程。
一、Config程序包-config目录下的文档:--config.txt:指出你编辑的任何.h .c .cc文件首先必须包含该目录下的头文件#include "osconfig.h"--dirstruc.txt:给出了dcmtk项目的项目目录结构,这个用cmake会自动生成--envvars.txt:这个文件比较重要,它指出了一些运行时环境变量,这些变量可能会影响dcmtk的工具和库的使用,这些变量包括:---DCMDICTPATH:影响dcmdataOn Win32 platforms, a built-in dictionary is used by default. If the DCMDICTPATH environment variable is set, the applications will attempt to load _additional_ DICOM data dictionaries specified in the DCMDICTPA TH environment variable instead. The DCMDICTPA TH environment variable has the same format as the shell PATH variable in that a semicolon (";") separates entries. The data dictionary code will attempt to load each file specified in the DCMDICTPATH environment variable.See also: documentation in dcmdata/docs/datadict.txt---TCP_BUFFER_LENGTH:影响dcmnetBy default, DCMTK uses a TCP send and receive buffer length of 32K. If the environment variable TCP_BUFFER_LENGTH is set, it specified an override for the TCP buffer length. The value is specified in bytes, not in Kbytes.---TCP_NODELAY:影响dcmnetIf this environment variable contains a non-zero number, the Nagle algorithm will not be disabled for TCP transport connections. Also see documentation for macro DONT_DISABLE_NAGLE_ALGORITHM in config/docs/macros.txt---TMPDIR:影响dcmnetAffects the implementation of the tempnam() emulation on platforms where tempnam() is not defined. See tempnam(3S) main page for a description.--macros.txt:这个文件也特别重要,它给出了很多编译时的宏,这些宏可能会影响dcmtk的工具和库的使用。
基于DICOM标准的医学图像查询与获取技术的研究与实现

基于DICOM标准的医学图像查询与获取技术的研究与实现吕晓琪;任海霞【摘要】针对DICOM标准的相关协议,对DICOM标准中Query/Retrieve(查询/获取)服务类的实现进行详细分析.利用VC2005,DCMTK软件包编写符合DICOM 标准的相关应用程序.实现了DICOM医学图像的存储、查询和获取,并测试通过.该功能的实现为建立PASC系统奠定了基础.【期刊名称】《内蒙古科技大学学报》【年(卷),期】2010(029)003【总页数】5页(P246-249,259)【关键词】DICOM;医学图像;查询;获取;DCMTK【作者】吕晓琪;任海霞【作者单位】内蒙古科技大学,信息工程学院,内蒙古,包头,014010;内蒙古科技大学,信息工程学院,内蒙古,包头,014010【正文语种】中文【中图分类】TP391随着现代医疗设备的大量出现,计算机与网络技术的迅速发展,医院管理信息系统——尤其是PACS(Picture Archiving and Communication System医学影像存档与通信系统)和远程医疗系统应运而生,可是与此同时,也产生了许多的问题,比如 CT, MR I等设备生成的高质量、形象直观的图像给医疗诊断带来便利的同时,所产生的大容量数据如何存储和有效管理?不同生产厂商、不同型号的设备产生的图像格式有可能不同,是否可以直接连接?是否能够共享信息资源?等等,而解决问题的方法就是要遵循统一的标准.因此,ACR(American college of radiology)和NEMA(National electricalmanufacturers association)共同制定了 DICOM(Digital Imaging and Communications inMedicine)医学数字图像通信标准[1],它为医学图像及其它数字信息在各种医疗设备之间的传送定义了统一的规范,目前版本为D I COM 3.0.现在,全球绝大多数医学影像制造厂商都承诺采用这一标准,并提供符合D ICOM 3.0的数字通讯接口.D ICOM 3.0已成为医学数字成像和通信的国际标准.本文基于 D I COM标准的相关协议,实现 D ICOM医学图像的远程查询及获取功能,使在局域网范围内的诊断医生、患者和其他信息交流者能方便地访问 D ICOM 医学图像信息,实现共享和远程诊断.D ICOM标准利用面向对象的技术,基于详细的信息模型(实体 -关系模型),给出了 D ICOM标准中的信息对象定义 (Information Object Definitions, IODs),以及对这些信息对象的操作——D ICOM消息服务单元 (D ICOM messageservice elements; D IMSE);同时还定义了消息 (包含医学图像或相关信息以及对他们的操作)交换的网络及点对点通讯的支持.应用这一标准的数字图像医疗设备以及PACS 只需进行一些简单的参数设置就可以交换医学图像及其相关标准.D ICOM标准主要采用了在实际中广泛应用的TCP/IP协议和影响较大的OSI协议,作为对D I COM网络支持的基础,在成熟的标准化网络环境基础上增加对医学图像的支持,而不是从最低层开始定义,可以直接利用现有的网络硬件和软件资源,促进D I COM标准的开发与应用.D ICOM标准按照提供服务或者使用服务把设备分为D ICOM服务提供者 SCP和D ICOM服务使用者 SCU,它们基于 Socket机制并采用D ICOM定义中的消息交接机制完成相关信息的交换,具体通信过程如下:建立连接:SCU建立连接时,将协商的内容,即传送内容的编码方法、字节发送的次序、图像的封装形式等内容,封装成 A-ASSOC IATE-RQ PDU(建立关联请求 PDU)通过TCP传输服务发送给 SCP.SCP收到该 PDU后,进行协商的校验,将响应数据通过TCP传输服务发送回 SCU,SCU收到连接确认 AASSOC IATE-AC PDU(建立关联允许 PDU),连接建立成功,若收到A-ASSOC IATE-RJ PDU(建立关联拒绝 PDU),连接失败.传输数据:连接建立成功后发送数据,SCU将消息数据装进 P-DATA(数据传输)PDU,通过套接字 Socket将 PDU发出.释放连接:数据传送完毕或者因某种原因不能再继续,都要释放连接.SCU释放连接时,协商信息封装成A-RELEASE-RQ PDU(释放关联请求 PDU)通过 TCP传输服务发送给 SCP.SCP收到该 PDU后,进行资源和连接的释放,发出响应数据,通过TCP传输服务发送到 SCU,SCU收到释放确认 ARELEASE-RSP PDU(释放关联响应 PDU)或A-Abort PDU(强行释放关联 PDU)后释放连接[2].Query/Retrieve服务类是D ICOM标准中一个重要的服务类,它的功能是用一些常用关键属性作为查询值,对基本的 SOP(Service Object Pair服务对象对——D ICOM信息传递的基本功能单位)Instances进行查询,并允许一个D I COM应用实体从一个远程D I COM应用实体获取 SOP Instances或者请求远程D I COM应用实体将 SOP Instances传输到另一个D ICOM应用实体.Query/Retrieve服务类采用 D IMSE-C服务中的C-F IND,C-MOVE和 C-GET服务.具体如下:C-F IND图像查询:查询客户端 C-F IND SCU发送基于图像相关信息的查询属性信息到支持 C-F IND SCP的设备 (如图像归档中心、图像产生设备等),提出查询请求,提交查询标识符;SCP在相应的层次(即病人、检查、系列、图像层)做查询;SCP返回查询的结果,把查询结果发送至请求端.在这个过程中,根据需要,SCU可以结束查询.C-MOVE图像传递:C-MOVE SCU负责把要传输图像的信息以及获取这些符合条件图像的目的端的信息发送到支持 CMOVE SCP的设备上,提出带有关键字属性的请求; SCP初始化一个存储服务 C-ST ORE,激发别的应用实体(AE)去进行图像及相关信息的传送,并处于等待状态;当图像传送完毕后,SCP返回执行情况清单给SCU,并把查询结果发送到请求信息的目的端.C-GET图像获取:这个过程与C-MOVE很相似,不过它不触发别的应用实体(AE),C-ST ORE是在本次连接中执行.DI COM标准内容多,如果完全自己编写代码来实现这些功能,是一个浩大的工程.DC MTK工具包是由德国offis公司开发的,提供了实现DI COM协议的一个平台,可以在它的基础上完成自己的主要工作,而不必把太多的精力放在实现DI COM 协议的细节问题上.故本文以W INDOWS XP+VC2005为开发平台,基于DCMTK 工具包,编写符合DI COM标准的相关应用程序来实现医学图像查询/获取功能[3,4].3.1 DCMTK工具包首先使用C Make软件得到DC MTK的工程文件,然后用VC2005编译DC MTK 工程,生成一些静态链接库.这些生成的静态链接库和头文件分别存放在 lib和include文件中,以便VC2005编程时引用.DCMTK工具包包含了十几个执行D ICOM标准的程序包,在该软件的设计中主要涉及到 dcmnet和dcmqrdb程序包,具体介绍如下:(1)dcmnet程序包.dcmnet是一个网络库,并包含实用的程序.该模块包含了实现D ICOM网络通信的所有函数集.该模块主要接口是文件 assoc.h和dimse.h中声明的结构体和函数.—assoc.h:这个文件包含为 D ICOM应用提供关联管理的程序.它维护描述活动关联的结构,提供对关联特定信息的访问,也提供程序帮助关联协议association negotiation(presentation contexts,abstract syntaxes,transfer syntaxes,max imum PDU length,and other extended negotiation).该包使用了D ICOM上层机制接收/发送关联请求/响应.每一个活动的关联由 T_ASC_Association结构表示,包含了所有相关的信息.模块前缀ASC_.—dimse.h:这个文件包含为 D ICOM应用提供dimse层的服务的程序.工具:—echoscu:D ICOM verification(C-ECHO)SCU—findscu:D ICOM query(C-F IND)SCU—movescu:D I COM retrieve(C-MOVE)SCU—storescp:D ICOM storage(C-STORE)SCP—storescu:D ICOM storage(C-STORE)SCU—termscu:D I COM termination SCU(2)dcmqrdb程序包.dcmqrdb是一个图像数据库服务器.此模块管理存储区域,并允许使用 D ICOM存储服务类将图像存储在这些存储区域中.它也允许使用D I COM查询/获取服务类查询图像属性并检索图像.工具:dcmqridx:在图像数据库检索文件中注册一个D I COM图像文件dcmqrscp:D I COM图像归档(中心测试节点) dcmqrti:互动性的程序,检查dcmqrscp图像数据库并且发送这些图像文件:下面这些文件提供进一步信息.—dcmqrcnf.txt file:—dcmqrset.txt file:3.2 功能的实现(1)查询\获取服务器端第一步:配置 dcmqrscp.cfg文件,该配置文件中定义了:全局参数,例如:NetworkType="tcp"NetworkTCPPort=104MaxPDUSize=16384MaxAssociations=16网络中D ICOM应用实体集,包含AETitle、主机名和端口号,例如:findseu:(F INDSCU,HostName,104)movescu:(MOVESCU,HostName,5678)storescu:(STORESCU,Hos tName,104)storescp:(STRESCP,HostName,5678)ANY=findscu,movescu,storescu,storescp属于相同厂商的应用实体,用于限制传送目的地为同一厂商的主机,例如: "DCMTKAEC"=ANY"DCMTKAET"=ANY存储区域并指定存储区域的访问权限,可存储字节等,例如:COMMON\home\dicom\db\COMMON RW (200,1024mb)ANYACME_STORE\home\dicom\db\ACME_STORE RW(9,1024mb)ANYUN ITED_STORE\home\dicom\db\UN ITED_ STORE R(9,1024mb)ANY第二步:利用 demqridx建立一个 index.dat索引文件,列出数据库检索文件的内容,它并没有复制D I COM图像,只包含了 D I COM图像的基本属性和路径信息,方便图像的快速查询和检索.第三步:建立 dcmqrscp服务器dcmqrscp是 dcmqrdb程序包中最重要的工具,实现图像归档功能,并执行访问受限规则对指定应用实体限制操作.具体实现过程如下:①读取配置文件,初始化网络;②加载数据字典;③使用文本数据库;④等待客户端的连接,处理客户端请求并返回结果.(2)查询\检索客户端第一步:findscu查询功能findscu只支持C-F IND message进行查询,它发送查询关键字到SCP并等待连接响应.具体实现过程如下:①检查查询关键字的数据集格式是否规范,如果不规范输出错误消息;如果规范,在数据字典里查询,若没有找到输出错误消息;找到后,进行解析并把结果返回;②加载查询文件,并推入查询文件链表;注意:查询关键字或文件必须有其一,否则提示“either que ry file or override keys(or both)must be specified”错误信息.①加载数据字典;②初始化网络参数,设定角色、端口号等;③初始化连接参数,设置可接收最大 PDU长度等;④设置客户端和服务器的 AETitle,并增加表达式上下文,建立连接;⑤根据给定查询文件或关键字多次进行查询,次数取决于参数 opt_repeatCount,读取文件,并发送C-F IND-RQ查询请求消息,接收 C-F IND-RSP查询响应消息;⑥查询完毕,断开连接.第二步:movescu获取功能movescu支持使用 C-COVE message获取图像.它同样发送查询关键字到 SCP并等待响应.movescu应用可以传输图像到第三方或者自己获取图像.并且该过程中movescu需初始化一个存储服务 CSTORE,扮演存储服务类的 SCP.注意:C-MOVE 操作只是执行了图像的复制,并没有删除 SCP的原图像.具体实现过程同 findscu. 本软件利用DCMTK工具包实现了D ICOM医学图像的查询及传送,局域网内实现三方传送图像成功,并利用 JD ICOM测试工具测试通过.测试结果如图 1,2所示.【相关文献】[1] NEMA.Digital Imaging and Communications in Medicine (D ICOM)[Z].USA:ACR-NEMA standard publication, 2007.ps3.1-ps3.7.[2] 王晓楠.D ICOM通信的设计与实现[J].计算机工程与应用,2004,40(13):131-132.[3] 张晓琼.D ICOM标准查询/找回功能模块的设计与实现[D].西安:西安电子科技大学,2006.[4] 王敏.基于 D I COM标准的医学图像通信过程的实现[D].西安:西安电子科技大学,2007.。
DICOM图像文件解析及程序设计

DICOM图像文件解析及程序设计魏军;刘荣鑫;宋国兴;李金屏【期刊名称】《济南大学学报(自然科学版)》【年(卷),期】2007(021)003【摘要】分析DICOM标准,建立解析DICOM文件的模型,研究DICOM文件解析及其图像显示的方法.以DICOM3.0标准为对象,提出将DICOM文件划分为概念模型、数据模型、物理模型3个层面;以概念模型、数据模型为指导进行解析程序的设计,将物理模型与程序设计相结合进行解析程序的编程实现;利用线性/非线性两种算法对文件中的医学图像进行显示以及窗宽/窗位的调整.测试结果表明,该DICOM 文件解析程序能够完整解析DICOM3.0标准文件,显示医学图像并支持窗宽/窗位的调整.通过对标准的分析编程实现了DICOM3.0医学图像文件的解析、显示和调整.【总页数】4页(P215-218)【作者】魏军;刘荣鑫;宋国兴;李金屏【作者单位】济南大学控制科学与工程学院山东济南 250022;北京航空航天大学机器人所北京 100083;济南大学信息科学与工程学院山东济南 250022;济南大学信息科学与工程学院山东济南 250022;济南大学信息科学与工程学院山东济南 250022【正文语种】中文【中图分类】TP242.3【相关文献】1.DICOM格式医学图像及其图像信息的显示 [J], 高升;葛云2.DICOM标准医学图像文件解析及工具软件的研制 [J], 邱明辉;刘海一3.DICOM全方向M型心动图系统DICOM图像解析方法研究 [J], 许剑锋;黄立勤;林强4.DICOM文件解析及其消息传输 [J], 张元鲁;王超5.DICOM数据集研究和DICOM图像处理软件的实现 [J], 伍亚军;周正东;戴耀东因版权原因,仅展示原文概要,查看原文内容请购买。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
Tag代表标识 ,其组标识和元素标识唯一确定 一个数据元素 ; VR (Value Rep resentation)代表值表 示法 [5] , 其内容指明值域中值的数据类型 , 例如 “PN ”为姓名类型 ,“AS”为年龄类型 ,“DA ”为日期
进行显示以及窗宽 /窗位的调整 。测试结果表明 ,该 D ICOM
文件解析程序能够完整解析 D ICOM3. 0标准文件 ,显示医学
图像并支持窗宽 /窗位的调整 。通过对标准的分析编程实现
了 D ICOM3. 0医学图像文件的解析 、显示和调整 。
关键词 : D ICOM;医学图像文件解析 ;窗宽 /窗位 ;程序设计
218
济 南 大 学 学 报 (自然科学版 )
第 21卷
主模块根据返回的传输语法 U ID 以选择数据 集解析的方式 。例如当 U ID 为 1. 2. 840. 10008. 1. 2 时 ,数据集元素编码便为隐式 VR /小端编码 ,图像
像素集为自然未压缩格式 /小端编码 。数据集解析 模块根据 Length 域中的值来决定元素值域中值的 长度 ,同时根据 VR 及编码方式来决定该值以何种 格式进行组织以做出相应的格式变换 。根据需求分 析 ,可在数据集解析过程中保存所需元素值 。由于 每一个 D ICOM 文件均在数据集的后部保存着一张 医学图像 ,所以在数据集解析过程中必须将与该医 学图像显示有关的元素值进行记录 ,此类图像元素 的组标识为 0x0028。 4. 6 影像处理模块
5 线性 /非线性图像转化算法
图像转化算法是将 D ICOM 医学图像提取出 8
位位图的精华所在 ,应考虑到以下几个问题 。
(1)图像的亮度和对比度能否突出关键部分 ;
(2)充分利用 0→255灰度间隔显示有效区域 ;
(3)尽量减少值域压缩所带来的损失 ;
(4)不能损失应突出的部位 。
5. 1 图像转换的线性算法
每一个 D ICOM 文件均描述一个完整的复合化 信息对象 [ 2 ] ,它是对适用于数字医学图像的现实世 界实体的抽象定义 。复合化信息对象可以额外地包 括相关但在现实世界实体中并不是固有属性的集
216
济 南 大 学 学 报 (自然科学版 )
第 21卷
合 。例如 ,计算机 X射线断层摄影技术的信息对象 则定义为复合的 ,它包括图像的固有属性以及病人 的相关属性 。
也称为存储模型 ,它定义了 D ICOM 文件中具有 相同数据结构的全体信息以何种物理结构进行文件 存储 。
2 概念模型分析
D ICOM 文件的概念模型用于信息世界的建模 , 建模所得到的信息结构只具有概念上的意义 ,它对 开发人员认知 D ICOM 文件的本质有着重要的意义 。 根据 D ICOM 标准 ,概念模型如图 2所示 。 2. 1 复合化信息对象
类型 ; Length代表值长度 ,它表明值域中值的长度 ; ValueFiled为值域 ,它承载着数据元素的具体内容 。 数据元素的结构分 3 种 ,不同之处体现在 VR 字段 与 Length字段的组合上 。
图 2 D ICOM 文件的概念模型
2. 2 数据元素 它是构成复合化信息对象的最小独立单位 ,它
图 4 数M 图像文件解析及程序设计
217
4 物理模型分析及程序设计方法
以前两节所阐述的概念模型及数据模型为指 导 ,采用物理模型与程序设计相结合的方式实现了 解析程序 。本节中给出程序的模块结构图 ,见图 5 逐一对每个模块进行基于物理模型的分析 。
究 D ICOM 文件解析及其图像显示的方法 。以 D ICOM3. 0标
准为对象 ,提出将 D ICOM 文件划分为概念模型 、数据模型 、
物理模型 3个层面 ;以概念模型 、数据模型为指导进行解析
程序的设计 ,将物理模型与程序设计相结合进行解析程序的
编程实现 ;利用线性 /非线性两种算法对文件中的医学图像
窗 位 ( 0x0028, 0x1050 ) 和 窗 宽 ( 0x0028,
0x1051)指定了从原始像素值到标准位图像素值的
线性转化 。窗位指定窗口中心的值 ,窗宽指定窗口
的宽度 。线性算法的计算公式如下 ,其中 X 是原始
像素值 , Y是位图像素值 , C是窗位 , W 是窗宽 :
Y = ( X - ( C - W /2) ) ×( 255 /W )
(1)
由于计算得出的 Y可能不是 0→255内的值 ,所
以需对 Y进行处理 :将低于 0 的值设为 0,高于 255
的值设为 255,范围内的值保持不变 。对于 CT图
像 ,由于其单位是 HF,所以应先对原始像素值 X 进
行一次单位上的转化 ,见图 6。
5. 2 图像转换的非线性算法
线性算法有其局限性 ,即当窗宽不是很宽的时
1 D ICOM 文件的 3层模型
D ICOM 文件是由某种医学影像设备产生并包 含某个病人信息数据及医学图像数据的综合 。由于
收稿日期 : 2007 - 01 - 04 基金项目 :国家 863计划 (2004AA421022) 作者简介 :魏 军 (1974 - ) ,男 ,江苏常州人 ,讲师 ,硕士 。
第 21卷第 3期 2007年 7月
济南大学学报 (自然科学版 ) JOURNAL OF UN IVERSITY OF J INAN ( Sci. & Tech1)
文章编号 : 1671 - 3559 (2007) 03 - 0215 - 04
D ICOM 图像文件解析及程序设计
Vol. 21 No. 3 Jul. 2007
图 5 物理模型及程序模块结构图
4. 1 编码方式介绍 小端编码表示内存中的低位地址存放低位字
节 ;大端编码表示内存中的低位地址存放高位字节 。 4. 2 程序主模块
通过与用户的交互获得所要解析的 D ICOM 文 件路径 ,协调各子模块间的运行 ,以及将解析出来的 文件内容及图像反馈给用户 。 4. 3 文件识别模块
中图分类号 : TP242. 3
文献标识码 : A
计算机不能直接处理现实世界中的具体事物 ,所以 可利用建立模型的方法将具体事物转化成计算机能 够处理的数据 。D ICOM 文件的建模如下 ,见图 1。
近年来随着数字成像技术 、计算机技术和网络 技术的进步 ,各种旨在全面解决医学图像的获取 、显 示 、存贮 、传送和管理的医学影像系统在医院中迅速 普及开来 。当医学工作者需要在影像扫描设备 、影 像存储设备 、影像后处理工作站等设备之间交换影 像时 ,必须寻找一种把数字化影像及其信息输入 /输 出设备的方法 。利用 D ICOM[ 1 ]标准便可以在影像 设备上建立一个接口来完成影像数据的输入 /输出 工作 。D ICOM ,即医学数字成像和通信标准 ,其第 3 版由 18个部分组成 ,其中 1 - 6部分定义了 D ICOM 的文件格式 , 7 - 18 部分定义了介质存储及网络通 信的应用框架 。对 D ICOM 文件的解析是开发各种 医学影像系统的基础 ,文中对 D ICOM 标准所定义的 文件格式进行了详细的剖析 ,并提出针对 D ICOM 医 学图像文件解析的程序设计方法 。
在确认当前文件是 D ICOM 文件后 ,主模块便顺 序调用文件头解析模块对文件头进行解析 。D ICOM 文件头信息指明在其后所封装的数据集及图像像素 集中数据元素的结构 ,为了加以区分 ,将文件头数据 元素的组标识定义为 0x0002 且结构是显示 VR /小 端 编 码 。在 解 析 过 程 中 需 记 录 下 “ ( 0x0002, 0x0010)传输语法 U ID ”元素 ,它定义了数据集编码 方式以及图像像素集的压缩方式 。 4. 5 数据集解析模块
具体描述了信息对象的某一属性 ,例如病人的名字 , 检查的部位 ,成像设备的种类等 。针对 D ICOM 文件 数据模型以及物理模型的分析都是围绕着数据元素 而展开的 。 2. 3 模块
为了简化信息对象的定义 , D ICOM 标准将每一 个复合化信息对象的数据元素与集合中相似的元素 分开 ,并将这些数据元素的分组指定为独立的模块 , 不同的模块可共享相同的数据元素 。 2. 4 信息实体
该模块在主模块获得文件路径后被调用 ,利用 物理模型中“文件序言 ”及“D ICM 前缀 ”[ 5 ] 的概念 来判定这是否是一个 D ICOM 文件 。标准定义 : D I2 COM3. 0 文件起始处为 128 个字节的文件序言 128字节的 00H ,紧随其后的是 4字节的 D ICOM 文 件前缀“D ICM ”。 4. 4 文件头解析模块
数 据 集 中 最 后 一 个 元 素 是 ( 0x7FE0, 0x0010) [ 6 ] ,它标志原始像素集的起始位置 。当数 据集解析到这一 Tag时 ,内存中的文件指针将定位 在 D ICOM 文件中原始像素集的起始处 。D ICOM 医 学图像是用 12位或 16位的灰度等级来显示一个灰 度图的 ,而一般的 CRT或 LCD 显示器只支持 8位的 灰度等级 ,于是该模块将对 D ICOM 医学图像进行标 准位图的转换 。它根据传输语法 U ID 来确定被封 装的 图 像 是 自 然 图 像 ( B itmap ) 还 是 压 缩 图 像 (JPEG) 。利用组标识为 0x0028 的元素组 ,结合图 像转化算法 ,便可将 12位或 16位的灰度图转化为 8位灰度图 。
魏 军 1a, 2 ,刘荣鑫 1b ,宋国兴 1b ,李金屏 1b
(1. 济南大学 a1控制科学与工程学院 ; b信息科学与工程学院 ,山东 济南 250022; 2. 北京航空航天大学 机器人所 ,北京 100083)
摘 要 :分析 D ICOM 标准 ,建立解析 D ICOM 文件的模型 ,研