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