劉 強(qiáng) 劉忠義 楊澤剛 劉 平
摘 要:高分辨率雷達(dá)圖像顯示是雷達(dá)計(jì)算機(jī)模擬的重要環(huán)節(jié),對(duì)圖像的逼真度和實(shí)時(shí)性有著極高的要求。采用可編程渲染管線技術(shù)進(jìn)行雷達(dá)顯示系統(tǒng)模擬,能有效實(shí)現(xiàn)雷達(dá)圖像的分層模型,充分利用CPU和GPU的并行處理能力,大幅降低CPU的運(yùn)算復(fù)雜度。在生成高質(zhì)量雷達(dá)圖像的同時(shí)滿足系統(tǒng)實(shí)時(shí)性要求。
關(guān)鍵詞:雷達(dá)仿真;可編程渲染管線;余輝;著色器;雷達(dá)圖像
中圖分類號(hào):TP391.9文獻(xiàn)標(biāo)識(shí)碼:B
文章編號(hào):1004-373X(2009)05-050-03
Design and Realization of Radar Image Delaminaton Based on Programmable Render Pipline
LIU Qiang,LIU Zhongyi,YANG Zegang,LIU Ping
(Navy Submarine Academy,Qingdao,266071,China)
Abstract:The simulation of radar′s high resolution display system is one of the most important procedures in radar simulation,requiring high-fidelity and real-time feature.The programmable render pipeline technique,by that it can effectively realize the delamination model of radar image,take advantage of CPU and GPU′s parallel processing,and reduce the computational complexity.With the programmable render pipeline technique,the simulation of radar′s display system can achieve real-time requirement while producing high-quality radar image.
Keywords:radar simulation;programable render pipline;intensity persistense;shader;radar image
0 引 言
雷達(dá)顯示系統(tǒng)用于顯示接收機(jī)輸出的回波圖像,以及信息處理機(jī)產(chǎn)生的二次信息和符號(hào),是雷達(dá)操作員獲取信息的主要途徑。雷達(dá)的計(jì)算機(jī)模擬是雷達(dá)設(shè)計(jì)、分析以及訓(xùn)練的有效方法。而顯示系統(tǒng)的模擬作為雷達(dá)計(jì)算機(jī)模擬的最終輸出結(jié)果,其逼真度、實(shí)時(shí)性直接影響著系統(tǒng)的整體性能。顯示系統(tǒng)模擬的主要任務(wù)包括:對(duì)接收機(jī)輸出的回波數(shù)據(jù),信息處理機(jī)產(chǎn)生的ARPA信息,以及各種符號(hào)等進(jìn)行轉(zhuǎn)換,合成為顯示器2D光柵圖像;對(duì)生成的回波圖像模擬余輝效果;控制合成圖像的亮度、對(duì)比度等。
對(duì)顯示系統(tǒng)的模擬一般方法:在雷達(dá)圖像刷新過(guò)程中對(duì)全屏像素逐一進(jìn)行坐標(biāo)變換(光柵圖像的直角坐標(biāo)轉(zhuǎn)換為回波數(shù)據(jù)的極坐標(biāo))以查找對(duì)應(yīng)的回波脈沖幅值,形成屏幕像素顏色值;衰減像素亮度,模擬顯示器余輝效果(涉及到色飽和計(jì)算);設(shè)置像素顏色,生成逼真度非常高的雷達(dá)圖像。但這種方法需要存取大量的像素,難以滿足實(shí)時(shí)性的要求。例如,雷達(dá)顯示器分辨率為1 000×1 000,則每幀需存取3.14×5 002=785 000個(gè)像素。而要保持畫(huà)面流暢,幀速率應(yīng)保持在30 f/s以上,即每秒需要進(jìn)行23 550 000次像素存取。而這才僅僅模擬了雷達(dá)的顯示系統(tǒng)。
為了提高效率,一些改進(jìn)的算法被提出:預(yù)先建立坐標(biāo)映射表,利用查表方法減少坐標(biāo)變換的運(yùn)算;嵌入MMX指令減暗顏色;利用DirectX等圖形API直接存取顯存等。這些方法減少了單個(gè)像素的處理時(shí)間,但由于像素存取次數(shù)多,仍然占用大量的CPU時(shí)間。
要大幅提高雷達(dá)顯示系統(tǒng)模擬的效率,必須降低幀間隔內(nèi)需要處理的像素總數(shù)。本文提出的方法基于現(xiàn)代顯卡的可編程管線技術(shù),將回波圖像更新、余輝效果仿真、ARPA符號(hào)繪制與最終的圖像合成過(guò)程隔離開(kāi)來(lái),并充分利用CPU和GPU并行處理。在幀間隔內(nèi)由CPU完成對(duì)掃描線轉(zhuǎn)過(guò)的區(qū)域進(jìn)行圖像更新和少量的余輝亮度計(jì)算,GPU完成圖像合成,避免了對(duì)全屏海量像素的存取,極大地提高了顯示模擬的效率。以某艦載導(dǎo)航搜索雷達(dá)為例,顯示器分辨率為1 000×1 000,天線轉(zhuǎn)速為20 r/m,模擬程序幀速率為30 f/s,天線旋轉(zhuǎn)一周產(chǎn)生4 096條方位刻線。則模擬程序每幀需要存取785 000×20/(60×30)8 700個(gè)像素。再加上設(shè)置4 096條方位刻線余輝亮度,總計(jì)存取次數(shù)不到原先的1%,效果十分顯著。
1 可編程渲染管線與Direct3D 9
可編程管線(Programmable Pipeline)是現(xiàn)代高性能顯卡的一個(gè)重要技術(shù)特征。所謂可編程管線,是指可以編寫(xiě)一段運(yùn)行于GPU(圖像處理單元)的代碼,對(duì)輸入顯卡的原始數(shù)據(jù)進(jìn)行加工處理后再輸出到顯示器上。這樣的代碼稱為著色器(shader),包括頂點(diǎn)著色器(vertex shader)和像素著色器(pixel shader),分別用于對(duì)要繪制模型的頂點(diǎn)和紋理進(jìn)行變換和混合。由于著色器代碼獨(dú)立運(yùn)行在顯卡中,不占用CPU時(shí)間,而且GPU專門(mén)針對(duì)圖像計(jì)算進(jìn)行了優(yōu)化,因此代碼的運(yùn)行效率高,圖像處理的速度快。盡管可編程渲染管線設(shè)計(jì)的目的是滿足日益復(fù)雜的3D應(yīng)用環(huán)境,但由于其結(jié)構(gòu)靈活,采用適當(dāng)?shù)姆椒ň帉?xiě)代碼,在2D環(huán)境中仍然能發(fā)揮出顯卡的繪圖能力。
Direct3D是微軟提供的基于組件對(duì)象模型(COM)的底層繪圖API,它建立在硬件抽象層(HAL)之上。Direct3D檢查顯卡的能力,并以標(biāo)準(zhǔn)的COM接口將顯卡功能暴露給開(kāi)發(fā)人員,從而使其能夠安全地直接訪問(wèn)顯卡硬件,提高應(yīng)用程序的渲染速度。Direct3D 9全面支持可編程渲染管線,并引入高級(jí)著色語(yǔ)言(HLSL)來(lái)編寫(xiě)著色器代碼。利用Direct3D 9 SDK來(lái)編寫(xiě)雷達(dá)模擬器的顯示系統(tǒng)代碼,可充分發(fā)揮顯卡硬件的能力。
為了能夠在雷達(dá)顯示的2D環(huán)境中使用Direct3D,只需要做如下處理:將雷達(dá)圖像繪制在紋理上,用三角形扇來(lái)模擬圓形,將三角形頂點(diǎn)的紋理坐標(biāo)設(shè)置成雷達(dá)圖像紋理的對(duì)應(yīng)數(shù)值。將紋理和頂點(diǎn)告知Direct3D,便可渲染出雷達(dá)顯示器圖像來(lái)。如圖1所示。
關(guān)于Direct3D和著色器編程就不再贅述,下面介紹雷達(dá)顯示系統(tǒng)模擬中的一些關(guān)鍵技術(shù)。
2 雷達(dá)圖像分層與紋理混合
雷達(dá)顯示器圖像根據(jù)其產(chǎn)生的方法和特點(diǎn)可分為兩種:一種是來(lái)自接收機(jī)輸出的回波圖像(其中也包括噪聲),其特點(diǎn)包括:圖像隨天線轉(zhuǎn)動(dòng)邊掃描邊刷新,像素的繪制基于極坐標(biāo)系;圖像亮度隨時(shí)間衰減,即具有余輝效果。另一種是來(lái)自信息處理系統(tǒng)的ARPA符號(hào),如動(dòng)標(biāo)、點(diǎn)目標(biāo)符號(hào)、目標(biāo)航跡線等,其特點(diǎn)是:符號(hào)的變化隨ARPA信息變化,且無(wú)余輝效果。
為了避免全屏像素存取,必須將回波圖像刷新、余輝效果仿真、ARPA符號(hào)繪制與最終的圖像合成隔離??删幊啼秩竟芫€的像素著色器能夠在顯卡內(nèi)利用進(jìn)行多重紋理的自由混合。由于在圖像合成被獨(dú)立了出來(lái),CPU僅完成必要的繪制即可。如圖2所示,將合成雷達(dá)圖像的紋理分為3層:回波圖像層、余輝效果層和ARPA符號(hào)層,前2個(gè)紋理在幀間隔內(nèi)進(jìn)行刷新,后一個(gè)紋理僅在ARPA信息發(fā)生變化時(shí)進(jìn)行繪制。這些任務(wù)都由CPU來(lái)完成。
GPU負(fù)責(zé)紋理的合成。渲染雷達(dá)顯示器時(shí),這3層紋理在像素著色器中進(jìn)行混合,產(chǎn)生最終的雷達(dá)圖像?;旌洗a如下:
sampler2D EchoTex;//回波圖像紋理采樣器
sampler2D SymbolTex;// 符號(hào)圖像紋理采樣器
sampler2D FaderTex;// 余輝效果紋理采樣器
…
vector colorEcho=tex2D(EchoTex,input.echo);
vector colorSymbol=tex2D(SymbolTex,input.symbol);
vector colorFader=1.0f-tex2D(FaderTex,input.fader);
output.color=max(
saturate(colorEcho-colorFader),colorSymbol);
此外利用像素著色器,還非常容易實(shí)現(xiàn)亮度控制、顏色反轉(zhuǎn)等特殊顯示效果。由于CPU和GPU可并行處理,代碼的執(zhí)行效率非常高。
3 雷達(dá)回波圖像更新與直接像素存取
幀間隔內(nèi)更新回波圖像,就是利用接收機(jī)輸出的脈沖序列來(lái)更新回波圖像紋理中的掃描扇面區(qū)。脈沖序列存放在回波緩存區(qū)數(shù)組內(nèi)。由于脈沖幅值與像素顏色數(shù)據(jù)格式不同、緩存區(qū)數(shù)組與像素矩陣維度不同,不能用直接位塊傳送(Blt)來(lái)繪制回波圖像。需要繪制單個(gè)像素來(lái)更新。Direct3D通過(guò)IDirect3DTexture9::LockRect()方法鎖定紋理上的一塊矩形區(qū)域,該矩形區(qū)域被映射成類似于DIB/DDB的像素?cái)?shù)組。利用函數(shù)返回的指針,可以對(duì)數(shù)組中的像素進(jìn)行直接存取。通過(guò)紋理鎖定來(lái)存取顯存,能夠達(dá)到GDI函數(shù)無(wú)法達(dá)到的高性能。
鎖定的矩形區(qū)越大,則存取的次數(shù)就越多。在鎖定前根據(jù)掃描區(qū)域首先計(jì)算需要鎖定的矩形范圍,便可大幅減少存取像素的數(shù)量。這也正是雷達(dá)圖像分層所帶來(lái)的好處。如圖3所示,A中需要對(duì)全屏像素進(jìn)行存取,而B(niǎo)中只需要訪問(wèn)掃描扇面包圍矩形中的像素。在進(jìn)行像素存取時(shí),采用查表法實(shí)現(xiàn)直角坐標(biāo)與極坐標(biāo)的轉(zhuǎn)換,還能進(jìn)一步提高存取的效率。
4 余輝效果與渲染到紋理
在繪制余輝效果圖層時(shí),采用渲染到紋理技術(shù)(RTT),將紋理設(shè)置成渲染目標(biāo),用D3D繪圖函數(shù)直接在紋理上繪圖,形成顏色漸變且動(dòng)態(tài)變化的余輝效果。要實(shí)現(xiàn)渲染到紋理,在創(chuàng)建紋理時(shí),用參數(shù)D3DUSAGE_RENDERTARGET指定紋理的用途,并調(diào)用GetSurfaceLevel()方法獲取紋理的表面接口指針。在渲染時(shí),用SetRenderTarget()方法將該表面設(shè)置成渲染目標(biāo)。
為了繪制出圖4中的余輝效果紋理,可用N條射線來(lái)組成余輝效果紋理中的圓,N等于天線方位刻線的數(shù)量,每條射線的顏色由其端點(diǎn)顏色決定。N條射線需要用2N個(gè)頂點(diǎn)來(lái)描述,頂點(diǎn)除含有坐標(biāo)外,還包括顏色值。創(chuàng)建了這些頂點(diǎn)后,Direct3D在渲染管線中自動(dòng)將其繪制成圖像。
要形成隨時(shí)間變化的動(dòng)態(tài)效果,模擬程序需要在幀間隔內(nèi)根據(jù)頂點(diǎn)坐標(biāo)和當(dāng)前掃描線的位置,重新設(shè)置每個(gè)頂點(diǎn)的顏色。Direct3D重新渲染便產(chǎn)生了亮度漸變且動(dòng)態(tài)變化的圓。
采用這種方法,幀間隔內(nèi)CPU僅需要存取2N個(gè)頂點(diǎn)的顏色。在前面的例子中,雷達(dá)掃描一周形成4 096個(gè)方位,需要繪制4 096條射線,即設(shè)置8 192個(gè)頂點(diǎn)顏色。在大幅減少了像素存取次數(shù)的情況下,增加的這部分頂點(diǎn)顏色存取時(shí)間并不會(huì)影響整體性能的改善。
5 ARPA符號(hào)繪制與GDI繪圖
ARPA信息與符號(hào)的繪制不隨掃描變化,而與雷達(dá)信息處理機(jī)的狀態(tài)有關(guān),即由描述雷達(dá)信
息處理機(jī)的狀態(tài)數(shù)據(jù)表以及點(diǎn)目標(biāo)跟蹤表等數(shù)據(jù)表生成,比較適合用GDI函數(shù)繪制。為了能夠在紋理上采用GDI函數(shù)繪圖,需要獲取紋理的表面(Surface)接口指針,然后利用表面的GetDC()方法得到該表面設(shè)備上下文(DC)。這樣就可以調(diào)用Win32的GDI函數(shù)進(jìn)行符號(hào)文字等輸出了。由于這部分繪圖代碼內(nèi)容少且更新率低,因此其CPU占用率幾乎可以不計(jì)。
6 結(jié) 語(yǔ)
在某型艦載導(dǎo)航搜索雷達(dá)中,采用上述方法對(duì)雷達(dá)模擬器的顯示部分進(jìn)行了改進(jìn)。模擬器的計(jì)算機(jī)平臺(tái)配置為:Pentiumk Ⅳ 2.8 GHz,ASUS Extreme AX550顯卡。模擬程序運(yùn)行的幀速率從15 f/s提高到50 f/s以上,效果明顯。結(jié)果表明,采用可編程渲染管線技術(shù),可以實(shí)現(xiàn)回波圖像更新與余輝效果計(jì)算的分離,充分發(fā)揮顯卡的渲染能力,能夠滿足大分辨率雷達(dá)顯示系統(tǒng)仿真的需求。
實(shí)際上,雷達(dá)顯示器余輝效果紋理的繪制基本上獨(dú)立于雷達(dá)的脈沖數(shù)據(jù)處理等過(guò)程,如果能夠把描述余輝效果的4 096個(gè)亮度數(shù)值完全置于可編程渲染管線的頂點(diǎn)著色器中,由頂點(diǎn)著色器來(lái)完成亮度衰減及更新計(jì)算,將進(jìn)一步降低CPU的計(jì)算負(fù)擔(dān)。但由于余輝仿真是一個(gè)迭代過(guò)程,當(dāng)前幀亮度是前一幀亮度的衰減,這需要對(duì)每次迭代后的結(jié)果進(jìn)行保存。然而在目前的Direct3D版本中,還不支持渲染到頂點(diǎn)(RTV),頂點(diǎn)著色器也難以支持大容量的數(shù)組變量,迭代運(yùn)算的結(jié)果難以保存。目前,模擬余輝效果頂點(diǎn)顏色動(dòng)畫(huà)仍然由CPU來(lái)完成。隨著顯卡技術(shù)和Direct3D技術(shù)的發(fā)展,這部分代碼還能得到進(jìn)一步的優(yōu)化。
參考文獻(xiàn)
[1]韓瑞新.基于光柵掃描的雷達(dá)顯示系統(tǒng)仿真[J].系統(tǒng)仿真學(xué)報(bào),2005,22(11):24-27.
[2]程玉榮.基于動(dòng)態(tài)數(shù)據(jù)表的實(shí)時(shí)高分辨率雷達(dá)回波顯示[J].系統(tǒng)仿真學(xué)報(bào),2008,20(4):882-884.
[3]漆先虎.Windows操作系統(tǒng)下雷達(dá)操控終端的開(kāi)發(fā)[J].火控雷達(dá)技術(shù),2006,31(2):27-31.
[4]方偉.機(jī)載雷達(dá)模擬器設(shè)計(jì)中的DirectDraw和多線程技術(shù)[J].海軍航空工程學(xué)院學(xué)報(bào),2003,18(2):213-216.
[5]王宏,樊世友,陳再旺,等.基于OpenGL的雷達(dá)顯示器計(jì)算機(jī)仿真的實(shí)現(xiàn)[J].計(jì)算機(jī)系統(tǒng)應(yīng)用,2006(6):55-57,60.
[6]徐宏宇,陶然,單濤,等.一種實(shí)時(shí)雷達(dá)顯示控制終端軟件的設(shè)計(jì)[J].火控雷達(dá)技術(shù),2002(1):7-9.
[7]樊世友,楊作賓,孫書(shū)鷹.基于余輝模型的P型雷達(dá)顯示器計(jì)算機(jī)仿真.計(jì)算機(jī)仿真,2003,20(4):6-8.
[8]雷達(dá)技術(shù)編寫(xiě)組.雷達(dá)顯示器[M].上海:上??茖W(xué)技術(shù)出版社,1998.
[9]Wolfgang F Engel.Direct3D游戲編程入門(mén)教材[M].北京:人民郵電出版社,2005.
[10]Peter J Kovach.Direct3D技術(shù)內(nèi)幕[M].北京:清華大學(xué)出版社,2001.
作者簡(jiǎn)介
劉 強(qiáng) 男,1976年出生,四川成都人,碩士研究生,講師。研究方向?yàn)殡娮訉?duì)抗系統(tǒng)仿真。
劉忠義 男,1969年出生,山東濰坊人,碩士研究生,副教授。研究方向?yàn)殡娮訉?duì)抗系統(tǒng)仿真。
楊澤剛 男,1968年出生,江西九江人,碩士研究生,高級(jí)工程師。研究方向?yàn)槔走_(dá)設(shè)備測(cè)試與維修。
劉 平 男,1980年出生,湖南長(zhǎng)沙人,博士研究生,講師。研究方向?yàn)榍度胧綔y(cè)試與診斷設(shè)備。