孔 俊, 唐厚君
(上海交通大学信息与控制工程系,上海200240)
摘 要: DICOM3.0标准作为目前通用的医学图像标准,最重要的特性之一在于其面向对象性。本研究依
据这一重要特性,描述了如何使用面向对象的Java语言实现该标准的接口软件。从而解决了DICOM硬件设备与
后继PACS处理软件的接口问题。同时,为了克服现有PACS系统的硬件瓶颈,对数据读入方式采取了优化,大大
降低了CPU运行时间和内存占用空间,提高了系统的运行质量和性能。
关键词: 医学数字成像和通讯;图像存储和传输系统;接口;面向对象
中图分类号: R318.19文献标识码:A
引言
原始数据的进入是进行图像分析的第一步。但是专用医学图像(如CT,MRI)不采用BMP,JPEG等
般格式,而是以DICOM格式[1]存放的。因此需要通过一个通用数据接口提供双向服务;(1)实现DICO
数据的解码,得到图像及相关病历信息。(2)提供DICOM图像数据向BMP、JPEG等普通格式转化的功能
(3)经计算机处理后的图像数据及其他一些非DICOM图像数据编码为DICOM格式,亦即形成新的CT/
MRI文件,从而可以进入DICOM专用网络。
1 DICOM标准
DICOM协议主要是针对PACS系统中的图像格式的定义和图像通信的规范。其作为目前通用的医学图
标准,最重要的特性之一在于其面向对象性。这就决定了在该标准的软件实现中,Java具有独特的优越性。
DICOM标准的面向对象性是基于一组显式的、细节化的实体-关系模型(Entity-Relation模型)。模
具有以下三要素:(1)各种实体如患者(patient)、图像(image)、研究(studies)等代表对象。(2)属性
描述了对象的特性。属性赋值以后,抽象的实体成为实例(Instance)。(3)服务处理信息对象的方法,
文件的存储和传输操作。E-R模型可用关系图来表示:
图1 E-R模型关系图
例如源实体名为猫,目标实体名为老鼠,关系为抓,则该模型的意思为一只猫抓0只或多只老鼠。
2 用Java实现接口的优势
Java具有以下几个特点[2]:(1)面向对象性,(2)与平台无关性,(3)方便的网络移植性。用Java来实
DICOM接口,可以体现良好的数据抽象和数据封装,这与DICOM标准的基本设计思想完全吻合。最终
标是建立起一个与平台无关,同时基于网络运行的医学图像分析系统。因此这套用Java开发的DICOM
据接口以Java包的形式向整个系统提供无缝连接,同时对其它基于Java的医学软件提供通用服务。
3 软件设计与实现
已有的同类型软件具有的主要问题在于:(1)通用性不够,只适用于特定范围。(2)功能的实用性没有
收稿日期:2003-06-13
好的贴近医院的使用习惯。(3)无法保证效率。具体而言,就是指运算时间和内存占用这两方面的性能
标。由于一般情况下,对软件性能的要求不是基于单个文件,医院通常对每个患者的一次病理分析会产生
十兆的DICOM文件序列,软件的算法结构和内存分配是否合理会对软件的性能有非常明显的影响。
3.1 通用性设计分析
目前很多DICOM软件之所以通用性不是很好,是由于设计时没有能够充分考虑到DICOM数据编码
灵活性,因而没有在程序中作相应处理。
DICOM文件是标准的二进制流文件,它实际上是对各种对象的属性信息和对应值进行编码,其结构层
为:数据元素(Data Element)数据集(Data Set)消息(Message)。作为最小单位的每一个数据元素在DI
COM的数据字典中都有明确定义:惟一性标志(TAG),名称(NAME)和类型表示(VR)。数据字典以静态属
的形式封装进独立的Java类。从局部看,按照TAG值升序,DICOM文件顺次存放如下结构的数据元素:
标志类型表示长度值域
图2 文件结构
整体来讲,文件分为信息头和图像两大部分。前者存放患者信息和图像的总体指标,后者存放图像的
素信息。DICOM标准规定:信息头中一些关键属性值的设置非常灵活,而且对其它相关方面有直接影响。
一些文献中试图对这种灵活性进行归纳,本研究认为这些归纳并不全面。而一个全面的总结正是通
型程序结构的设计基础,具体如下:
(1)传输语法对信息头和图像部分编码的影响。传输语法(Transfer Syntax)属性的值控制整个文件
编码结构。程序必须据此判断:
①类型表示(VR)在编码时显式(exlicit)还是隐式(implicit)列出,相应“长度”项的位置(距“标志”项的
移量)会有不同。而“值”的读取一般依赖于正确的“长度”。
②字节顺序(byte ordering)是低位地址低位字节顺序(Little Endian)还是低位地址高位字节顺序(Bi
Endian)。从根本上影响到JAVA I/O中对二进制字节流的组合方式。
③图像数据是否经过压缩。大部分DICOM图像是没有经过压缩的原始数据,对于压缩图像,可以
JPEG压缩和游程编码压缩(RLE)两大类,并下分有损和无损情况。Sun公司提供了处理JPEG压缩/解
缩包.com.sun.image.codec.jpeg。RLE的压缩/解压缩算法包也是外挂的,可以很方便实现。
(2)信息头部分对图像部分编码的影响
①图像类别。图像类别(Modality)属性直接影响后面象素值的读取,对于MRI灰度图像,没有CT灰
图像所具有的斜率,截距概念,也就没有相关的预处理过程。同时MRI灰度图像没有预定义窗宽、窗位,
11 第1期孔 俊等:DICOM医学图像数据接口的Java实现
|
|