基于DICOM的医学影像接收存储技术研究

2012-11-04 01:42杨征宇赵建传张立波
中国医学装备 2012年11期
关键词:工具包医学影像协商

杨征宇 赵建传 张立波

基于DICOM的医学影像接收存储技术研究

杨征宇①*赵建传①张立波②

目的:通过研究PC机通过网络接收、存储医学数字成像和通信(DICOM)影像的方法,阐述DICOM存储SCP的编程实现技术。方法:运用VC++6.0及LeadTools工具包实现在Windows 2000/XP操作系统中编程。结果:成功地实现了PC机网络接收、存储基于DICOM影像的功能。结论:本方法可集成并应用于其他诸如图文报告、影像病例收集等应用软件中,并可为PC机从医疗影像设备中采集存储DICOM影像提供有价值的思路。

医学数字成像和通信; 存储SCP; Leadtools; VC++

随着全新的医学数字化影像设备应用于临床,数字化、标准化、网络化逐步成为医院影像科室发展的必然趋势。目前,近乎所有的新式医疗影像设备都具备了医学数字成像和通信(digital imaging and communications in medicine, DICOM)标准的支持,当需要从医学影像设备中获取无失真的影像时,将DICOM格式的数字影像从影像设备传输至PC机中,为了便于开发其他相关的应用软件,在重点分析DICOM协议中网络传输及消息交换部分技术原理的基础上,同时借助于LeadTools工具包成功地编写DICOM影像的接收软件。

在DICOM标准中,任何通讯过程都是通过各种客户机/服务器模式的服务而实现的,其中客户机称做服务类用户(service class user, SCU),服务器端称为服务类提供者(service class Provider,SCP)。SCU负责请求服务,SCP负责执行服务。20世纪90年代中期以后的数字化医疗成像设备(如CR,DR,CT,MRI,DSA,ECT,PET等)都可以提供DICOM Storage SCU支持,因此只需要在PC机上实现DICOM Storage SCP服务功能就可以从数字化成像设备中接收存储DICOM影像。本研究是一种利用Visual C++6.0及LeadTools工具包在Windows 2000/XP下实现DICOM Storage SCP服务功能的编程方法。

1 DICOM协议简介

DICOM标准是美国放射学会和美国国家电子制造商协会联合制定的用于数字化医学影像传输、显示与存储的协议,1993年发布的DICOM标准3.0已发展成为医学影像信息学领域的国际通用标准[1]。

1.1 信息对象定义(information object definition, IOD)

DICOM信息对象定义(IOD)是信息实体的集合,信息实体是信息成分的组合。每个信息实体包含现实世界实体的一个抽象数据(如患者、图像数据等)。每个信息实体是由多个属性组成,一个属性描述了信息特征即:患者姓名、成像模式及扫描日期等。每个属性用一个数据元素描述,相互关联的属性组合到信息对象模块Module中。Module模块以数据集的形式出现,可以使用在数个IOD中。这些信息对象模块Module具有属性的语义描述可以组合到一起。 DICOM定义了在医学环境中所需的大部分的信息对象,详细规定了这些对象的组成格式、要求以及相互之间的关系等各方面的内容,如患者、CT、核医学和超声等[2]。

1.2 服务对象对(service-object pair, SOP)

为了完成诸如打印、存储影像等功能,DICOM协议定义了“服务类”的概念。服务类描述了对IOD所可以做的操作。服务类和信息对象结合起来构成了DICOM的服务对象对(SOP)[3]。一个服务类由数个相关的SOP组成。对于1个SOP类,1台设备可能扮演2个角色:①服务类提供者(SCP),扮演这个角色的机器提供SOP类服务,它相当于客户机-服务器模型中的服务器[4];②服务类用户(SCU),扮演这个角色的装置使用SOP类的服务,相当于客户机-服务器模型中的客户机。例如一台成像装置要传送1幅影像至另一台计算机,该成像装置为与存储相关的SOP类的SCU,计算机为与存储相关的SOP类的SCP。1个SOP类的1次具体实现称作服务对象对实例,存储影像、获取患者信息等操作是通过SOP实例而实现的。举例描述SOP类及其实例的关系:

