孔 俊, 唐厚君
(上海交通大學信息與控制工程系,上海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實現
|
|