陜西長(zhǎng)嶺電子科技有限責(zé)任公司產(chǎn)品開發(fā)部 彭葉飛
基于Qt Graphics View框架和OpenGL的雷達(dá)圖像分層的實(shí)現(xiàn)
陜西長(zhǎng)嶺電子科技有限責(zé)任公司產(chǎn)品開發(fā)部彭葉飛
電子技術(shù)的發(fā)展日新月異,對(duì)雷達(dá)顯控終端的要求也越來越高。本文提出一種基于Qt Graphics View框架和OpenGL來實(shí)現(xiàn)雷達(dá)圖像分層的方法,方式簡(jiǎn)單,并具有可移植性,可幫助開發(fā)人員在不同平臺(tái)下快速設(shè)計(jì)高性能、高穩(wěn)定性的雷達(dá)顯控終端。
電子海圖;雷達(dá);圖像分層
在軍事、航海等領(lǐng)域,電子海圖無法顯示動(dòng)態(tài)目標(biāo),雷達(dá)則不能識(shí)別周圍目標(biāo)的屬性,將電子海圖與雷達(dá)信息疊加顯示,才可實(shí)現(xiàn)兩者的優(yōu)勢(shì)互補(bǔ)[1]。隨著電子海圖與雷達(dá)信息數(shù)字化后,電子海圖與雷達(dá)圖像信息的疊加顯示已成為必然趨勢(shì)。將兩者結(jié)合起來使用既可以有效地彌補(bǔ)單獨(dú)使用雷達(dá)/ARPA的局限性[2],又能在航行水域海圖信息的基礎(chǔ)上提供本船、本船周圍的靜態(tài)目標(biāo)與動(dòng)態(tài)目標(biāo)三者之間的位置關(guān)系,大大地提高船舶避碰能力和導(dǎo)航定位精度。
本文提出一種基于Qt Graphics View框架和OpenGL實(shí)現(xiàn)雷達(dá)圖像分層的方法,不僅對(duì)電子海圖與雷達(dá)回波視頻進(jìn)行分層,還實(shí)現(xiàn)了對(duì)雷達(dá)二次信息、ARPA、AIS及尾跡等信息的分層,實(shí)現(xiàn)方式簡(jiǎn)單,能極大的提高雷達(dá)終端顯示系統(tǒng)的開發(fā)效率。
Qt的Graphics View框架使用MVC模式,適合對(duì)大量2D圖元進(jìn)行管理。在Graphics View框架中,場(chǎng)景(Scene)儲(chǔ)存了圖形數(shù)據(jù),它通過視圖(View)以多種形式表現(xiàn),每個(gè)圖元(Item)可以單獨(dú)進(jìn)行控制。Qt的Graphics View框架中包括三個(gè)主要的類:QGraphicsScene、QGraphicsView和QGraphicsItem,分別是場(chǎng)景、視圖和圖元。一個(gè)場(chǎng)景可以通過多個(gè)視圖表現(xiàn),一個(gè)場(chǎng)景可以包括多個(gè)幾何圖元[3],每個(gè)圖元可單獨(dú)更新。
OpenGL (Open Graphics Library)是圖形硬件的一個(gè)軟件接口,也是該領(lǐng)域的工業(yè)標(biāo)準(zhǔn)。OpenGL是基于圖形處理器的軟件接口,在OpenGL硬件方式實(shí)現(xiàn)下,OpenGL API被傳送給硬件驅(qū)動(dòng)程序,與圖形處理器直接交互,可以實(shí)現(xiàn)復(fù)雜的計(jì)算機(jī)圖形效果[4]。
2.1電子海圖層
目前很多已裝備雷達(dá)都是使用硬件板卡對(duì)電子海圖和雷達(dá)回波視頻進(jìn)行“硬疊加”或是利用可編程GPU著色器實(shí)現(xiàn)“軟疊加”[5]?!坝帛B加”系統(tǒng)開發(fā)難度高,設(shè)備的成本及維護(hù)費(fèi)用大;GPU著色器“軟疊加”雖然具有一定的優(yōu)勢(shì),但其受限于GPU性能,在實(shí)時(shí)嵌入式操作系統(tǒng)下有很大的局限性。
利用Qt Graphics View框架很容易實(shí)現(xiàn)電子海圖的疊加:只需繼承QGraphicsScene類,并實(shí)現(xiàn)其drawBackground函數(shù),在該函數(shù)里調(diào)用QPainter的setBrush函數(shù)將根據(jù)需要顯示的海圖設(shè)置成背景畫刷,然后調(diào)用QPainter的drawRect函數(shù)將其顯示,如圖1中1所示。當(dāng)雷達(dá)由于量程或者艦艇地理位置變化需要更新海圖時(shí),只需要將得到的海圖更新成畫刷即可。由于本文所述系統(tǒng)主要用于雷達(dá)觀察,目的是提高船舶避碰能力和導(dǎo)航定位精度,所以對(duì)于海圖只是簡(jiǎn)單的疊加顯示。
2.2雷達(dá)回波視頻層
現(xiàn)在大部分的導(dǎo)航、搜索雷達(dá)仍使用旋轉(zhuǎn)天線[5],當(dāng)雷達(dá)視頻被數(shù)字化采樣后,雷達(dá)視頻形成一組極坐標(biāo)數(shù)據(jù)包(包含方位及其距離單元各點(diǎn)對(duì)應(yīng)的數(shù)據(jù))。將視頻數(shù)據(jù)按方位形成一組二維數(shù)組,并上傳GPU形成紋理,紋理內(nèi)各紋理單元數(shù)據(jù)與數(shù)組內(nèi)數(shù)據(jù)一一對(duì)應(yīng)。當(dāng)實(shí)時(shí)更新視頻數(shù)據(jù)時(shí),只需要更新紋理內(nèi)相應(yīng)部分,大大減少了系統(tǒng)開銷。
使用紋理存儲(chǔ)器儲(chǔ)存雷達(dá)視頻數(shù)據(jù)可以方便的使用著色器程序?qū)σ曨l數(shù)據(jù)進(jìn)行處理,系統(tǒng)的開銷只是在實(shí)時(shí)更新數(shù)據(jù)并上傳GPU時(shí)產(chǎn)生的,可以根據(jù)計(jì)算機(jī)平臺(tái)選擇適當(dāng)?shù)纳蟼鞣绞揭蕴岣咝阅堋?/p>
Qt Graphics View框架提供了對(duì)OpenGL的支持,利用OpenGL可對(duì)回波紋理實(shí)時(shí)更新并利用著色器程序進(jìn)行坐標(biāo)掃描變換和余輝處理[5],,只需在使用OpenGL繪制時(shí)打開混合效果,就可以完美的使雷達(dá)回波與電子海圖進(jìn)行疊加,極大的提高了顯示效果。為了便于觀察雷達(dá)回波,使用了紅色作為雷達(dá)回波視頻顏色。如圖1中2所示。
具體實(shí)現(xiàn)如下:在上述drawBackground函數(shù)中首先調(diào)用QPainter的beginNativePainting函數(shù)以調(diào)用標(biāo)準(zhǔn)OpenGL函數(shù),先打開混合功能并綁定著色器程序,再進(jìn)行四邊形圖元繪制,繪制過程中進(jìn)行雷達(dá)視頻回波紋理映射,即完成了雷達(dá)回波的顯示。
2.3雷達(dá)二次信息層
圖1 雷達(dá)圖像分層示意圖
雷達(dá)二次信息(包括距標(biāo)圈、電子方位線、艇艏線、測(cè)距線、掃描線等)是觀察雷達(dá)回波視頻的重要輔助手段之一。將雷達(dá)二次信息設(shè)計(jì)為QGraphicsItem圖元狀態(tài)機(jī),可對(duì)各信息獨(dú)立控制;對(duì)圖元使用透明背景,可方便與電子海圖和雷達(dá)回波視頻進(jìn)行疊加。只在二次信息有變化時(shí)才更新圖元,減少了不必要的重繪,大大減少了對(duì)系統(tǒng)資源的占用。如圖1中3所示。
2.4 ARPA、AIS信息層
由于ARPA(Automatic Radar Plotting Aid,自動(dòng)雷達(dá)標(biāo)繪儀)以及AIS(AutoMatic Identification System,船舶自動(dòng)識(shí)別系統(tǒng))提供的都是獨(dú)立的目標(biāo)信息,而Qt Graphics View框架適合對(duì)大量2D圖元進(jìn)行管理。只需按照ARPA及AIS標(biāo)準(zhǔn)繼承QGraphicsItem類,設(shè)計(jì)并建立圖元添加至QGraphicsScene場(chǎng)景,便可利用場(chǎng)景方便對(duì)每個(gè)圖元獨(dú)立進(jìn)行更新繪制和管理。如圖1中4所示。
2.5尾跡層
尾跡是雷達(dá)目標(biāo)檢測(cè)和導(dǎo)航避碰的重要輔助手段之一,利用OpenGL著色器程序?qū)ξ槽E數(shù)據(jù)生成的紋理與回波紋理進(jìn)行混合處理,即可完成尾跡的疊加顯示。如圖1中5、6所示。
利用Qt Graphics View框架和OpenGL實(shí)現(xiàn)的雷達(dá)圖像分層方法,不僅可以為開發(fā)者提供高效、便捷的方法,而且在實(shí)現(xiàn)高穩(wěn)定性、高可靠性和強(qiáng)實(shí)用性雷達(dá)顯示控制終端方面具有很大的針對(duì)性。由于Qt及OpenGL都很好的支持跨平臺(tái)編程。本文提出的方法在Windows XP、linux(Ubuntu)及Vxworks6.8下都得到了很好的驗(yàn)證。
[1]劉毅,索繼東,曹蘭蘭.基于GDI+的電子海圖與雷達(dá)圖像的疊加顯示[J].航海技術(shù),2009(1):43-45.
[2]Donderi D C,F(xiàn)adden M S.A Single marine overlay display is more effieient than separate chart and radar displays.Elsevier eomputer science,2003(24):147-155.
[3]蔡志明,盧傳富,李立夏等.精通Qt4編程(第2版)[M].電子工業(yè)出版社,2011.
[4]Dave shreiner,The Khronos OpenGL ARB Working Group.OpenGL Programming Guide[M].Boston:Addison-Wesley Professional,2009.
[5]張輝,孫立國,李世丹,王德生,等.基于可編程顯卡的信息化雷達(dá)終端顯示系統(tǒng)[J].信息與電子工程,2010,1672-2892(2010)06-0652-04.
彭葉飛(1983-),男,山西大同人,西安電子科技大學(xué)電子工程本科生,從事雷達(dá)顯控終端軟件設(shè)計(jì)。