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