基于嵌入式Linux的B超圖像打印的實(shí)現
引言
B模式掃描超聲診斷儀(簡(jiǎn)稱(chēng)B超)是一種醫學(xué)影像設備,其掃描結果是一幅多灰度級(通常有256級以上)的圖像。 B超圖像作為重要的診斷依據,常需輸出其硬拷貝,因此任何B超儀都需配備圖像打印輸出接口。此類(lèi)接口形式多樣,適合于不同的圖像打印設備。
近年來(lái)由于普及的需要,小型B超越來(lái)越多地出現在市場(chǎng)上。這種設備的特點(diǎn)是體積小,售價(jià)低,但是功能比較單一,常用于空間限制或者對成本比較敏感的場(chǎng)合。目前多數小型B超基于8位微處理器,限于其處理器的有限處理能力,只配備標準視頻(Video)接口作為其圖像輸出通道,因此只能使用視頻打印機(Video Printer)作為圖像輸出設備。這種配置帶來(lái)若干缺點(diǎn),首先視頻打印機通常價(jià)格昂貴而且必須使用專(zhuān)用打印紙,打印成本較高,這與小型B超的低成本訴求相矛盾;其次數字形式的圖像信號必須經(jīng)過(guò)一次D/A轉換才能變換成模擬的[1]視頻信號,這不僅增加了電路的復雜性而且容易引起圖像質(zhì)量下降。也有一些小型B超儀基于個(gè)人計算機(Personal Computer, PC)和Windows平臺,在這一平臺上使用普通的噴墨或者激光打印機輸出超聲圖像,上述問(wèn)題得以解決[1][2]。但是這一平臺價(jià)格高,體積和功耗都較大,而且穩定性不夠好,對于小型B超并不是一個(gè)理想的選擇。
對于小型B超而言,比較理想的方案是在嵌入式平臺上實(shí)現普通噴墨或者激光打印機圖像輸出。近年出現的32位[3]及64位嵌入式微處理器集成度高,處理速度快,接口豐富,為這一方案的實(shí)現提供了可能。由于32位和64位嵌入式處理器適合使用Linux和Windows CE等操作系統,因此相對8位處理器來(lái)說(shuō)軟件開(kāi)發(fā)也比較簡(jiǎn)單。其中由于Linux是一種開(kāi)源和免費的系統,因此所受到的支持特別多,資源很豐富,尤其適合于本文所涉及的應用對象。
本文實(shí)現了一種基于32位嵌入式微處理器ARM9200的B超圖像打印方案,使用嵌入式Linux作為其操作系統,在HP DeskJet和Epson Stylus Photo系列噴墨打印機上成功打印出256灰度級的B超圖像。
1、Linux下的打印方案
基于PC的Linux已經(jīng)有了多種相當完善的打印方案,不僅可以在多種系列的普通噴墨或激光打印機上輸出照片質(zhì)量的彩色和黑白圖像,而且支持多打印任務(wù)處理和多打印機控制。圖1是廣泛使用的基于PC Linux的打印方案的一個(gè)例子,在這個(gè)方案中,CUPS(Common UNIX Printing System)[4]是其核心,多任務(wù)管理由CUPS中的“打印管理”模塊擔任,打印格式轉換則由其濾波器(Filter)[5]系統完成。CUPS將Linux傳送過(guò)來(lái)的各種格式的文檔通過(guò)適當的濾波器轉換成PS (PostScript)語(yǔ)言 [6]代碼,這一代碼可以通過(guò)Backend直接輸出至支持PS
圖1 Linux下的打印方案
語(yǔ)言的打印機,也可以再通過(guò)調用GhostScript程序轉換成非PS語(yǔ)言打印機所使用的各種頁(yè)面描述語(yǔ)言(Page Description Language, PDL)[7], 然后經(jīng)Backend輸出。特別要注意的是除了這兩種Filters,CUPS還具有不經(jīng)過(guò)GhostScript程序而將圖像文件(image)直接轉換成非PS打印語(yǔ)言的Filter。由于歷史的原因,基于Linux的幾乎所有打印方案都支持PS語(yǔ)言,PS打印機接收到這種文件后,利用其內嵌的光柵圖像處理器RIP(Raster Image Processor)[8]將PS描述轉換成指令驅動(dòng)打印機工作。由于版權費的問(wèn)題,近年來(lái)支持非PS語(yǔ)言的打印機大量出現,而且漸漸成為普通噴墨和激光打印機的主流。這些非PS語(yǔ)言有HP公司的PCL(Print Control Language)[9],Epson公司的ESC/P[10]等。GhostScript[6]是一種軟件RIP,用于將PS文件轉換成非PS設備支持的PDL格式。Foomatic是用戶(hù)統一界面,用戶(hù)通過(guò)它來(lái)配置打印機參數與驅動(dòng),只需選擇打印機型號而無(wú)需關(guān)心配置的具體過(guò)程。
這是一個(gè)完備的方案,功能強大,操作簡(jiǎn)便,支持的打印機豐富,完全滿(mǎn)足B超圖像輸出的要求。但由于嵌入式平臺資源有限,難以支持這樣一個(gè)完備的系統,所以我們根據需要對其進(jìn)行適當剪裁。
2、基于嵌入式Linux的小型B超儀的打印方案和實(shí)現
本文所關(guān)心的小型B超儀的硬件平臺是一個(gè)32位的嵌入式微處理器,操作系統采用嵌入式Linux, 在這個(gè)平臺上要完成的工作有超聲圖像的傳送,顯示,打印,人機界面,整機控制,還有非易失性存貯,如CF卡(Compact Flash Card)、SD卡(Secure Digital Memory Card) 存貯等。如圖2所示,打印控制只是其中的一個(gè)功能。打印機輸出的對象是256256像素,256灰度級的黑白圖像。為了重現這些灰度級,圖像的每個(gè)像素(pixel)需要由1616個(gè)墨點(diǎn)(dot)來(lái)表達,因此輸出圖像的橫向和縱向的墨點(diǎn)數將是25616=4096dots。如果輸出圖像的尺寸為10cm10cm(3.94”3.94”),可以算出打印機的分辨率需要達到4096/3.94=1040dpi(dots per inch)。為此,我們選用分辨率為1200dpi的HP DeskJet和1440dpi Epson Photo系列噴墨打印機,這兩個(gè)系列的打印機使用USB接口,分別支持PCL語(yǔ)言和ESC/P語(yǔ)言。它們性能優(yōu)良,都可以輸出照片質(zhì)量的圖像, 而且便宜實(shí)用,有A4幅面的便攜式型號可供選用,非常適合小型B超。
圖2 基于嵌入式Linux的小型B超儀控制系統
從圖1可知,利用CUPS把圖像文件轉換成所選用打印機支持的頁(yè)面描述語(yǔ)言有三條轉換路徑,一條是通過(guò)ImagetoPS, PStoRaster和RastertoHP(或RastertoEpson)三個(gè)過(guò)濾器;第二條是通過(guò)ImagetoRaster和RastertoHP(或RastertoEpson)兩個(gè)過(guò)濾器;第三條是先通過(guò)Imagetops過(guò)濾器把圖像文件轉換成PS文件,然后再調用GhostScript程序把PS文件轉換成PCL或ESC/P文件。在這三條路徑中,第一條和第三條都先把圖像文件轉換成PS格式,然后再作進(jìn)一步的變換,體現了Linux的傳統要求,但是第一條路徑用到了三個(gè)過(guò)濾器,第三條路徑需要調用一個(gè)龐大的GhostScript程序。相比之下第二條路徑最為簡(jiǎn)捷而節省資源,所以本文選用這一條路徑,Backend過(guò)濾器選用USB以配合所選打印機的接口。圖1中的虛線(xiàn)表示了本文選用的實(shí)現路徑,而其中的灰色框代表了為本系統用到的過(guò)濾器。
由于B超的打印任務(wù)單一,通常并沒(méi)有多任務(wù)的要求,而且也不可能需要多臺打印機同時(shí)工作,所以本文中舍棄了Foomatic和CUPS中的管理模塊,將打印管理納入整機控制中。整機控制的人機界面采用MiniGUI[11],打印控制屬于其中的一個(gè)功能控件,用來(lái)進(jìn)行打印機和輸出文件選擇以及啟??刂?。其程序流程圖如圖3所示:
圖3 本系統程序流程
經(jīng)過(guò)裁減,在編譯代碼的過(guò)程中譯出CUPS過(guò)濾器系統中的ImagetoRaster、RastertoHP和RastertoEpson以及Backend中的USB傳輸的可執行代碼。在編譯的過(guò)程可以發(fā)現,將整個(gè)CUPS,GhostScript和Foomatic源代碼編譯完成后,需占用的空間有30M之多,而按照本文的方案經(jīng)裁減編譯后,可執行代碼總共占用不到600k字節,這就大大地節省了系統的開(kāi)支。編譯后的代碼移植到本文所使用的控制器平臺后程序運行正常,我們試驗了HP DeskJet 450、Epson Stylus Photo RX510等型號的打印機,圖像打印效果良好。不僅可以打印本文的B超系統采集的B超圖像,而且可以打印載入到本系統中的許多格式的圖像,如bmp、jpeg、png格式等。
3、討論
本文詳細地分析了典型的基于PC的Linux下的完備打印方案,并針對本文的具體應用,對其進(jìn)行適當裁減,實(shí)現了嵌入式 Linux下的B超圖像的圖像打印,有效地解決了小型B超儀使用視頻打印機的高成本耗費問(wèn)題。同時(shí),該方案不僅僅適用于超聲設備中,也適合應用于各種基于嵌入式Linux的移動(dòng)設備。
本文作者創(chuàng )新點(diǎn):目前多數小型B超基于8位微處理器,限于其有限的處理能力,使得控制系統不夠靈活,超聲圖像的打印輸出也只能通過(guò)視頻打印機。本文采用基于32位處理器的嵌入式Linux系統作為小型B超儀的中央控制系統,顯著(zhù)提高了小型B超儀器的性能,并實(shí)現了在該平臺上使用普通打印機的醫學(xué)B超圖像高質(zhì)量打印,解決了必須使用視頻打印機的高成本問(wèn)題。
參考文獻:
[1] 孫應娥,符影杰,王剛,江峰. 基于PC機的線(xiàn)陣B超診斷系統的研究與設計[J]. 電子工程師 , 2002,(10) .
[2] 鄭政,計建軍,李穗,等.一種新型眼科超聲生物顯微鏡[J].上海理工大學(xué)學(xué)報,2005,(06).
[3] 江俊輝.基于A(yíng)RM的嵌入式系統硬件設計.微計算機信息[J].2005,7-2:120-122
[4] Michael Sweet. An Overview of the Common UNIX Printing System,Easy Software Products. http://www.cups.org/documentation.php
[5] Kurt Pfeifle.Dissecting The CUPS Filtering System: A Network Postscript RIP For non-PS Printers,Workshop at Linux-Kongress 2002 in Cologne, Germany
[6] 張軍,杜鵬.PostScript 技術(shù)研究與應用,電子技術(shù)[J],2003,(01)
[7] GDI方式與頁(yè)面描述語(yǔ)言的比較[J]. 微電腦世界 , 2002,(06)
[8] 張占超. RIP是如何工作的[J]. 電子出版 , 2002,(03)
[9] 打印機語(yǔ)言PCL與PostScript的比較[J]. 微電腦世界 , 2001,(24) .
[10] 朱炬. 用ESC/P指令控制EPSON噴墨打印機[J]. 電子工程師 , 2006,(07)
[11] 章曉燕, 馬琪. 嵌入式Linux系統的GUI―MiniGUI[J]. 計算機與現代化 , 2005,(01)
linux操作系統文章專(zhuān)題:linux操作系統詳解(linux不再難懂)
評論