摘要:介紹了在MATLAB(R2006b)環境下,DICOM醫學圖像格式的閱讀、顯示及存儲方法,使讀者能夠了解并熟悉如何在MATLAB環境下使用醫學圖像處理函數,而沒有必要再借用其他的圖像格式轉換。通過分析這些函數,給出了判斷DICOM格式的條件及應用時的注意事項,最后用實例證明了在MATLAB環境中,實現復雜醫學圖像處理和分析的簡潔性及高效性。
關鍵詞:MATLAB; 醫學圖像; DICOM格式; level set
中圖分類號:TP312文獻標志碼:A
文章編號:1001-3695(2008)06-1747-03
近年來,許多數字化醫學影像設備不斷應用于臨床,產生了大量的醫學圖像(如CT、MRI、PET、SPET等)。這些醫學圖像具有成像機理多樣、數據結構復雜、數據量大等特點[1]。而實現對醫學圖像的處理和分析是進行放射醫療診斷的前提和基礎,因此具有相當重要的意義和價值。
為使醫學圖像設備的制造廠商和用戶在標準網絡上實現設備互連, 便利各類型的醫學圖像的開發和應用,由美國放射學會(ACR)和國際電氣制造商協會(NEMA) 聯手成立的數字圖像和通信標準委員會,在眾多影像設備制造商及用戶的積極參與下,制定了DICOM (digital imaging and communications in medicine) 3.0 標準[2]。DICOM3.0標準已成為放射醫學領域中的一種核心標準。目前大多數醫療成像設備都符合DICOM3.0 標準[3]。面對如此巨大的市場,具有強大數據處理能力的MATLAB軟件勢必要引進對此圖像格式的處理功能。然而目前卻很少見到有關的參考文獻,一些圖像處理工作者為了應用MATLAB環境以及調用各種工具箱的功能,不惜把DICOM格式轉換成BMP格式[4,5]。他們做了大量的工作來熟悉DICOM格式,用很大的精力編寫閱讀及保存此格式的圖像軟件。若是此軟件編寫不當,還有可能丟失圖像重要信息。其實MATLAB早在引進Version 3.0 (R12+) Image Processing Toolbox時,就增加了對DICOM格式的閱讀函數:dicomread()、dicominfo()。到Version 5.3 (R2006b) Image Processing Toolbox版本包括了對DICOM格式的閱讀、分析到存儲的函數。同時此版本也支持Analyze 7.5和Interfile兩種醫學圖像格式。其中,Analyze 7.5是由Mayo Clinic編寫的一種圖像文件格式,用來存儲MRI數據;Interfile格式用來存儲核醫學圖像,便于在不同系統上共享及交換。因此在MATLAB(R2006b)環境中,可以直接利用MATLAB 所提供的醫學圖像處理函數來實現醫學圖像的處理和分析,而不必再關心圖像文件的格式、讀寫、顯示和已有成果的技術細節;可以結合MATLAB強大的數據處理能力及多種工具箱,把精力集中在新技術理論的研究上,快速有效地實現醫學圖像處理和分析。
1DICOM圖像的讀入及顯示
1.1DICOM圖像文件信息
DICOM文件一般由DICOM文件頭和DICOM數據集合組成。文件頭包含標志數據集合的相關信息。數據集合由DICOM數據元素(data element) 按一定順序排列組成。DICOM數據元素則是DICOM文件最基本的構成單元。它由四個部分組成: 標簽(tag) 、數據描述VR(value representation) 、數據長度VL(value length)和實際數據值value。而標簽又由組號(高位2 Byte) 和元素號(低位2 Byte)兩部分組成。
MATLAB 圖像處理工具箱提供了獲取DICOM文件信息的函數:dicominfo()。該函數首先判斷文件是否為DICOM格式,滿足以下條件之一的即為DICOM格式:a)頭文件是132 Byte且第129~132 Byte是‘DICM’;b)檢查頭文件的第一個數據元素的屬性,數據元素的標簽以組號0x0002或0x0008開頭。通過該函數可以獲取DICOM文件的大小、尺寸、窗寬、窗位、數據類型、傳輸協議、設備描述、獲得日期以及病人狀況等信息。比如調用metadata=dicominfo(′CT-MONO2-16-ankle.dcm′); 返回一個結構體。
1.2DICOM圖像的讀入
MATLAB 圖像處理工具箱提供的dicomread()函數支持讀入多種圖像類型的DICOM格式。一般來說,DICOM格式文件的數據元素存儲的是經過變換后的圖像數據,筆者可以根據讀入的圖像數據X以及圖像的信息metadata得到相應的圖像CT值。轉換公式為:Hu= a.*X + b。其中:a為metadata.RescaleSlope;b為metadata.RescaleIntercept。
1.3DICOM圖像的顯示
目前的DICOM圖像一般都是16位,即其顯示范圍可以達到65 536,然而屏幕顯示范圍只有0~255,故需要定義像素的CT值到屏幕像素對應的灰度值(0~55)的映射。常用加窗顯示的線性映射來實現。所謂加窗顯示是指通過限定一個窗口,將窗口區域的圖像數據線性地轉換到顯示器的最大顯示范圍內,高于或低于窗口上下限的圖像數據則分別設置為最高或最低的顯示值[2]。這樣通過動態地調節窗口的窗寬和窗位,就可以觀察到醫學圖像的全部信息。
MATLAB 圖像處理工具箱提供了多種動態調整圖像對比度和亮度的函數。通常用以下兩種函數做圖像的顯示和分析:
a)imshow()函數,該函數自動設置圖像窗口、坐標軸和圖像屬性。可以設定預顯示的上下限,也可以調用函數imcontrast()生成一個 adjust contrast tool,它可以可視地調整當前灰度圖像的對比度和亮度。
b)imtool()函數。該函數提供了一個顯示圖像及實現常用圖像處理任務的集成環境,它逐漸替代了函數imview()。該函數幾乎支持任何數據類型的圖像,它不僅擁有imshow() 函數的功能,而且可打開其他幾個有助于顯示及分析的可視工具,如像素區域工具、圖像信息工具和對比度調節工具。根據分析圖像的需要,可以通過調節顯示范圍或滑動鼠標,自由的調節對比度來顯示圖像的不同組織。圖像顯示效果如圖1所示。
2圖像格式轉換
2.1圖像類型轉換
MATLAB 圖像處理工具箱支持四種圖像類型,分別為真彩色圖像(RGB)、索引色圖像、灰度圖像(I)和二值圖像(BW)[6]。許多圖像處理工作對圖像類型有特定的要求。比如要對一幅索引圖像濾波,首先要把它轉換成真彩色圖像或灰度圖像,直接濾波的結果是毫無意義的。在圖像處理工具箱中有類型轉換函數可以實現各種圖像類型之間的相互轉換,如rgb2gray()、ind2gray()、im2bw()等。
2.2圖像文件格式轉換
在MATLAB中,改變圖像文件格式的方法是,先用閱讀函數將文件讀入工作空間;然后用寫入函數以適當的格式保存文件。因此可以方便地實現醫學圖像格式與其他格式之間的相互轉換,以利于醫學圖像的傳輸和應用。比如把一個.png圖像轉換成DICOM格式,調用格式為
X=imread(′rice.png′);%將轉換文件讀入工作空間
info=dicominfo(′E:\\ctdata\\41.dcm′); %獲取DICOM的圖像信息
st=dicomwrite(X,′E:\\ctdata\\rice.dcm′,info); %轉換為DICOM格式,圖像信息為指定的info
此時結構st.SuspectAttribute={′(0028,0100)′ ′(0028,0101)′ ′(0028,0102)′},說明數據類型與指定的圖像信息不一致,故此只要轉換成對應的數據類型即可。此外dicomwrite()還提供了多個參數供選擇。可指定的參數如表1所示。
3實例分析
3.1刪除文本
本示例演示DICOM圖像的閱讀及寫入函數,同時演示如何進行簡單的圖像處理操作。一般文本在圖像中對應白色像素,即為最大像素值。只要將所有最大像素值設置成最小像素值即可刪除文本(圖2)。
本實例代碼如下:
I=dicomread(′CT-MONO2-16-ankle.dcm′); %讀入DICOM文件
imshow(I,′DisplayRange′,[]) %如圖2
info=dicominfo(′CT-MONO2-16-ankle.dcm′); %讀入圖像文件信息
siUID=info.SeriesInstanceUID;%獲取圖像的序列實例UID
Imodified=I;%定義一個同維的數據矩陣
maxv=max(I(:));
minv=min(I(:));
Imodified(Imodified == maxv) = minv;
imshow(Imodified)%顯示處理過的圖像
uid = dicomuid; %產生一個新的UID
info.SeriesInstanceUID = uid;
dicomwrite(Imodified,′ankle_newseries.dcm′,info);
3.2Level set圖像分割
在醫學圖像分割研究中,基于level set技術的活動輪廓模型正引人注目。本實例在MATLAB環境中,實現了Chan和Vese[7]提出的無梯度的活動輪廓模型,并應用在醫學圖像分割之中。
C-V分割方法的基本原理如下:設定義域為Ω的圖像u0被閉合邊界C劃分為目標O (C的內部) 和背景B (C的外部)兩個同質區域。兩個區域的平均灰度分別為c1和c2,此時能量函數可看做為外部能量和內部能量之和,即
當閉合邊界C處于兩個同質區域的邊界時,能量達到最小。為了解決曲線的拓撲變化問題, C-V分割法采用了水平集方法,將閉合邊界C嵌入高一維的曲面中,根據初始閉合曲線c0構造一個內正外負的符號距離水平集函數0。這樣就將關于閉合曲線C的能量函數轉換為關于曲面的能量函數,再通過變分技術可以得到關于曲面的偏微分方程模型 ,即
4結束語
實踐證明, MATLAB 軟件功能強大、數據計算能力突出、語言簡潔易讀。使用圖像工具箱中的醫學圖像處理函數,可以方便快捷地實現醫學圖像的讀寫及簡單處理功能。本文用實例證明了在MATLAB環境中可以方便、快速、有效地實現復雜醫學圖像處理算法。同時MATLAB工具箱涉及的專業領域廣泛且功能強大。由于工具箱具有可靠性和開放性, 可以方便地直接加以使用, 也可以將自己的代碼加到工具箱中以改進函數功能。因此,在MATLAB(R2006b)環境下,實現醫學圖像的處理和分析具有很大的應用優勢和價值。
參考文獻:
[1]田捷,包尚聯,周明全.醫學影像處理與分析[M]. 北京: 電子工業出版社, 2003.
[2]張尤賽, 陳福民. DICOM醫學圖像窗口變換的加速算法[J]. 計算機工程與應用,2003,39(13):218-220.
[3]王立功, 劉偉強, 于甬華,等. DICOM 醫學圖像文件格式解析與應用研究[J]. 計算機工程與應用, 2006,42(29):210-212,225.
[4]曾箏,董芳華,陳曉,等.利用MATLAB 實現CT 斷層圖像的三維重建[J]. CT 理論與應用研究,2004,13(2):24-29.
[5]任忠寶,李佳.基于MATLAB的顱面三維重構技術[J]. 計算機工程, 2005,31(24):191-193.
[6]王家文, 李迎軍. MATLAB 7.0 圖形圖像處理[M]. 北京:國防工業出版社,2006.
[7]CHAN T,VESE L.Active contours without edges [J].IEEE Trans Image Process,2001,10(2):266-277.
注:本文中所涉及到的圖表、注解、公式等內容請以PDF格式閱讀原文