动词:Store(存储)消息服务元素(DIMSE);

名词:CT Image(CT图像)信息对象定义IOD;

一般:Store a CT image(存储CT图像)SOP类;

特指:Store this CT image(存储这个CT图像) SOP实例。

1.3 DICOM消息与网络通信

单个SOP类被定义为一组特定的服务与一个相关的IOD的结合,一个SOP类的具体实现是通过DICOM消息的交互完成的[5]。DICOM消息由命令集和数据集组成,数据集是描述现实世界信息对象的一个实例,命令集是描述对这个信息对象实例做何种操作。命令集由若干个命令元素组成,每个命令元素由标签域、值长度域和值域组成。数据集由若干个数据元素组成,每个数据元素由标签域、数据表示类型域、值长度域和值域组成[6]。DICOM消息结构如图1所示。

图1 DICOM消息结构图

元素标签由元素号和组号构成,两者都是16位无符整数;值长度是以字节数表明值域的长度,其值必须是偶数;值域包含了操作命令的属性或者信息对象实例的属性的值,其长度为可变,但不能超过值长度域所规定长度。在数据集中数据表示类型域为可选项,说明其值域的类型。当元素中包含该域时称作显式值表示(value representation,VR),否则称作隐式VR。

DICOM协议要求在数据传输编码前必须进行协商以确知对方的能力,协商的内容包括表示上下文、应用上下文、SCU/SCP角色选择、应用实体连接信息以及传输语法规定编码方式、字节发送顺序、图像封装形式等。其中表示上下文是协商的重点,并由传输语法、UID、抽象语法组成,表示上下文协商过程如下:①由通信的请求方给出抽象语法和传输语法的清单;②对方进行选择;③通信的另一方根据自身的硬件和软件情况选择合适的传输语法和抽象语法,并给予对方应答(如图2所示)。协商成功后则建立起一个联系(Association),而只有建立起联系后设备间才能进行DICOM消息的发送和接收[7]。

图2 表示层上下文协商实例图

2 LEADTOOLS Medical Imaging Suite工具包简介

目前的医学影像设备的影像存储和传输正逐渐向DICOM标准靠拢,在进行医学影像通信及处理的过程中通常需要编写与DICOM格式的影像相关的各种程序模块。如果从新开始理解DICOM的协议,然后从新编写代码来实现协议则工程浩大。美国LEAD公司开发的LEADTOOLS医学图像软件包[8]提供了实现DICOM协议的平台,可在其协议的基础上轻松的完成自己的主要工作,而不必将更多的精力放在实现DICOM协议的细节上。

LEADTOOLS是世界著名的图形、影像处理开发包,它可以处理各种格式的文件,并包含所有图形、影像的处理和转换功能,是具有各种软件、硬件平台下的开发包。开发包提供了多种编程接口,如API、C++类库、COM等。其中Medical版本尤其适用于开发各种医学成像处理系统。Medical提供了2种开发工具包:LEADTOOLS Medical Imaging 和LEADTOOLS Medical Imaging Suite。本研究选择的LEADTOOLS Medical Imaging Suite开发工具包,拥有开发一套完整的DICOM医疗成像解决方案所需要的任何功能。可以加入对任何DICOM服务的支持。

3 实现方法

本研究利用VC++6.0开发工具和Leadtools软件包编制软件,主要实现DICOM存储服务类中的服务端功能,即DICOM Storage SCP服务,完成与DICOM Store SCU端协商通讯和影像的接收存储的功能。软件可以在Windows 2000系统下运行[9]。只要在其他设备(SCU端)设置好软件运行的计算机的AETitle、IP地址、端口号,往此计算机上推送DICOM影像,此计算机则会将影像接收并存储,其技术实现细节如下。

3.1 VC++6.0中使用LEADTOOLS的方法

