陜西長嶺電子科技有限責任公司產品開發部 彭葉飛
基于Qt Graphics View框架和OpenGL的雷達圖像分層的實現
陜西長嶺電子科技有限責任公司產品開發部彭葉飛
電子技術的發展日新月異,對雷達顯控終端的要求也越來越高。本文提出一種基于Qt Graphics View框架和OpenGL來實現雷達圖像分層的方法,方式簡單,并具有可移植性,可幫助開發人員在不同平臺下快速設計高性能、高穩定性的雷達顯控終端。
電子海圖;雷達;圖像分層
在軍事、航海等領域,電子海圖無法顯示動態目標,雷達則不能識別周圍目標的屬性,將電子海圖與雷達信息疊加顯示,才可實現兩者的優勢互補[1]。隨著電子海圖與雷達信息數字化后,電子海圖與雷達圖像信息的疊加顯示已成為必然趨勢。將兩者結合起來使用既可以有效地彌補單獨使用雷達/ARPA的局限性[2],又能在航行水域海圖信息的基礎上提供本船、本船周圍的靜態目標與動態目標三者之間的位置關系,大大地提高船舶避碰能力和導航定位精度。
本文提出一種基于Qt Graphics View框架和OpenGL實現雷達圖像分層的方法,不僅對電子海圖與雷達回波視頻進行分層,還實現了對雷達二次信息、ARPA、AIS及尾跡等信息的分層,實現方式簡單,能極大的提高雷達終端顯示系統的開發效率。
Qt的Graphics View框架使用MVC模式,適合對大量2D圖元進行管理。在Graphics View框架中,場景(Scene)儲存了圖形數據,它通過視圖(View)以多種形式表現,每個圖元(Item)可以單獨進行控制。Qt的Graphics View框架中包括三個主要的類:QGraphicsScene、QGraphicsView和QGraphicsItem,分別是場景、視圖和圖元。一個場景可以通過多個視圖表現,一個場景可以包括多個幾何圖元[3],每個圖元可單獨更新。
OpenGL (Open Graphics Library)是圖形硬件的一個軟件接口,也是該領域的工業標準。OpenGL是基于圖形處理器的軟件接口,在OpenGL硬件方式實現下,OpenGL API被傳送給硬件驅動程序,與圖形處理器直接交互,可以實現復雜的計算機圖形效果[4]。
2.1電子海圖層
目前很多已裝備雷達都是使用硬件板卡對電子海圖和雷達回波視頻進行“硬疊加”或是利用可編程GPU著色器實現“軟疊加”[5]。“硬疊加”系統開發難度高,設備的成本及維護費用大;GPU著色器“軟疊加”雖然具有一定的優勢,但其受限于GPU性能,在實時嵌入式操作系統下有很大的局限性。
利用Qt Graphics View框架很容易實現電子海圖的疊加:只需繼承QGraphicsScene類,并實現其drawBackground函數,在該函數里調用QPainter的setBrush函數將根據需要顯示的海圖設置成背景畫刷,然后調用QPainter的drawRect函數將其顯示,如圖1中1所示。當雷達由于量程或者艦艇地理位置變化需要更新海圖時,只需要將得到的海圖更新成畫刷即可。由于本文所述系統主要用于雷達觀察,目的是提高船舶避碰能力和導航定位精度,所以對于海圖只是簡單的疊加顯示。
2.2雷達回波視頻層
現在大部分的導航、搜索雷達仍使用旋轉天線[5],當雷達視頻被數字化采樣后,雷達視頻形成一組極坐標數據包(包含方位及其距離單元各點對應的數據)。將視頻數據按方位形成一組二維數組,并上傳GPU形成紋理,紋理內各紋理單元數據與數組內數據一一對應。當實時更新視頻數據時,只需要更新紋理內相應部分,大大減少了系統開銷。
使用紋理存儲器儲存雷達視頻數據可以方便的使用著色器程序對視頻數據進行處理,系統的開銷只是在實時更新數據并上傳GPU時產生的,可以根據計算機平臺選擇適當的上傳方式以提高性能。
Qt Graphics View框架提供了對OpenGL的支持,利用OpenGL可對回波紋理實時更新并利用著色器程序進行坐標掃描變換和余輝處理[5],,只需在使用OpenGL繪制時打開混合效果,就可以完美的使雷達回波與電子海圖進行疊加,極大的提高了顯示效果。為了便于觀察雷達回波,使用了紅色作為雷達回波視頻顏色。如圖1中2所示。
具體實現如下:在上述drawBackground函數中首先調用QPainter的beginNativePainting函數以調用標準OpenGL函數,先打開混合功能并綁定著色器程序,再進行四邊形圖元繪制,繪制過程中進行雷達視頻回波紋理映射,即完成了雷達回波的顯示。
2.3雷達二次信息層

圖1 雷達圖像分層示意圖
雷達二次信息(包括距標圈、電子方位線、艇艏線、測距線、掃描線等)是觀察雷達回波視頻的重要輔助手段之一。將雷達二次信息設計為QGraphicsItem圖元狀態機,可對各信息獨立控制;對圖元使用透明背景,可方便與電子海圖和雷達回波視頻進行疊加。只在二次信息有變化時才更新圖元,減少了不必要的重繪,大大減少了對系統資源的占用。如圖1中3所示。
2.4 ARPA、AIS信息層
由于ARPA(Automatic Radar Plotting Aid,自動雷達標繪儀)以及AIS(AutoMatic Identification System,船舶自動識別系統)提供的都是獨立的目標信息,而Qt Graphics View框架適合對大量2D圖元進行管理。只需按照ARPA及AIS標準繼承QGraphicsItem類,設計并建立圖元添加至QGraphicsScene場景,便可利用場景方便對每個圖元獨立進行更新繪制和管理。如圖1中4所示。
2.5尾跡層
尾跡是雷達目標檢測和導航避碰的重要輔助手段之一,利用OpenGL著色器程序對尾跡數據生成的紋理與回波紋理進行混合處理,即可完成尾跡的疊加顯示。如圖1中5、6所示。
利用Qt Graphics View框架和OpenGL實現的雷達圖像分層方法,不僅可以為開發者提供高效、便捷的方法,而且在實現高穩定性、高可靠性和強實用性雷達顯示控制終端方面具有很大的針對性。由于Qt及OpenGL都很好的支持跨平臺編程。本文提出的方法在Windows XP、linux(Ubuntu)及Vxworks6.8下都得到了很好的驗證。
[1]劉毅,索繼東,曹蘭蘭.基于GDI+的電子海圖與雷達圖像的疊加顯示[J].航海技術,2009(1):43-45.
[2]Donderi D C,Fadden 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].電子工業出版社,2011.
[4]Dave shreiner,The Khronos OpenGL ARB Working Group.OpenGL Programming Guide[M].Boston:Addison-Wesley Professional,2009.
[5]張輝,孫立國,李世丹,王德生,等.基于可編程顯卡的信息化雷達終端顯示系統[J].信息與電子工程,2010,1672-2892(2010)06-0652-04.
彭葉飛(1983-),男,山西大同人,西安電子科技大學電子工程本科生,從事雷達顯控終端軟件設計。