DICOM圖像處理技術研究

DICOM圖像處理技術研究

作者:寇海洲 作者單位:淮陰工學院計算機工程系,江蘇淮安223001

【摘要】 針對DICOM3.0標準,詳細分析了文件結構及數據集,給出了其中一些關鍵技術問題及相應的解決措施。最後基於VC開發出一種醫學圖像處理軟件,該軟件能實現醫學圖像的顯示、通用圖像格式轉換等功能,該方法克服了傳統DICOM圖象顯示軟件的侷限性。

【關鍵詞】 DICOM標準 DICOM數據集 顯示與處理醫學圖像解碼

A research on the DICOM image processing technology

KOU Haizhou*1, CHEN Hongming1, ZHANG Hui1, CHEN Wenbin2, ZHAO Lijuan1

(1. Department of Computer Engineering, Huai′an Institute of Technology, Huaian, Jiangsu 223001, China;

2. Department of Reshaping Cosmetology, Huian Second Pople′s Hosipital, Huaian)

Abstract:According to the information contents and data format defined by DICOM standard, some classes corresponding to the types of medical image are defined for image information recording. A DICOM image viewer based on VC is designed, which is able to display and process various types of medical image. A method is thus provided, by which the problem of limitation of traditional DICOM image viewers can be solved.

Key words: DICOM; DICOM DataSet; display and process; medical image decoding

DICOM(Digital Imaging Communications in Medicine)標準是醫學數字成像和通信的國際標準。DICOM雖然是在美國產生、發展的,但已被歐洲各國、日本等發達國家和地區接受,並被列入國家標準。在我國,DICOM是唯一被接受的醫療影像國際規範。DICOM已經成爲國際醫療影像設備的圖像通信/交流的唯一規範。DICOM標準逐漸得到國內外的高度重視,一些科研機構和高等院校紛紛展開了對標準的研究和基於標準的開發。因此對DICOM標準文件的正確解讀是醫學數字圖像處理和建設的關鍵技術之一。

1 DICOM文件的數據結構和編碼規定

DICOM格式文件包括了數字成像和通信兩個方面內容。該文件格式基於面向對象的思想,制定了一系列信息對象定義和服務對象定義,文件的數據結構和編碼規則包含了數字成像和通信的真實信息[1]。

1.1 DCM文件的結構 DCM是比較常用的DICOM文件名後綴,其他PACS軟件也使用到了IMG,或是完全不使用後綴,直接就是一連串的數字或字符串命名的。DCM文件從本質上說是一個關於信息體實例的數據集,主要包括患者、檢查、序列和圖像等信息。文件的結構主要由文件頭和文件結構像素數據兩大部分組成,文件頭又分爲文件引言和數據集兩部分,其中文件引言是由128個全部置爲00的字節序列和一個長度爲4個字節的字符串組成[2]。數據集是整個文件中信息量最大的部分,囊括了所有信息實體(患者、圖像、檢查等)的信息,結構也最爲複雜,文件最後的圖像數據表示像素,數據結構單一,因此解讀文件實際上就是解讀數據集。

1.2 DICOM數據集結構 數據集由多個數據元素串連組成,每個數據元素具有類似的結構,都是由標籤、值描述、值長度和值域組成。標籤表示該數據元素的特定含義。每個標籤在整個數據集中只能出現1次(嵌套除外),共4個字節,分爲組號(高位兩字節)和元素號(低位兩字節)。如00100010表示該數據元素裏的信息爲患者姓名。標籤含義的詳細規定在標準的3.62004(數據字典)中。描述了該數據元素中值域的數據種類,大多數情況下是一個長度爲2字節的字符串。值得注意的是標籤是可選的,取決於商定的傳輸語法。值域表示該數據元素所保存的實際信息,必須爲偶數個字節,不足補0或空格。

2 DCM文件的讀取

理解了文件的結構和數據集的結構,解讀文件就不是一件很難的事情,但有些關鍵性的問題如數據嵌套、高位截取等在讀取時需要注意。

2.1 數據嵌套 當數據元素的值爲0時,則該數據元素的值域又是由1個或多個數據元素組成的,即數據元素中包含了子數據集。如果子數據集中又有值爲0的數據元素時,就構成了遞歸嵌套。嵌套的存在要求解讀算法能遍歷樹型數據結構的所有元素。

2.2 圖像數據的高位截取 通常文件採取2個字節表示1個像素,但是一般情況下,真實像素值的動態範圍不足以完全填滿這2個字節。因此,高字節的高位可能因爲被用於存儲其他信息。解讀圖像數據時應該截取高位,把低位的信息讀取出來。標準規定標籤爲00280101的數據元素儲存像素數據的最高位數,標籤爲00280102的數據元素儲存實際存儲像素數據的位數。對於某些圖像,圖像數據中儲存的像素值沒有實際意義,需要採用斜率和截距來修正,而斜率和截距則儲存在標籤爲00281053和00281052的數據元素中。因爲一般情況下這兩個值爲1或0,圖像數據中儲存的像素值和實際值相等,所以這一點常常爲人們所忽略。

3 DICOM圖像處理