在VC++ 6.0中采用COM的方式调用LEADTOOLS Medical Imaging Suite类库,设置方法如下:①在Visual C++ 6.0中首先利用向导生成一个基于MFC的标准的“Document-Frame-View”单文档程序框架;②图像的显示及操作全部在View类里完成;③在头文件里使用#import指令导入LEADTOOLS COM类型库(type library)[10]:

#import “LTDicKrn14N.DLL”;

#import “LTDicDS14N.DLL”;

#import “LTDicNet14N.DLL”;

#import “LTEAY14N.DLL”。

3.2 初始化DICOM通信环境并监听网络

本研究主要使用了ILEADDicomNet类,ILEADDicomNet类是DICOM网络通信及消息交换类,封装了大量相关的属性和方法。

调用ILEADDicomNet类的StartUp函数为本地计算机进行初始化DICOM网络环境,在使用任何通信函数之前首先要调用该函数建立DICOM网络通讯句柄,然后再调用ILEADDicomNet类的listen函数监听网络服务请求。

3.3 DICOM协商

在编制协商过程中同样使用ILEADDicomNet类。ILEADDicomNet类提供了解决DICOM协商连接的成员函数与事件,做为存储服务端(SCP)利用该类封装的NetAccept函数和NetReceiveAssociateRequest事件来响应客户端(SCU)的协商请求,并利用该类的CreateAssociate函数来建立协商会话。

建立协商会话后将进行应用层上下文、表示层面上下文、应用实体连接信息以及SCU/ SCP角色选择等协商:调用该类的GetCalling、GetCalled函数取得客户端和服务器端的应用实体名,并利用GetApplication、GetPresentationID、GetPresentationAbstract、GetTransferSyntax等函数来取得SCU发来的协商内容中的应用层上下文、表示层面上下文、应用实体连接信息、SCU/SCP角色选择等信息。编写程序判断SCU发来协商内容是否被SCP所支持,如果有任意一项不予支持则调用SendAssociateReject函数拒绝并终止协商。如果协商内容双方一致则调用SendAssociateAccept函数通知SCU端协商成功。

3.4 DICOM影像接收与存储

DICOM影像接收与存储部分的功能为:将SCU端发送来的DICOM影像文件接收并存储起来,主要使用了ILEADDicomNet类和ILEADDicomDS类。ILEADDicomDS类是DICOM图像类,封装了与DICOM文件格式相关的大量属性与方法。

协商成功后SCP与SCU之间便开始了命令与数据的通信,SCU发来的Move(C-MOVE-REQ)请求触发ILEADDicomNet类的NetReceiveCStoreRequest事件,在这个事件里,利用ILEADDicomDS类封状的GetStringValue函数来取得DICOM影像的文件名,并调用该类的SaveDS函数将收到的数据流(IOD)写入到本地文件。文件存储成功后,利用ILEADDicomNet类的SendCStoreResponse函数通知SCU端影像存储完毕。

3.5 结束DICOM网络通信

DICOM通信结束后便先后调用ILEADDicomNet类SendAbort和ShutDown函数用来终止协商,随即结束DICOM网络通信。

4 讨论

(1)DICOM影像的PC采集与存储意义重大,传统的胶片保存需要很大的存放空间,由于胶片长时间存放后老化,影像会变得模糊不清,给再次查阅和科研工作带来极大的不便。另外,将CT、MRI、DR等影像打印到胶片上,窗宽、窗位已经固定不能再调节,影像无法进行后处理,因此而丢失许多有价值的诊断信息。而采用DICOM存储避免了上述的不便和缺陷,使得DICOM影像完整的诊断信息无损地存储起来,为日后的调阅、科研以及影像的后处理带来了极大的便利。

(2)DICOM协议全面细致、内容丰富,编程实现其所有规定需要极大的工作量,尤其是网络应用部分,需要在TCP/IP的基础上定义DICOM的具体的上层协议,实现的工作量和难度都很大。LeadTools工具包功能强大,其中实现了DICOM的各种消息及其上层通讯协议,利用该工具包可以快速开发出实用的应用程序。本研究利用LeadTools进行二次开发,实现了DICOM影像在WINDOWS环境下的接收与存储,并在实际网络环境下进行了测试。测试结果显示,实验中所用的各种影像均可正确地存储。

