基于DICOM 的數據組織及醫學
圖像序列提取方法研究
李卓陳鵬吳玲達
(國防科技大學多媒體研究開發中心,長沙410073)
E——mail:lizomail@yeah,net
擒 要DICOM標準是應用在PACS系統中的一個醫學數字成像和通信的國際標準,文章在深入研究DICOM標準的基
礎上,結合在實際中開發PACS系統的相關經驗,對基于DICOM 的數據組織層次進行了較為深入的分析,給出了提取
DICOM文件中相關屬性信息并解析分離圖像數據信息的一般方法,最終提取出基于DICOM標準的醫學圖像序列。
關鍵詞PACS DICOM 醫學圖像
文章編號1002—8331一(2005)08-0221-03 文獻標識碼A 中圖分類號TP391
Data Organizing and Medical Image Series Generating
Based on DICOM Standard
Li Zhuo Chen Peng Wu Lingda
(Multimedia R&D Center of National University of Defense Technology,Changsha 410073)
Abstract:DICOM standard that applied to PACS System is an International Standard of Digital Imaging and Communications
in Medicine,On the basis of thoroughly researching the DICOM standard an d integrating the experience of practice
in developing PACS system,this paper firs@ ana1) zes the structure of DICOM data layer organization;Secondly
through processing related attributes data and image data which resolved from the DICOM files,this paper presents the
method of generating medical image series on the basis of DICOM standard.
Keywords:PACS,DICOM,medical image
1 引言
PACS(Picture Archiving and Communication Systems,醫
學影像存檔與通信系統)是近年來隨著數字成像技術、計算機
技術和網絡技術的進步而迅速發展起來的、旨在全面解決醫學
圖像的獲取、顯示、存貯、傳送和管理的綜合系統。而DIC0M是
Digital Imaging and Communications in Medicine的英文縮寫,
即醫學數字成像和通信標準【 ,它是PACS系統中應用的主要
標準,在PACS系統中醫學圖像的傳輸和存儲都是遵循
DIC0M標準的。在DICOM標準中詳細定義了影像及其相關信
息的組成格式、傳輸交換和存儲方法,利用這個標準。人們可以
接收影像設備中輸出的數字化影像數據141,同時各醫院之間
的PACS也可以利用DIC0M標準來共享數字化影像數據。
在PACS系統的開發過程中,一方面需要對DICOM格式
的醫學圖像及相關信息數據進行組織和管理,方便醫生的查詢
和檢索;另一方面,需要對醫學圖像進行分析和處理,為醫生提
供輔助診斷的手段。因此在PACS系統開發過程中的前提工作
就是對DICOM格式的醫學圖像進行解析,提取出相關醫學圖
像信息,并將它們還原成為一般格式的圖像序列。以利于圖像
的顯示以及相關的后處理工作。
2 DICOM數據的組織層次分析
在PACS系統的開發中。為了滿足醫生查詢和檢索病人醫
學圖像序列的需要,首先要對DICOM數據按照一定的組織層
次來進行劃分,從而更好地對DIC0M數據進行管理,另一方面
也可以較為便捷地提取醫生所需要的病人醫學圖像序列。
DIC0M數據的組織主要分為四個層次:患者(Patient)、研
究(Study)、系列(Series)和圖像(Image)。這四個層次分別對應
了相關類型信息的生成階段和不同來源。
圈I DICOM數據的組織屢次劃分
病人層次位于整個DICOM 數據組織層次的最頂層,DI.
COM數據是以一個個的病人為單個模塊來進行組織管理的。
一個病人可以包含一個或多個研究。一個研究可以包含一個或
多個序列。而序列又包含了一個或多個圖像。
(1)病人層次
作者簡介:李卓。博士生,研究方向為多媒體信息系統。吳玲達,教授,博導,主要研究方向為多媒體系統及其應用。
計算機工程與應用2005.8 221
維普資訊 http://www.cqvip.com
病人層次包含屬于某個研究的病人標識和統計信息,一個
病人可能由于其它或以前的檢查而有多個研究,病人層次是最
高層次。
(2)研究層次
研究層次是在信息模型中最重要的層次,在這個層次中主
要定義了在某個病人身上執行的醫學研究的一些特性。一個研
究是某個特定類型檢查的結果,它可以包含由多種醫學影像設
備生成的DICOM數據實例,在一個放射科所有活動都圍繞著
研究這個層次進行處理。此外,一個研究又可以包括一個或多
個醫學圖像序列。
(3)序列層次
序列層次標識了生成圖像的形態類型、序列生成的日期、
檢查類型的細節和使用的設備等等,序列是來自同一醫學影像
設備的單一形態有關圖像及其相關信息的集合,一個序列可以
包括一幀或多幀圖像。
(4)圖像層次
圖像層次是信息模型的最低層次,它主要定義了描述圖像
像素數據的一些屬性。對于一個單個DIC0M文件所包含的像
素數據來說,可以包含有一幀、兩幀和多幀像素數據。多幀圖像
的的幀之間是順序排列的,并享有一些公共的屬性,只有少數
一些屬性隨著幀之間的變化而變化,例如時間、角度位移和切
片增量等屬性。多幀圖像中的公共屬性可以通過查閱多幀圖像
的第一幀來得到。
文章在相關PACS應用軟件的開發中應用了以上對DI—
COM數據組織層次劃分的概念,并收到了較好的管理效果(如
圖2’所示)。DICOM數據基本上是按照病人一研究一序列一圖像
的層次來進行組織管理的,相關的數據通過一個TreeView控
件層層展開,最底層為序列層,然后通過用戶選擇某~序列而
載入這一序列的所有圖像進行顯示或供后處理使用。
圈2 層次展開DICOM數據的界面示例
3 DICOM 醫學圖像序列的提取
DICOM醫學圖像序列的提取可以分為兩個步驟:首先對
DICOM文件進行解析,從DICOM文件中提取必要的一些屬性
信息,如DICOM 文件傳輸、病人、影像設備和圖像相關的屬性
信息,這些信息基本屬于文本信息。這些屬性信息不僅是下一
步提取DICOM文件中圖像數據的基礎保證,而且對DICOM圖
像數據的檢索和管理有著重要的作用;其次,依據前面提取出
222 2005.8計算機工程與應用
的相關屬性信息,對封裝的圖像數據進行解碼,還原為一般位
圖格式,并形成DICOM 圖像序列。
3.1 DICOM相關屬性信息的提取
對DIC0M數據管理的操作實際上就是對DICOM文件的
操作。DICOM文件提供了一種封裝方式,它將DICOM信息對
象定義IOD(Information Object Definition)與相關服務操作相
結合的一個服務對象組合SOP(Service Object Pair)實例以數
據集的形式封裝在一個文件中【l' 4l。DICOM文件主要由兩個部
分組成,前一部分是文件元信息,后一部分是封裝的數據集。
對于文件元信息來說,它主要包含了對封裝的數據集的一
些識別信息。這個文件頭首先由128字節的文件序言開始,緊
隨著的是內容為“DICM”的4個字節的前綴,通常這個前綴用
來判別文件是否為DICOM文件。前綴之后的是其它一些文件
元元素信息。
對于封裝的數據集來說,它是由一組按照標簽大小順序排
列的數據元素共同組成的。這些數據元素按照所描述的內容主
要可以分為兩大部分:一部分是用來描述諸如DICOM文件傳
輸、病人、影像設備和圖像相關的屬性信息,這些屬性信息多為
文本信息;另一部分是用來存儲DICOM文件中的圖像數據,這
些數據元素位于整個數據元素序列的最后。圖3所示的是數據
集的編碼存儲方式。
數據
. 俸輸方向— .
協商的傳輸語}去
圖3 DlICOM數據集和數據元素結構
數據元素標簽由組號和元素號共同組成,用來唯一標識數
據元素。在獲取了數據元素標簽之后,就可以在相應的數據字
典中查找標簽所對應的數據元素名稱和VR值,如果此數據元
素含有VR域,則用此VR值覆蓋從數據字典中獲取的VR值;
值長度域指定了值域的長度,值長度域本身的長度為16或32
比特,這取決于VR是隱式還是顯式;最后通過已得到的VR
值和值長度,就可以從值域中得到此數據元素的值。
文章在相關PACS軟件的具體實現中,分別定義了兩個基
類CDcmElement和CDcmDataSet,在實際應用中可以根據不同
情況在這兩個基類的基礎上進行繼承,這樣就可以靈活地對
DIC0M數據集中的數據元素進行相關操作。這兩個基類所包
含的一些主要函數的定義如下:
Class CDcmElement{
Uintl6 getGTag();//獲取組標簽
Uintl6 getETag();//獲取元素標簽
Void ReadVR();//獲取值表示值
Uint32 getLength();//獲取值長度
Void ReadValue();//獲取元素值
Void SetValue();//設置元素值
⋯ ⋯ )
Class CDcmDataSet{
CDcmElement FindElement();/ |
|