馬文忠 王炳石 陳國華
(廣東藥學(xué)院醫(yī)藥信息工程學(xué)院)
基于Imebra醫(yī)學(xué)影像處理系統(tǒng)的設(shè)計(jì)*
馬文忠 王炳石 陳國華
(廣東藥學(xué)院醫(yī)藥信息工程學(xué)院)
基于對DICOM協(xié)議的解析和數(shù)字圖像本身的處理,介紹了一種新的框架,提出使用Imebra庫處理底層的DICOM文件結(jié)構(gòu),結(jié)合其它數(shù)字圖像處理和顯示技術(shù),進(jìn)行醫(yī)學(xué)圖像處理,并介紹了如何設(shè)計(jì)一個管道使庫協(xié)同工作,最后通過一個具體的演示程序展示了該管道的工作機(jī)制。
醫(yī)學(xué)圖像處理;Imebra庫;DICOM標(biāo)準(zhǔn);Cimg庫;Gdiplus
自從德國科學(xué)家倫琴在1895年發(fā)明X射線以來,計(jì)算機(jī)斷層成像(computed tomography,CT)、核磁共振成像(magnetic resonance imaging,MRI)、計(jì)算機(jī)X線成像(computed radiography,CR)、B超、電子內(nèi)窺鏡等現(xiàn)代醫(yī)學(xué)影像設(shè)備先后出現(xiàn),使傳統(tǒng)的醫(yī)學(xué)診斷方法發(fā)生了根本性的變化。隨著醫(yī)學(xué)成像技術(shù)的發(fā)展,以及計(jì)算機(jī)和通訊技術(shù)與醫(yī)學(xué)影像科學(xué)的相互滲透,使醫(yī)學(xué)影像技術(shù)在現(xiàn)代醫(yī)學(xué)診斷中的作用越來越重要。在1997年第83屆北美(美國芝加哥)放射學(xué)會年會上不少學(xué)者甚至感嘆“Image is everything.”(影像就是一切)。
醫(yī)學(xué)影像處理與分析是在計(jì)算機(jī)技術(shù)、物理學(xué)、醫(yī)學(xué)等學(xué)科基礎(chǔ)上發(fā)展起來的,可以輔助醫(yī)生進(jìn)行更好、更準(zhǔn)確的診斷。隨著現(xiàn)代計(jì)算機(jī)科學(xué)技術(shù)的發(fā)展,醫(yī)學(xué)影像處理與分析受到越來越多的重視,現(xiàn)已成為一門新興、發(fā)展迅速的交叉科學(xué)。
醫(yī)學(xué)影像處理系統(tǒng)是臨床醫(yī)學(xué)、醫(yī)學(xué)影像學(xué)、數(shù)字圖像技術(shù)與計(jì)算機(jī)技術(shù)、網(wǎng)絡(luò)通訊技術(shù)相結(jié)合的產(chǎn)物[1,7]。它將醫(yī)學(xué)影像資料轉(zhuǎn)化為計(jì)算機(jī)能識別處理的數(shù)字形式,通過計(jì)算機(jī)及網(wǎng)絡(luò)通訊設(shè)備,完成對醫(yī)學(xué)影像信息及其相應(yīng)信息資料的采集、存儲、處理及傳輸?shù)裙δ埽贯t(yī)學(xué)信息資源共享,并得到充分利用。醫(yī)學(xué)影像處理系統(tǒng)被認(rèn)為是多媒體電子病案管理系統(tǒng)的重要組成部分。它使臨床醫(yī)師能迅速、準(zhǔn)確獲得所需要的醫(yī)學(xué)影像信息及其相關(guān)的醫(yī)學(xué)影像診斷報(bào)告、病歷資料、病情記錄、臨床檢查(檢驗(yàn))報(bào)告、治療記錄等信息,以及查詢與該醫(yī)學(xué)影像相關(guān)的多種影像設(shè)備的圖像信息,以便對醫(yī)學(xué)影像作全面綜合分析,制定出明確的診斷報(bào)告和擬定恰當(dāng)?shù)闹委煼桨浮?/p>
醫(yī)學(xué)影像處理與分析的研究范圍非常廣,需要多學(xué)科的交叉,其中一個最基礎(chǔ)的問題是醫(yī)學(xué)影像數(shù)據(jù)的存儲、交換、提取和顯示,這也是醫(yī)學(xué)數(shù)字影像和通信標(biāo)準(zhǔn)(digital imaging and communications in medicine,DICOM)協(xié)議設(shè)計(jì)的初衷。與DICOM有關(guān)的開源程序庫很多,其中OFFIS的DCMTK (DICOM ToolKit)[8]可能是最有名者之一,基本能夠處理有關(guān)DICOM的各方面問題,從圖像處理、網(wǎng)絡(luò)通信到圖像數(shù)據(jù)庫服務(wù)等,幾乎無所不包;VTK[2-3,12]中雖然也有DICOM文件接口,但VTK側(cè)重于圖像可視化處理;Imebra[4]是個小巧精致的開源DICOM圖像處理程序庫,主要用來解析DICOM格式的文件,側(cè)重于底層存儲和數(shù)據(jù)交換方面的處理,也包括一些其它的輔助功能,主要特征包括:
? 多平臺:支持各種主要操作系統(tǒng);
? 自包含:只使用標(biāo)準(zhǔn)C語言庫和標(biāo)準(zhǔn)模板庫,不借助外部的函數(shù)庫;
? DICOM文件解釋和創(chuàng)建;
? 圖像文件壓縮與解壓;
? 彩色空間轉(zhuǎn)換;
? 支持嵌入數(shù)據(jù)集(即序列數(shù)據(jù)元素)。
本文主要介紹使用DICOM圖像庫Imebra,結(jié)合其它顯示和處理庫,進(jìn)行醫(yī)學(xué)圖像處理系統(tǒng)的設(shè)計(jì)。
DICOM標(biāo)準(zhǔn)早已獲得了與醫(yī)學(xué)影像有關(guān)的各個領(lǐng)域的研究和開發(fā)人員的廣泛認(rèn)同。DICOM包括了醫(yī)學(xué)的數(shù)字成像和通訊兩個方面[6-7,9-10]。自20世紀(jì)70年代以來,各種醫(yī)學(xué)成像技術(shù)得到了迅猛發(fā)展,幾乎每個醫(yī)學(xué)成像設(shè)備廠商都研制了具有自己獨(dú)自特色的圖像格式,這使得不同廠商之間的圖像信息難于交換。隨著計(jì)算機(jī)網(wǎng)絡(luò)的普及及其在醫(yī)學(xué)上的應(yīng)用,在不同廠商生產(chǎn)的設(shè)備之間交換圖像和相關(guān)的信息需求日趨迫切,而缺乏統(tǒng)一的標(biāo)準(zhǔn)成為圖像交換的主要障礙。為此,美國放射學(xué)院(ACR)和國家電氣制造商協(xié)會(NEMA)在1983組成一個聯(lián)合委員會發(fā)起制定了一個公共的標(biāo)準(zhǔn),主要目的是有助于開發(fā)和推廣圖像存檔和傳輸系統(tǒng)(picture archiving and communication systems,PACS),并能與其它醫(yī)學(xué)信息系統(tǒng)聯(lián)系。經(jīng)過多年的努力,終于在1996年,ACR-NEMA 委員會發(fā)表了一套新的規(guī)范,命名為DICOM 3.0,并被眾多的廠商及機(jī)構(gòu)接受和采用。此后,DICOM標(biāo)準(zhǔn)不斷吸納各方反饋的有用信息,從不同專業(yè)角度對規(guī)范進(jìn)行擴(kuò)充,1998年推出了修訂版本,目前仍然在不斷的發(fā)展中[17-18]。
DICOM標(biāo)準(zhǔn)的第十部分,描述了圖像發(fā)布的文件格式。該格式是舊NEMA標(biāo)準(zhǔn)的一個擴(kuò)展。對于一個與DICOM標(biāo)準(zhǔn)的第十部分相容的圖像文件,一般稱之為DICOM格式的文件。一個單一的DICOM文件既包括一個頭部信息(其中存貯病人姓名,掃描類型,圖像維數(shù)等信息),又包含圖像數(shù)據(jù)本身(可以是三維信息,雖然多數(shù)情況下每個文件包含一個圖像)。DICOM的圖像數(shù)據(jù)可以是壓縮的,既可以使用有損或無損的JPEG格式進(jìn)行壓縮,也可以使用無損游程編碼格式進(jìn)行壓縮。對醫(yī)院來講,DICOM是接受掃描圖像的最常用標(biāo)準(zhǔn)。
例:一個典型的醫(yī)學(xué)影像文件,MRI.*,大多數(shù)沒有擴(kuò)展名,也可以是.DCM。
數(shù)據(jù)元素是DICOM文件最基本的單元。DICOM數(shù)據(jù)集合就是由DICOM數(shù)據(jù)元素按順序排列組成的,如圖1所示。
DICOM數(shù)據(jù)元素由4個部分組成:標(biāo)簽、VR(值表示方法)、數(shù)據(jù)長度和數(shù)據(jù)域。DICOM數(shù)據(jù)集合和DICOM數(shù)據(jù)元素的關(guān)系如圖2所示。
圖1 一個DICOM文件的結(jié)構(gòu)
解釋一個DICOM文件的過程首先是分析DICOM文件頭,然后是順序分析每個數(shù)據(jù)元素。其中一個特別重要的數(shù)據(jù)元素是0002:0010,它定義了“Transfer Syntax Unique Identification”,即所謂傳輸句法標(biāo)示。在數(shù)據(jù)集能夠進(jìn)行交換之前,必先將數(shù)據(jù)集編碼確定為字節(jié)流。該“Transfer Syntax UID”不僅報(bào)告了壓縮技術(shù)方面的信息,還報(bào)告了數(shù)據(jù)的字節(jié)順序,即所謂大端和小端的問題。
Imebra的設(shè)計(jì)主要是處理DICOM數(shù)據(jù)結(jié)構(gòu)方面的問題。除了一些與操作系統(tǒng)有關(guān)的底層處理對象之外,其它對象基本與DICOM結(jié)構(gòu)有關(guān)。其中幾個典型的對象包括:
1) 數(shù)據(jù)集對象(dataset)是按組組成的一個DICOM標(biāo)志的集合,對應(yīng)于DICOM數(shù)據(jù)集合。各個組由它的ID表示,它不唯一。例如,如果dataset中嵌入多幅圖像,則其中可有具有相同ID的多個組。實(shí)際上,這只出現(xiàn)在老的DICOM流之中,因?yàn)樾碌腄ICOM流應(yīng)使用“序列”以達(dá)到相同的效果。
存貯在dataset中的信息表示了1或多個相關(guān)DICOM對象的內(nèi)容。例如,它可以包含一個病人的信息及他的一次檢查的圖像。與一個對象有關(guān)的信息可以分布在多個組,dataset可以存取它包含的所有組和標(biāo)簽。例如,對于圖像,圖像本身的屬性存貯在組0x28之中,而像素則存貯在組0x7feo之中。
2) 組對象(group),一個組是一個DICOM標(biāo)簽的集合,各個組有一個數(shù)字ID標(biāo)識。當(dāng)一個組在一個dataset中出現(xiàn)多次時,它可由一個連續(xù)數(shù)字來標(biāo)識。屬于同一個組的標(biāo)簽在DICOM流中存貯在一起。
3) 標(biāo)簽對象(tags),一個標(biāo)簽存貯與DICOM流的單一屬性相關(guān)的一條信息。例如,一個標(biāo)簽可以存貯病人的姓名,而另一個標(biāo)簽則可存貯病人的年齡。各個標(biāo)簽也由一個數(shù)字ID標(biāo)識:在同一組中的標(biāo)簽ID必須唯一。偶對(組ID,標(biāo)簽ID)確定了標(biāo)簽的目標(biāo)。例如,標(biāo)記0010,0010(groupID=0x0010,tagID=0x0010)用于存貯病人的名字,不能用于其它目的。
4) 數(shù)據(jù)對象(data),用來存儲一個單一DICOM標(biāo)簽的數(shù)據(jù)域。
5) 緩沖對象(buffers)。通常,一個DICOM標(biāo)簽只能存貯一條信息,但有時也可以存貯多條信息,當(dāng)標(biāo)簽在數(shù)據(jù)流中不定長度時,就會發(fā)生這種情況。各條信息都存貯在一個緩沖之中,用序號分隔。
6) 數(shù)據(jù)處理者對象(data handlers),一個數(shù)據(jù)處理器與一個緩沖相連接,用于讀、寫其中的數(shù)據(jù)。數(shù)據(jù)處理器可以讀寫多種形式的數(shù)據(jù)(string,number,data,……)。Imebra中各個對象之間的關(guān)系見圖3。
圖2 數(shù)據(jù)集合和數(shù)據(jù)元素的關(guān)系
圖3 Imebra中各對象之間的關(guān)系
通過Imebra讀寫一個DICOM文件或一個JPEG文件,首次需要創(chuàng)建一個流(文件流或內(nèi)存緩沖流),然后創(chuàng)建一個數(shù)據(jù)集對象(dataset),Imebra會自動檢測流的格式。例如,可以使用文件流以“讀”模式打開文件“test.dcm”:
其次再創(chuàng)建一個streamReader對象,它能夠解釋由流所管理的文件內(nèi)容,并從中獲取數(shù)據(jù)。最后創(chuàng)建一個dataSet結(jié)構(gòu),其中包含了文件中定義的DICOM標(biāo)簽。
上述代碼獲取一個指向puntoexe::codecs::Factory的指針,然后由它從指針的流中裝入數(shù)據(jù)。編碼工廠(CodecFactory)會自動檢測數(shù)據(jù)格式,判斷是DICOM文件還是JPEG文件。
Imebra庫用源代碼的方式提供,利用Imebra進(jìn)行醫(yī)學(xué)圖像處理,首先將Imebra庫的源文件加入項(xiàng)目中。Imebra是Puntoexe庫的一部分,所有源碼文件都位于“Puntoexe_library”目錄的子文件夾中。將Imebra庫加到項(xiàng)目中的第一步是將下列目錄中的所有文件加到項(xiàng)目之中:
1) puntoexe_library/imebra/src;
2) puntoexe_library/base/src。
這些目錄中的文件都是cpp源文件。對所有這些Imebra源文件,都應(yīng)該取消使用預(yù)編譯頭。其次編譯器必須支持RTTI。如果在Windows上編譯應(yīng)用程序,應(yīng)定義預(yù)處理符號WIN32,在EVC中為:_WIN32_WCE。這些在項(xiàng)目屬性中定義即可。如果在Windows NT、2000、XP、Vista中編譯應(yīng)用程序,須將預(yù)處理符號_WIN32_WINNT定義為0x0400或更大。
將Imebra庫加入到項(xiàng)目后,初始化一個數(shù)據(jù)集,當(dāng)從一個流中裝入一個數(shù)據(jù)集之后,將會自動設(shè)置使用的字符集列表。一旦數(shù)據(jù)集從流中建立后,應(yīng)即刻檢查tag 0008,0005,它的內(nèi)容將傳遞給字符集列表。下面是利用數(shù)據(jù)集訪問DICOM文件中具體數(shù)據(jù)的幾個主要方法。
3.1 在dataSet中讀或?qū)懸粋€標(biāo)簽中的數(shù)據(jù)
一旦數(shù)據(jù)集被創(chuàng)建或裝入,應(yīng)用程序就可以向或從dataSet的標(biāo)簽中讀或?qū)憯?shù)據(jù)。下面的示例代碼段,用來讀取病人姓名的前2個組成部分,一個病人的姓名可有五個組成部分(lastname,middle name,first name,…),細(xì)節(jié)可參考DICOM標(biāo)準(zhǔn)。
3.2 讀一幅圖像
dataSet提供了一個函數(shù),可以很容易解壓一幅嵌入在dataSet中的圖像。如下示范代碼讀取了嵌入在一個dataSet中第一幅圖像:
注意,一幅圖像應(yīng)經(jīng)模態(tài)VOILUT變換處理,以將它與采集設(shè)備有關(guān)的采樣值轉(zhuǎn)換為有意義的顏色值。下面的代碼對圖像進(jìn)行了模態(tài)VOILUT變換:
進(jìn)一步的處理可能需要將“convertedImage”轉(zhuǎn)換為適合于在屏幕上顯示的圖像。VOILUT變換使用的是dataSet提供的原始圖像灰度值,可能是12位或16位的灰度值,并不適合在窗口系統(tǒng)中顯示。要讓它適合于窗口系統(tǒng),須轉(zhuǎn)換為8位灰度值,例如:
此外,如果需要,也可使用colorTransformsFactory,將它轉(zhuǎn)換為RGB格式的彩色圖像。
3.3 訪問圖像像素
訪問一幅DICOM圖像中的各個具體像素的值,必須使用“圖像數(shù)據(jù)處理器”來進(jìn)行處理。例
最后利用Gdiplus或Cimg[5]等圖像庫將裝換后的圖像繪制出來并進(jìn)行各種必要的操作處理,做出的示例程序如圖4所示。
圖4 利用Imebra結(jié)合Gdiplus創(chuàng)建的示例應(yīng)用程序
DICOM已成為醫(yī)院信息系統(tǒng)中集成數(shù)字影像系統(tǒng)的一個不可或缺的組成部分[13-17]。然而“DICOM”本身并不能確保在所有醫(yī)院信息系統(tǒng)的集成中能夠“即插即用”,而需要將DICOM提供的各個部分的解決方案加以組合。一個DICOM文件的主要部分是其中嵌入的影像,而醫(yī)學(xué)影像的目標(biāo)是幫助醫(yī)生進(jìn)行診斷,因此醫(yī)學(xué)影像處理是DICOM應(yīng)用的主要內(nèi)容。雖然當(dāng)今有多種開源的DICOM庫可供使用,但尚無一個處于絕對領(lǐng)先地位。本文介紹了一種新的解決方案,能給整個DICOM社區(qū)帶來一些新的促進(jìn)力量,它既易于使用,同時在很多方面也有非常強(qiáng)大的功能,在將來定能獲得廣泛關(guān)注。
[1] ACR-NEMA DICOM Pages: http://medical.nema.org/ DICOM.
[2] VTK Home: http://public.kitware.com/VTK.
[3] ITK Home: http://www.itk.org.
[4] Imebra Library Home site: http://www.puntoexe.com.
[5] Cimg Library Home site: http://cimg.sourceforge.net/index. shtml.
[6] DCKTK Questions: http://forum.dcmtk.org/faq.
[7] NEMA. Digital Imaging and Communication in Medicine (DICOM)[M], 2004.
[8] OFFIS web site: http://www.offis.uni-oldenburg.de/projekte/ dicom/dicom_main_e.html.
[9] Oleg S. Pianykh. Digital Imaging and Communications in Medicine (DICOM): A Practical Introduction and Survival Guide[M]. Springer, 2008.
[10] Herman Oosterwijk. DICOM Basics[M]. 2nd Edition. OTech Inc. 2002.
[11] Korner, M, Weber, CH, Wirth, S, Pfeifer, KJ, Reiser, MF, Treitl, M. Advances in Digital Radiography: Physical Principles and System Overview[J]. RadioGraphics 2007, 27: 675-686.
[12] Will Schroeder ,Ken Martin, Bill Lorensen.The Visualization Toolkit: An Object-Oriented Approach to 3D Graphics[M], 2nd ed., Prentice-Hall, Old Tappan, N.J., 1998.
[13] C Upson, T A Faulhaber Jr, D Kamins et al.The Application Visualization System: A Computational Environment for Scientific Visualization[J], IEEE Computer Graphics and Applications, 1989, 40(9): 30-42.
[14] Slichter, Charles P. Principles of Magnetic Resonance[M], 3rd edition. Springer-Verlag, Heidelberg. 1996.
[15] Nitz, W. R. MR Imaging: Acronyms and Clinical Applications[J]. European Radiology, 1999, 9:979–997.
[16] Davis, Andrew W. DICOM: a standard for medical image communication. Advanced Imaging, 1997,12(2): 36-38.
[17] National Electrical Manufacturer Association. Digital Imaging and Communication in Medicine(DICOM)[M],1999.
[18] 賈克斌,沈波.實(shí)現(xiàn)醫(yī)學(xué)影像存檔和傳輸系統(tǒng)中的若干關(guān)鍵技術(shù)[J].中國圖像圖形學(xué)報(bào),2000,5(A) (7):539-544.
Medical Image Processing with Imbra
Ma Wenzhong Wang Bingshi Chen Guohua
(School of Med-Info Engineering, Guangdong Pharmaceutical University)
Medical image processing is important in hospital solutions and DICOM applications. Although there are many open source libraries for DICOM today, there are still no a dominant one adopted by most applications. This paper introduces a new framework that is easy to use and yet powerful in many aspects. It is proposed to combine the Imebra Library with the famous CImg Library to do medical image processing. After a brief introduction to the functions of both Libraries, this paper has presented how to design a pipeline to make the two libraries work together. A demonstrating system is presented at thelast of the paper to show the works of the pipeline. It is believed that the cooperation of the two libraries provide an excellent solution to medical image processing and will be succeed in the future.
Medical Image Processing; Imebra Library; DICOM Standard; Cimg Library; Gdiplus
馬文忠,男,1992年生,本科生,研究方向:醫(yī)學(xué)智能。
王炳石,男,1992年生,本科生,研究方向:醫(yī)學(xué)智能。
陳國華,男,1961年生,博士,廣東藥學(xué)院醫(yī)藥信息工程學(xué)院教授,研究方向:醫(yī)學(xué)圖像處理,藥物信息學(xué)。E-mail:ghchen2013@yahoo.com