魏延巖
摘要:在嵌入式系統(tǒng)中為了實(shí)現(xiàn)羅盤(pán)刻度在運(yùn)動(dòng)過(guò)程中做到實(shí)時(shí)、反走樣、不扭曲、高速繪制,需要采取各種軟件方法實(shí)現(xiàn),包括采用軟件濾波算法、提取多幅圖像或者高級(jí)可編程圖形處理芯片等。通過(guò)實(shí)踐驗(yàn)證,采用壓縮圖像灰度數(shù)據(jù)的算法將復(fù)雜的算法都在桌面通用系統(tǒng)中實(shí)現(xiàn),而在嵌入式系統(tǒng)中繪制羅盤(pán)時(shí)只需要最為簡(jiǎn)單直接的刻度線(xiàn)上的像素點(diǎn)繪制。該算法適用于沒(méi)有可編程圖形處理芯片的嵌入式處理器平臺(tái)。
關(guān)鍵詞:嵌入式系統(tǒng);壓縮;羅盤(pán)刻度;
引言
羅盤(pán)作為座艙航電系統(tǒng)中最主要的飛行儀表之一,對(duì)于安全飛行是非常重要的,20世紀(jì)50年代,飛機(jī)采用的大多是機(jī)械式、磁電式、機(jī)電伺服式組合儀表,磁羅盤(pán)就是在這個(gè)時(shí)期被廣泛應(yīng)用。
20世紀(jì)80年代中后期,飛機(jī)座艙開(kāi)始采用電子綜合顯示器,采用圖形、數(shù)字等電子顯示符號(hào)模擬機(jī)械式儀表盤(pán),提高了集成度,實(shí)現(xiàn)了綜合顯示。
電子顯示符號(hào)最為電子顯示器最重要的元素,用于產(chǎn)生飛機(jī)狀態(tài)和各種飛行參數(shù)畫(huà)面,例如:主飛行顯示畫(huà)面(PFD)、導(dǎo)航畫(huà)面(ND)、發(fā)動(dòng)機(jī)指示及機(jī)組告警系統(tǒng)(EICAS)。
這些電子顯示符號(hào)對(duì)應(yīng)的圖形在運(yùn)動(dòng)過(guò)程中必須做到平滑旋轉(zhuǎn)、不扭曲變形、不閃爍、不卡頓等高質(zhì)量的顯示效果。由于電子顯示器受到液晶顯示屏分辨率、有效顯示面積、以及生成圖形所采用的圖形處理芯片的限制,針對(duì)不同的硬件平臺(tái)需要采用不同的軟件方法實(shí)現(xiàn)羅盤(pán)的繪制,如采取純軟件算法實(shí)現(xiàn)反走樣刻度線(xiàn)的繪制,采用圖形芯片自帶的硬件反走樣直線(xiàn)再結(jié)合軟件算法改善線(xiàn)段端點(diǎn),以及本文采取的圖像壓縮及解壓縮算法實(shí)現(xiàn)。
一、羅盤(pán)走樣的原因
通常羅盤(pán)是有每10度一根的長(zhǎng)刻度線(xiàn)和每5度一根的短刻度線(xiàn)繪制的。
如果刻度線(xiàn)本身不具備反走樣處理,或者線(xiàn)段具有反走樣,而線(xiàn)段的端點(diǎn)不具備反走樣處理,則在旋轉(zhuǎn)過(guò)程中就會(huì)出現(xiàn)扭曲、抖動(dòng)的現(xiàn)象;而如果繪制速度過(guò)慢則會(huì)導(dǎo)致羅盤(pán)卡頓現(xiàn)象。
二、幾種羅盤(pán)繪制方法對(duì)比
羅盤(pán)反走樣繪制技術(shù)一般有以下幾種方法:
(一)純軟件算法
采用擴(kuò)展的Bresenham算法和使用不同卷積核的多種濾波算法,如著名的Wu算法、以及根據(jù)面積畫(huà)反走樣直線(xiàn)的算法等。這種算法適用于分辨率較低且不帶有圖形硬件加速能力的顯示,因?yàn)槿绻_盤(pán)尺寸越大,線(xiàn)段越粗,采用軟件算法繪制直線(xiàn)的計(jì)算量就越大,從而導(dǎo)致畫(huà)面顯示卡頓,影響判讀。而采用軟件算法的優(yōu)點(diǎn)是繪制的羅盤(pán)反走樣效果好,軟件占用空間小。
(二)硬件加速結(jié)合軟件算法
指采用圖形處理芯片,這類(lèi)芯片具有自帶的硬加加速反走樣直線(xiàn)、多邊形填充等功能,但是之類(lèi)芯片中的硬加加速反走樣直線(xiàn)通常有一個(gè)缺點(diǎn),就是線(xiàn)段的端點(diǎn)不具有反走樣處理,如圖4所示,線(xiàn)段在45度角以下的端點(diǎn)為垂直邊界,45度角以上為水平邊界。
這類(lèi)情況需要采用軟件算法對(duì)其端點(diǎn)進(jìn)行處理,最簡(jiǎn)單的方法是計(jì)算每條線(xiàn)段的法線(xiàn)方向,采用與線(xiàn)段垂直的背景色線(xiàn)段進(jìn)對(duì)其兩個(gè)端點(diǎn)進(jìn)行覆蓋,從而實(shí)現(xiàn)反走樣羅盤(pán)的繪制。這種方法的優(yōu)點(diǎn)是繪制速度快,缺點(diǎn)是必須采用高質(zhì)量的圖形處理芯片,采用保證其硬件加速反走樣直線(xiàn)的顯示效果。
三、本文提出的羅盤(pán)壓縮與顯示算法
本文提到的羅盤(pán)壓縮與顯示是在貼圖繪制方法的基礎(chǔ)上進(jìn)行優(yōu)化的。
首先根據(jù)需要可以通過(guò)PhotoShop等圖形處理軟件繪制一幅0度的全羅盤(pán),提取的灰度數(shù)組設(shè)定為image [pic_wide*pic_wide],確保每條刻度線(xiàn)都是等線(xiàn)寬,且線(xiàn)段兩個(gè)端點(diǎn)根據(jù)需要繪制成反走樣的矩形或圓形。
將每0.25度旋轉(zhuǎn)的40幅羅盤(pán)畫(huà)面的圖像繪制好,也可以通過(guò)VC等軟件采用純軟件反走樣的旋轉(zhuǎn)算法實(shí)現(xiàn)羅盤(pán)的40幅圖像的繪制。
假定分辨率為384×384像素的羅盤(pán),只需要提取第一像素的圖像的灰度值,每幅畫(huà)面占有36864(192×192)個(gè)字節(jié),由于羅盤(pán)畫(huà)面的灰度值只有高4位有效,如果是黑色則低4位為0,如果有灰度則低4位為0xf,對(duì)灰度數(shù)組進(jìn)行壓縮處理,壓縮采取背景色和最高灰度色壓縮,即當(dāng)檢測(cè)到圖像對(duì)應(yīng)的灰度數(shù)組中的像素為背景色時(shí),開(kāi)始記錄有多少個(gè)連續(xù)的像素為背景色,以?xún)蓚€(gè)字節(jié)代表,設(shè)置字頭為0xC0,字頭的低6位和第二個(gè)字節(jié)代表背景色像素?cái)?shù)量;當(dāng)檢測(cè)到圖像對(duì)應(yīng)的灰度數(shù)組中的像素為最高灰度值0xff時(shí),用一個(gè)字節(jié)代表,設(shè)置字頭為0x80,第二個(gè)字節(jié)代表最高灰度值像素?cái)?shù)量;其它灰度值采用單個(gè)字節(jié)表示,設(shè)置字頭為字節(jié)的高2位為0。
根據(jù)壓縮算法得到的40幅畫(huà)面壓縮后占用的存儲(chǔ)空間相當(dāng)于壓縮前2幅畫(huà)面所占用的空間。非常有效的節(jié)省了旋轉(zhuǎn)圖像所占用的內(nèi)存空間。
在繪制羅盤(pán)時(shí)只需要采用與壓縮方式相反的方法解壓縮數(shù)據(jù),并可根據(jù)需要選擇指定顏色的羅盤(pán)刻度線(xiàn),如白色或藍(lán)色,另外,還可以實(shí)現(xiàn)與背景色融合。采用這種方法繪制的羅盤(pán)反走樣效果好,且不需要復(fù)制算法計(jì)算,且可以只繪制刻度線(xiàn)而不繪制背景色,每次還可以同時(shí)繪制四個(gè)象限的相同點(diǎn),在嵌入式系統(tǒng)中采用這種方式繪制羅盤(pán)最為簡(jiǎn)潔快速,對(duì)硬件要求最低,不需要圖形處理器硬件加速。
四、結(jié)束語(yǔ)
采用圖像壓縮技術(shù)繪制羅盤(pán)刻度,和其他算法相比較,更簡(jiǎn)單直接,將復(fù)雜的工作都在前期完成,而真正繪制羅盤(pán)時(shí)既簡(jiǎn)單又快速,尤其適用于嵌入式平臺(tái)。該方法已經(jīng)在Windows環(huán)境下的VC軟件以及嵌入式圖形生成環(huán)境下實(shí)踐,通過(guò)測(cè)試,反走樣效果好,繪制算法簡(jiǎn)單,具有快速的處理速度,從而實(shí)現(xiàn)反走樣羅盤(pán)刻度的快速繪制。該圖像壓縮方法也適用于指針、刻度的旋轉(zhuǎn)。
參考文獻(xiàn):
[1]張波,張煥春,經(jīng)亞枝?;贒SP和FPGA的座艙圖形顯示系統(tǒng)關(guān)鍵技術(shù)研究。南京:南京航空航天大學(xué),2003。
[2]杜晨輝。提高飛機(jī)座艙顯示系統(tǒng)羅盤(pán)畫(huà)面顯示質(zhì)量的研究。南京:南京航空航天大學(xué),2002.1。
[3](美)羅杰斯(Rogcrs,D.F.)著;石教英等譯。計(jì)算機(jī)圖形學(xué)的算法基礎(chǔ)(Procedural Elements for Computer Graphics)。北京;機(jī)械工業(yè)出版社。2002.1。
[4]孫家廣 等編著。計(jì)算機(jī)圖形學(xué)(第三版)。北京:清華大學(xué)出版社,2002。
[5]何明耘,張素,戴冠中,徐乃平。虛擬座艙中平顯功能實(shí)現(xiàn)算法研究。西安:西北工業(yè)大學(xué),2001。