苗振奎
(江蘇自動(dòng)化研究所,江蘇 連云港 222061)
隨著計(jì)算機(jī)技術(shù)、圖像處理技術(shù)以及數(shù)字信號(hào)處理技術(shù)的發(fā)展,利用通用計(jì)算機(jī)進(jìn)行雷達(dá)信息處理和視頻顯示成為一種趨勢(shì)。這種方法不僅可以降低成本而且能夠更加靈活地對(duì)雷達(dá)信息進(jìn)行處理,并且可以滿足雷達(dá)信息多樣化的需求。目前雷達(dá)數(shù)據(jù)的終端顯示雖然都是利用通用微機(jī)顯示,但很多處理都是通過(guò)DSP(digital signal processing)等器件來(lái)實(shí)現(xiàn)的。在DSP 中實(shí)現(xiàn)的優(yōu)點(diǎn)是顯而易見(jiàn)的,它可以實(shí)現(xiàn)信號(hào)的高速處理。但隨著計(jì)算機(jī)硬件技術(shù)的進(jìn)步,利用軟件對(duì)雷達(dá)視頻處理也能滿足實(shí)時(shí)性需求,同時(shí)還能進(jìn)一步降低成本。基于DirectX[1]開(kāi)發(fā)的多媒體程序是運(yùn)行在硬件抽象層上,既可以充分利用系統(tǒng)的硬件加速功能,又能隱藏硬件的設(shè)備特性,通過(guò)編寫(xiě)與設(shè)備無(wú)關(guān)的高效代碼,DirectX程序能以最佳的方式運(yùn)行,并具有效率高和易開(kāi)發(fā)的優(yōu)點(diǎn)[2]。本文提出了一種基于Direct3D的雷達(dá)終端軟件化顯示方法,并在此基礎(chǔ)上用C++語(yǔ)言加以實(shí)現(xiàn)。
目前,基于Windows操作系統(tǒng)下雷達(dá)終端顯示的有2種方式:一種是利用FPGA(field-programmable gate array)或DSP硬件來(lái)實(shí)現(xiàn)的;一種是基于軟件程序開(kāi)發(fā)。后一種選用基于DirectX或OpenGL,其普通做法是先量化雷達(dá)掃描線,每條掃描線分為512個(gè)點(diǎn),逐點(diǎn)填寫(xiě)顏色實(shí)現(xiàn)[3]。這種方式占用計(jì)算機(jī)資源較多,不利于雷達(dá)終端作后續(xù)的信號(hào)處理。本文利用Direct3D渲染三維對(duì)象技術(shù)實(shí)現(xiàn)雷達(dá)PPI(plane position indications)顯示,利用Alpha混合技術(shù)來(lái)實(shí)現(xiàn)雷達(dá)余輝衰減。相對(duì)于前一種方法,占用計(jì)算機(jī)資源較少,能為后續(xù)的目標(biāo)點(diǎn)跡提取,目標(biāo)跟蹤等節(jié)約較多的計(jì)算空間和計(jì)算時(shí)間,滿足雷達(dá)軟件化總體要求。
軟件化顯示技術(shù)包含3個(gè)方面的問(wèn)題:①渲染三維對(duì)象;②利用Alpha混合技術(shù)實(shí)現(xiàn)雷達(dá)視頻余輝衰減;③使用紋理技術(shù)實(shí)現(xiàn)海圖覆蓋層。Direct3D渲染三維對(duì)象的過(guò)程分為2個(gè)階段:第1個(gè)稱為T&L(transforming and lighting)階段;第2個(gè)稱為光柵化處理。其具體關(guān)系如圖1所示。
圖1 渲染3D對(duì)象的兩個(gè)階段Fig.1 Two stages of rendering 3D objects
其中T&L流水線經(jīng)過(guò)一系列的變換,如圖2所示。
圖2 T&L流水線Fig.2 T&L pipeline
Direct3D為了繪制透明物體,通過(guò)定義一個(gè)表示物體半透明度的Alpha值和一個(gè)透明的計(jì)算公式,可以把將要繪制的物體顏色與顏色緩沖區(qū)內(nèi)的顏色相混合,進(jìn)而繪制出具有半透明效果的物體,其計(jì)算方法為
↑Color=(RGBsrcKsrc)OP(RGBdstKdst),
(1)
式中:Color為Alpha混合后的顏色值;RGBsrc為源顏色值,即將要繪制的圖元的顏色值;Ksrc為源的混合系數(shù),通常賦值為表示物體半透明程度的Alpha值,用來(lái)和RGBsrc相乘;RGBdst為目標(biāo)顏色值,即當(dāng)前顏色緩沖區(qū)的顏色值;Kdst為目標(biāo)混合系數(shù),用來(lái)和RGBdst相乘;OP表示源計(jì)算結(jié)果與顏色緩沖區(qū)計(jì)算結(jié)果的混合方法,屬于枚舉類型D3DBLEND的值。
利用上面介紹的原理,雷達(dá)終端軟件化顯示方法中渲染圖形的核心方法如下:
(1) 創(chuàng)建紋理
該過(guò)程需要?jiǎng)?chuàng)建2個(gè)紋理[4]:一個(gè)是作為可操作的表面,作為PPI顯示的背景;一個(gè)是實(shí)時(shí)顯示每一個(gè)視角下的紋理。創(chuàng)建第1個(gè)紋理,Direct3D提供了創(chuàng)建紋理的接口D3DXCreateTextureFromFileEx(),根據(jù)實(shí)際雷達(dá)PPI顯示的大小,創(chuàng)建紋理。設(shè)置紋理屬性使該紋理為可操作的表面,以便后續(xù)對(duì)其進(jìn)行更新處理;創(chuàng)建第2個(gè)紋理使用D3DXCreateTexture()接口,其寬度為表面紋理的寬度,高度為1,用來(lái)更新顯示。
(2) 渲染三維對(duì)象
傳統(tǒng)PPI顯示采用量化方位線,逐點(diǎn)填色的方式[5]。由于雷達(dá)數(shù)據(jù)量大,此方法計(jì)算時(shí)間長(zhǎng),成為實(shí)現(xiàn)短周期雷達(dá)終端顯示的瓶頸。本軟件化顯示技術(shù)的關(guān)鍵在使用T&L流水線處理,使用變換坐標(biāo)的方法,每更新一條方位的視頻數(shù)據(jù),更新一個(gè)世界變換矩陣,使攝像機(jī)繞PPI圓心進(jìn)行旋轉(zhuǎn),在不影響顯示效果的情況下,雷達(dá)數(shù)據(jù)量化為4 096條方位線,旋轉(zhuǎn)速度以(360°/4 096)/次為佳。
(3) Alpha混合技術(shù)
使用Alpha混合技術(shù),可設(shè)置2層紋理的渲染狀態(tài)[6],利用SetRenderState()接口來(lái)實(shí)現(xiàn)。將第1層紋理設(shè)置為PPI表面紋理,將第2層設(shè)置為更新時(shí)的紋理,然后將2次紋理的顏色相乘輸出。視頻余輝衰減是依據(jù)每更新一幀視頻數(shù)據(jù),原來(lái)顏色逐漸減弱為背景色(默認(rèn)為黑色)的原理實(shí)現(xiàn)的。首先設(shè)置跟第1層紋理混合的系數(shù),即D3DCOLOR_ARGB()參數(shù)的值,然后啟用Alpha混合,將第2層紋理顏色與第1層顏色相減,實(shí)現(xiàn)PPI顏色衰減顯示。
(4) 疊加海圖覆蓋層
在創(chuàng)建紋理的基礎(chǔ)上,可實(shí)現(xiàn)海圖覆蓋層的疊加[7],進(jìn)一步滿足操控者對(duì)整個(gè)態(tài)勢(shì)的把握和掌控。設(shè)置PPI顯示的紋理、紋理階段狀態(tài)和紋理坐標(biāo)索引后,利用初始化時(shí)創(chuàng)建的第2層紋理,即帶有海圖信息的.dds文件,設(shè)置其和PPI顯示的紋理顏色相加。使用接口函數(shù)SetTextureStageState(),可以有選擇地實(shí)現(xiàn)海圖覆蓋層是否顯示。
基于上述方法,所使用計(jì)算機(jī)配置為:四核Intel Core Q8400 2.66GHz,Nvidia GeForce GT220,利用VS2005創(chuàng)建基于MFC的單文檔項(xiàng)目[8]。首先創(chuàng)建一個(gè)Windows窗口[9],然后初始化Direct3D,包括創(chuàng)建Direct3D對(duì)象、Direct3D設(shè)備對(duì)象以及要渲染的圖形對(duì)象。利用Button按鈕啟動(dòng)多媒體定時(shí)器[10],進(jìn)入消息循環(huán)。渲染圖形的代碼在定時(shí)器里實(shí)現(xiàn),包括對(duì)頂點(diǎn)的變換、像素渲染、Alpha測(cè)試混合和提交顯示。其中頂點(diǎn)變換是對(duì)流水線中的頂點(diǎn)作模型矩陣,投影矩陣處理;像素渲染是對(duì)流水線中的頂點(diǎn)賦值雷達(dá)視頻數(shù)據(jù)的RGB值和Alpha值;Alpha測(cè)試混合是對(duì)像素渲染后的頂點(diǎn)Alpha值按照公式(1)進(jìn)行處理,實(shí)現(xiàn)視頻顏色的衰減。根據(jù)不同操控方式,如不同的雷達(dá)掃描周期下,設(shè)置加速和減速2個(gè)Button按鈕,每加速或者減速一次,繪制不同掃描周期下的視頻信息。程序設(shè)計(jì)框圖3所示。
圖3 程序框圖Fig.3 Program diagram
軟件實(shí)現(xiàn)后,可以實(shí)現(xiàn)任意掃描周期下的PPI顯示,且不增加CPU的使用率。為了增強(qiáng)顯示效果,在整個(gè)PPIView窗口上顯示4個(gè)距離環(huán)和12條方位線。最終實(shí)現(xiàn)界面和占用CPU資源情況如圖4所示。
圖4 雷達(dá)終端軟件化顯示和CPU占用資源情況Fig.4 Software implementation of radar terminal display and the occupation resources of CPU
從圖4可以看出,該方法可以實(shí)現(xiàn)雷達(dá)終端軟件化顯示,并且使用CPU資源較少,僅為4%,為后續(xù)視頻數(shù)據(jù)的進(jìn)一步處理留足了時(shí)間。
利用“衰減+”和“衰減-”2個(gè)按鈕實(shí)現(xiàn)視頻余輝衰減的控制,改變D3DCOLOR_ARGB()參數(shù)實(shí)現(xiàn)256級(jí)衰減。衰減情況及占用CPU資源情況如圖5所示。
圖5 衰減情況和CPU占用資源情況Fig.5 Attenuation and the occupation resources of CPU
由圖5可以看出,此方法實(shí)現(xiàn)的衰減效果理想,且不額外增加CPU占用率,是一種理想的顯示方法。
利用按鈕選擇是否添加海圖。添加海圖后的顯示結(jié)果如圖6和圖7所示。
圖6 添加覆蓋層后顯示效果Fig.6 Display effect after adding over layer
圖7 添加覆蓋層衰減后的效果Fig.7 Display effect after attenuation of over layer
由圖6可以看出,利用紋理技術(shù)和Alpha混合技術(shù)能實(shí)現(xiàn)雷達(dá)終端的顯示,占用CPU使用率為4%,沒(méi)有增加圖形顯示的壓力,同時(shí)不影響顯示效果。加衰減后的顯示效果如圖7所示。由圖7可以看出,添加海圖覆蓋層后,沒(méi)有增加CPU占用率,沒(méi)有影響余輝顯示效果,表明該方法是一種理想的實(shí)現(xiàn)手段。
雷達(dá)終端軟件化顯示是雷達(dá)裝備的發(fā)展趨勢(shì),它不僅表現(xiàn)在成本低[11],而且在信號(hào)處理與操控方面也十分靈活。Direct3D技術(shù)是微軟公司發(fā)布的,在Windows系統(tǒng)下對(duì)GPU操作的顯示技術(shù)[12]。Direct3D軟件開(kāi)發(fā)工具包(SDK)提供了一套優(yōu)秀的應(yīng)用程序編程接口(APIS),這個(gè)編程接口可以提供開(kāi)發(fā)高質(zhì)量、強(qiáng)實(shí)時(shí)性應(yīng)用程序所需要的各種資源。合理利用渲染對(duì)象和Alpha混合技術(shù)可以很好地實(shí)現(xiàn)雷達(dá)終端軟件化,并且占用計(jì)算機(jī)資源較少,可以滿足工程上雷達(dá)實(shí)時(shí)性的要求。在此基礎(chǔ)上,可以繼續(xù)利用軟件進(jìn)行點(diǎn)跡凝聚和目標(biāo)跟蹤等算法的實(shí)現(xiàn)。
參考文獻(xiàn):
[1] 王德才,楊關(guān)勝,孫玉萍,等.精通DirectX 3D 圖形與動(dòng)畫(huà)程序設(shè)計(jì)[M].北京:人民郵電出版社,2009.
WANG De-cai,YANG Guan-sheng,SUN Yu-ping, et al.Proficient in DirectX 3D Graphics and Animation Programming[M].Beijing: People′s Posts and Telecommunications Press,2009.
[2] 王立振,劉潤(rùn)華.基于Visual C++和OpenGL的雷達(dá)顯示系統(tǒng)實(shí)現(xiàn)[J].空軍雷達(dá)學(xué)院學(xué)報(bào),2010,17(4):10-12.
WANG Li-zhen,LIU Run-hua. System Design of Visual C++ and OpenGL Based on the Radar Display[J]. Journal of Air Force Radar Academy,2010,17(4):10-12.
[3] 樊世友,楊作賓,孫書(shū)鷹,等.基于余輝模型的P型雷達(dá)顯示器計(jì)算機(jī)仿真[J].計(jì)算機(jī)仿真,2008,20(4):6-8.
FAN Shi-you,YANG Zuo-bing,SUN Shu-ying,et al. Type P Radar Display Persistence Model Based on Computer Simulation[J]. Computer Simulation,2008,20(4):6-8.
[4] 徐宏宇,陶然,單濤,等.一種實(shí)時(shí)雷達(dá)顯示控制終端軟件的設(shè)計(jì)[J].火控雷達(dá)技術(shù),2009,5(1):7-9.
XU Hong-yu,TAO Ran,SHAN Tao,et al. Design of the Control Terminal Software for Real-Time Radar Display[J]. Fire Control Radar Technology,2009,5(1):7-9.
[5] 侯俊杰.深入淺出MFC[M].2版.武漢:華中科技大學(xué)出版社,2003.
HOU Jun-jie.Explain Profound Theories in Simple Language MFC[M].2nd ed.Wuhan:Huazhong University of Science and Technology Press,2003.
[6] 劉淼,張宏偉,馬俊濤,等.基于COM技術(shù)和WinSock技術(shù)的雷達(dá)顯示系統(tǒng)設(shè)計(jì)[J].儀表技術(shù),2010,1(2):18-20.
LIU Miao,ZHANG Hong-wei,MA Jun-tao,et al.System Design of COM Technology and WinSock Technology Based on the Radar Display[J]. Instrumental Technique,2010,1(2):18-20.
[7] 宋銳,張靜,夏勝平,等.基于通用微機(jī)的數(shù)字化雷達(dá)顯控終端實(shí)現(xiàn)[J].系統(tǒng)仿真學(xué)報(bào),2003,4(5):10-12.
SONG Rui,ZHANG Jing,XIA Sheng-ping,et al. Realization of Digital Radar Terminal Display and Control based on Microcomputer[J]. Journal of System Simulation,2003,4(5):10-12.
[8] Davis Chapman.學(xué)用Visual C++6.0[M].駱長(zhǎng)樂(lè),譯.北京:清華大學(xué)出版社,2005.
Davis Chapman.Studies with Visual C++6.0[M].LUO Chang-le,Translate.Beijing: Tsinghua University Press,2005.
[9] 黃銀園.基于消息驅(qū)動(dòng)的光柵掃描雷達(dá)顯示器軟件設(shè)計(jì)[J].現(xiàn)代雷達(dá),2010,6(4):18-19.
HUANG Yin-yuan. Raster Scan Radar Display Software Design Based on Message Drive[J]. Modern Radar,2010,6(4):18-19.
[10] 畢紅葵,王紅,武文,等.光柵掃描雷達(dá)顯示系統(tǒng)關(guān)鍵技術(shù)問(wèn)題解決方案[J].系統(tǒng)工程與電子技術(shù),2002, 24(5):14-15, 19.
BI Hong-kui,WANG Hong,WU Wen,et al. Solution of Key Technical Problems of the System of Raster Scan Radar Display[J]. Systems Engineering and Electronics,2002, 24(5):14-15, 19.
[11] 賀其元,張尊泉.基于DirectX和PCI總線的光柵掃描顯示系統(tǒng)[J].現(xiàn)代雷達(dá),2003,25(2):54-56.
HE Qi-yuan,ZHANG Zun-quan. Raster Scan and Display System Based on DirectX and PCI bus[J]. Modern Radar,2003,25(2):54-56.
[12] 鄒煥新,周石琳,鄭鍵. 基于 VC++和Direct3D 的雷達(dá)PPI 顯示器仿真[J].計(jì)算機(jī)工程,2009,35(6):20-22.
ZOU Huan-xin,ZHOU Shi-lin,ZHENG Jian. Radar PPI Display VC++ and Simulation Based on Direct3D[J]. Computer Engineering,2009,35(6):20-22.