(3)该软件在我院放射科的局域网中进行了实验。选用GE Light Speed16 CT、GE AV4.2工作站、GE LCV+DSA、GE Signa 1.5 MR、Kodak 7500 DR以及Giotto Image MD钼靶乳腺机等多台影象设备作为存储客户端(SCU),选用一台PC机为WINDOWS 2000 SERVER操作系统运行此软件作为存储服务端(SCP)。经测试,存储服务端(SCP)可以成功地接收存储所有上述设备(SCU)输出的影像文件(均为DICOM标准格式,其中DSA影像最大约为80 M,MR影像最小约为600 K)。目前,该软件已集成应用到所开发的影像病例收集系统和图文报告系统中,在实际应用中效果良好。

[1]陈戏墨.PACS中的DICOM标准分析及应用[J].医学信息:医学与计算机应用,2004,17(4):190-193.

[2]王志远,余厚军.医学图像通讯标准DICOM原理与应用[J].现代医用影像学,2000,9(2):84-87.

[3]田捷,包尚联,周明全.医学影像处理与分析[M].北京:电子工业出版社,2003:303.

[4]Charles Wright.Visual C++程序员实用大全[M].北京:中国水利水电出版社,2001.

[5]刘雪梅,王蓉,赵晶.远程医疗信息系统的发展现状及相关问题[J].中国医学教育技术,2003:72-73.

[6]张立波,杨本强,周丽娟,等.Tomoscan AV型CT图像采集的设计与实现[J].医疗卫生装备,2007,28(8):74-76.

[7]张立波,杨本强,周丽娟,等.基于GDI Plus技术实现二维医学图像缩放[J].医疗卫生装备,2008,29(4):89-91.

[8]杨本强,张立波,周丽娟,等.心胸比率的计算机辅助测量计算方法[J].中华放射学杂志,2009,43(8):892-893.

[9]RICHARDSON T.The RFB protocol[S].[S.l.]:Real VNC Ltd,2003.

[10]Yang SJ,Nieh J,Novik N.Measuring thinclient performance using slow-motion benchmarking[J].ACM Transations on Computer System,2003,21(1):87-115.

On technology of receiving and storing DICOM images

/YANG Zheng-yu, ZHAO Jianchuan, ZHANG Li-bo// China Medical Equipment,2012,9(11):16-19.

Objective: To study the method of receiving DICOM image via net for PC and mainly focus on the programming technology for DICOM storage SCP function. Methods: The Program was developed by means of VC++6.0 and LeadTools toolkits on the Windows 2000/XP operating system. Results: It enabled the PC to

ICOM image from imaging equipment via net. Conclusion: The method can be integrated into and applied to other applications such as image-report and case collecting software. It provides a valuable clue for PC to capture the DICOM images from medical imaging equipment.

Digital imaging and communications in medicine; Storage SCP; Leadtools; VC++

The Outpatient Department Of Political Department of Shenyang Command, Shenyang 110032, China.

1672-8270(2012)11-0016-04

TH772.9

A

2012-06-18

①沈阳军区政治部门诊部 辽宁 沈阳 110016②沈阳军区总医院放射线科 辽宁 沈阳 110016 *通讯作者:yzy_1973@163.com

杨征宇,男,(1974- ),硕士,主治医师。沈阳军区政治部门诊部,从事放射线诊断及影像设备管理工作。

猜你喜欢
工具包医学影像协商
《中国医学影像杂志》稿约
结合多层特征及空间信息蒸馏的医学影像分割
医学影像技术在医学影像诊断中的合理运用
影像组学在核医学影像中的应用进展
慢性病健康工具包研究进展
谷歌云与Digital Asset合作推出区块链工具包
论协商实效与协商伦理、协商能力
Rheological Properties and Microstructure of Printed Circuit Boards Modifed Asphalt
运用MATLAB软件求解高中数学中的线性和非线性规划问题
建议为基层站点配备软硬件“工具包”