3.1 DCM圖像處理的原理 文件描述的是醫學圖像,反映人體器官及組織對X線的吸收程度,用色值作爲人體器官圖像信息。目前計算機常用的位圖文件是由紅、綠、藍三基色組成,作爲灰度圖像所能顯示的等級數在0~255之間;在操作平臺上處理圖像,即需要對值進行處理。處理的方法是在描述顯示數據的範圍時,用窗寬表示;確定數據的中心值,用窗位表示。對於人體器官獲得的某個值,如果小於某個值,可轉換成位圖圖像的黑色,即0值;如果大於某個值,可轉換成位圖圖像的白色,即255值;如果在某個值的範圍之內,可轉換成對應位圖圖像的某個值,在1~254之間[3],其轉換公式:

G(v)= 0 v<c-w2

gmw(v+w2-c) c-w2≤v≤c+w2(*)

gm v>c+w2

v:爲圖像數據;G:計算機操作平臺上顯示值;gm:爲顯示器的最大值,位圖文件爲255;w:爲窗寬;c:爲窗位。

在該轉換關係中,窗寬和窗位的選擇決定了圖像所需顯示的部分,對每一個文件,可以從該文件頭獲取,並且在圖像處理中,也可以進行人爲地改變窗寬、窗位,來獲取不同的顯示效果及選擇人體器官某部分內容。

3.2 DICOM類定義 在正確理解文件結構和數據集結構之後,就不難正確解讀文件。首先讀取文件引言,檢查文件格式;然後提取傳輸語法,根據傳輸語法,採取相對應的解碼方式,如果是顯式就採取顯式的讀取方式,如果有嵌套存在就調用嵌套處理模塊;如果圖像數據經過壓縮就調用解壓模塊[4]。最後得到圖像數據,並利用設備無關位圖(device-independent bitmap, DIB,設備無關位圖可以在不同的機器或系統中顯示位圖)顯示出來。這裏需要注意的是在數據集中存在上百個數據元素,我們只要讀取其中相對重要的元素即可,表1中列出了這些數據元素的標籤[4]。表1 重要的數據元素標籤

由於圖像數據的動態範圍較大(一般大於4096,這個數值取決於採用的圖像處理算法和計算機的虛擬內存),而普通顯示器只能顯示256級灰度,因此讀取到圖像數據後,要經過窗寬窗位調節才能顯示。DICOM數據集包含的信息很多,其中有些信息很少用到或者與具體的醫療情況不符,因此去除冗餘信息、保留主要信息是很有必要的。採用面向對象的思想,筆者設計了簡化的DICOM圖像類結構。其中患者信息主要獲取患者的姓名、性別等信息;檢查信息主要獲取檢查的標識、序列號等信息;圖像信息參數主要獲取圖像的長、寬以及存儲每個像素所用的比特數等信息;圖像像素信息獲取圖像數據信息。DICOM圖像的數據結構C語言描述如下:

struct PatientInfo{∥患者信息結構

String PatientName;

Int age;

Bool sex;

…}

struct StudyInfo{∥檢查信息結構

Int StudyID;

Int SeriesNumber;

}

struct ImageInfo{∥圖像信息結構

Float height, width;

Int pixel;

…}

struct Pixel{

Int pointx, pointy, pixelvalue; ∥像素信息結構

…}

DICOM類定義如下:

Class DICOM; ∥DICOM 圖像類

{

int level;

struct PatientInfo;∥患者信息

struct StudyInfo;∥檢查信息

struct ImageInfo;∥圖像信息參數

struct Pixel; ∥圖像像素信息

Public;

∥Dicom文件讀寫、處理方法的定義略

};

3.3 DICOM圖像處理算法設計 在定義好DCM文件類之後,可以通過DCM文件類還能實現一些實用的功能,如把文件轉換爲位圖、JPG等格式文件[5]。簡單讀取DCM文件的軟件流程如圖1所示。圖1 讀取DCM文件的流程圖

在VC6.0環境下,首先設置圖像像素緩衝所需要容量的內存,分行讀入圖像數據;然後按公式(*)進行處理,設置圖像點數據,進行移位處理[6]。設窗寬爲H,窗位爲W,其算法描述爲;

for(i=0;i

for (j=0;j

{ t1=*(Data[i]+j*2); t4=t1&16; t3=t1/16; t2=*(Data[i]+j*2+1); t2=t2

Pixel_value=t2*256+t3*16+t4/1024;

pDibInit>image_Dicom[j][i]=pixel_value;

if(pixel_value<=win_center-win_width/2)

pixel_value=0;

else if(pixel_value>=win_center+win_width/2)

pixel_value=255;

else

{

pixel_value temp=(pixel_valueW+H/2)/Hf*255;

pixel_value=int(pixel_value temp+0.5f);

}

image[i][j]=byte(pixel_value);

}

【參考文獻】
[1] 謝長生,熊華明,陳 頡. DICOM圖像顯示的研究與實現[J].計算機工程與科學,2002,24(6):38-.

[2] 朱劍鋒,溫 浩,周 昀,等. DCM文件的構成分析和編解碼實現[J].中國醫療器械雜誌,2003,27(4):247.

[3] 王光飛,劉 傑,劉 文.DICOM醫學圖像的調窗技術及DIB顯示[J].醫療裝備,2005,18(8):1-4.

[4]林春漪,尹俊勳,馬麗紅,等.論解讀DICOM醫學圖像文件及其顯示的VC++實施辦法[J].現代醫學儀器與應用,2005,17(1): 1-4.

[5]胡陽秋,高小榕,高上凱.醫學圖像DICOM格式轉換軟件的設計與實現[J].北京生物醫學工程,2000,19(4):193-197.

[6] 張尤賽,陳福民. DICOM醫學圖像窗寬變換的加速算法[J].計算機工程與應用,2003,(13):218-220.

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章