• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

      基于國產(chǎn)化平臺(tái)的雷達(dá)回波視頻軟件繪制研究

      2020-12-25 02:09:32李華君
      雷達(dá)與對(duì)抗 2020年2期
      關(guān)鍵詞:著色器圖元尾跡

      李華君,張 超,陳 婧,林 悅

      (中國船舶集團(tuán)有限公司第八研究院,南京 211153)

      0 引 言

      現(xiàn)代雷達(dá)需要顯示的信息量龐大[1],對(duì)數(shù)據(jù)處理的實(shí)時(shí)性要求較高,雷達(dá)的顯控終端的設(shè)計(jì)顯得尤為重要。[2]在非國產(chǎn)化平臺(tái)下,顯控終端對(duì)雷達(dá)回波、尾跡衰減效果的顯示實(shí)現(xiàn)主要有以下幾種方法:(1)基于專用圖形卡+軟件繪制疊加的軟硬件結(jié)合方法;(2)采用CPU+GPU的聯(lián)合渲染的方法;(3)利用CPU資源和軟件技術(shù)結(jié)合(如MFC框架下GDI或D3D繪制等)的方法。以上方法或不支持國產(chǎn)平臺(tái),或不適配國產(chǎn)操作系統(tǒng),或造成大量的系統(tǒng)資源占用。[3]而采用硬件板卡的方式,設(shè)備成本及維護(hù)費(fèi)用大。[4]針對(duì)雷達(dá)軟件化和國產(chǎn)化的迫切需求,開展基于國產(chǎn)化有限資源環(huán)境下的回波視頻軟件繪制研究勢(shì)在必行。

      本文提出了一種結(jié)合QT圖形化視圖框架特性,基于圖元分層及OpenGL繪制回波視頻的雷達(dá)綜合態(tài)勢(shì)顯示軟件實(shí)現(xiàn)方法;在顯示圖層中實(shí)現(xiàn)回波視頻及其尾跡衰減效果的顯示控制,并結(jié)合其他圖層完成綜合態(tài)勢(shì)集成顯示,通過實(shí)驗(yàn)驗(yàn)證了方法的可行性;采用QT和OpenGL結(jié)合的方法,為開發(fā)者提供高效解決方法,并支持跨平臺(tái)移植應(yīng)用;利用OpenGL著色語言(OpenGLShadingLanguage,GLSL)編程將數(shù)據(jù)計(jì)算和圖形渲染放在GPU進(jìn)行,有效平衡了系統(tǒng)開銷。

      1 OpenGL技術(shù)原理

      1.1 OpenGL

      OpenGL是圖形硬件的一個(gè)軟件接口,也是該領(lǐng)域的工業(yè)標(biāo)準(zhǔn)。OpenGL是一個(gè)與硬件無關(guān)的軟件接口,可支持不同的系統(tǒng),如Windows系統(tǒng)、Unix、Linux、MacOS、OS/2及主流國產(chǎn)操作系統(tǒng)。因此,基于OpenGL的軟件移植性好,應(yīng)用廣泛。

      1.2 GLSL和可編程渲染管線

      GLSL是一種類似于C/C++的高級(jí)語言。使用GLSL語言編寫自定義的著色器有利于開發(fā)者移植和實(shí)現(xiàn)所需的特效效果。

      最新的OpenGL標(biāo)準(zhǔn)中定義了3個(gè)可編程圖形處理器,即“頂點(diǎn)著色器”(Vertex Shader),“幾何著色器”(Geometry Shader)和“片段著色器”(Fragment Shader)。圖形管線渲染流程的每個(gè)階段抽象展示如圖1所示,其中背景部分代表的是可以注入自定義的著色器的部分。

      圖1 管線渲染流程

      自定義的頂點(diǎn)著色器會(huì)替換固定管線中所有的關(guān)于頂點(diǎn)的運(yùn)算,包括頂點(diǎn)和法線變換、紋理坐標(biāo)生成和變換、光照以及材質(zhì)應(yīng)用這些傳統(tǒng)的管線命令。自定義的幾何著色器會(huì)替換固定管線中所有關(guān)于圖元操作,包括剪裁、增加和改變圖元的工作。自定義的片段著色器會(huì)替換固定管線中所有關(guān)于片段的運(yùn)算,包括代紋理應(yīng)用、霧化和像素匯總的工作。

      1.3 紋 理

      紋理是一種結(jié)構(gòu)化的存儲(chǔ)形式。除了常見的二維紋理以外,也存在一維、三維或者多個(gè)紋理疊加后形成的單一對(duì)象。紋理是由紋素組成。除了用于儲(chǔ)存圖像數(shù)據(jù),它也可以被用來儲(chǔ)存大量的數(shù)據(jù),如地形數(shù)據(jù)、視頻數(shù)據(jù)等。這些紋理數(shù)據(jù)可以發(fā)送給著色器。著色器使用紋理采樣器來快速尋址并采樣。紋理中的數(shù)據(jù)可以被GPU直接讀取并進(jìn)行渲染,可節(jié)省大量的內(nèi)存空間。

      2 QT圖形化視圖框架

      雷達(dá)綜合態(tài)勢(shì)顯示軟件結(jié)合QT圖形化視圖框架特性實(shí)現(xiàn),采用的GraphicsView框架如圖2所示。

      GraphicsView是一個(gè)基于圖元的Model/View架構(gòu)的框架,能對(duì)大量圖元進(jìn)行管理,并提供碰撞檢測(cè)、坐標(biāo)變換和圖元組等多種方便的功能。軟件將OpenGL繪制、二次目標(biāo)、坐標(biāo)軸輔助線和開窗起始區(qū)域繪制等使用QGraphicsItem包裝,按照一定的層疊順序放入一個(gè)Graphics Scene進(jìn)行管理。圖元的層疊順序由下而上依次是:

      圖2 雷達(dá)綜合態(tài)勢(shì)顯示分層架構(gòu)

      (1) OpenGL圖層:完成回波視頻的繪制,用OpenGL的FBO和頂點(diǎn)、片段著色器特性實(shí)現(xiàn)了雷達(dá)尾跡衰減效果,封裝為GLLayerItem圖元。

      (2) 坐標(biāo)系圖層:實(shí)現(xiàn)方位刻度、距標(biāo)環(huán)和方位線等信息繪制功能,封裝為CoordsLayerItem圖元。

      (3) 圖形繪制圖層:實(shí)現(xiàn)自定義繪圖、電子海圖、開窗區(qū)域、自動(dòng)起始區(qū)域等繪制功能,封裝為GraphLayerItem圖元。

      (4) 目標(biāo)圖層:實(shí)現(xiàn)目標(biāo)信息管理、目標(biāo)軌跡管理等繪制功能,封裝為TargetLayerItem圖元。

      (5) 掃描線圖層:實(shí)現(xiàn)對(duì)掃描線消隱及其尾跡衰減、消隱的繪制與控制,封裝為ScanLineLayerItem圖元。

      為了在GraphicsView框架中利用OpenGL的特性進(jìn)行圖形渲染,需要設(shè)置一個(gè)新的QGLWidget作為QGraphicsView的視口。如果需要OpenGL提供反鋸齒功能,則需要引入OpenGL采樣緩沖支持,其中回波視頻的繪制工作主要在GLLayerItem圖元中完成。為了在GLLayerItem圖元中進(jìn)行自定義的OpenGL繪制,需要重寫圖元的虛函數(shù)GLLayerItem::paint(),并在beginNativePaint()和endNativePainting()兩個(gè)函數(shù)之間進(jìn)行相關(guān)的OpenGL繪制操作。

      3 回波視頻繪制方法

      3.1 掃描線尾跡衰減繪制

      如圖3所示,根據(jù)天線實(shí)時(shí)角度提交一組頂點(diǎn)數(shù)據(jù)(V1,V2,V3)繪制扇形區(qū)域。利用GLSL計(jì)算片元顏色,實(shí)現(xiàn)掃描線漸變效果。

      圖3 掃描線尾跡衰減繪制示意圖

      (1) 繪制圓心角為θ扇形區(qū)域。OpenGL沒有提供直接繪制圓形或扇形方法。按照極限思維的方式,可以將扇形區(qū)域分割成n個(gè)圓心角為θ/n的扇形,分割數(shù)量n越多,圓心角為θ/n度數(shù)越小,因此可以把圓形或扇形區(qū)域認(rèn)為由多個(gè)等腰三角形組成。

      (2) 計(jì)算根據(jù)扇形區(qū)域頂點(diǎn)所在角度與掃描線的角度偏差值,設(shè)置線性混合系數(shù),如圖4所示。在片段著色器中利用GLSL內(nèi)置函數(shù)atan()、degrees()等計(jì)算扇形區(qū)域頂點(diǎn)所在的方位角度angle。根據(jù)方位角度angle與天線方位antennaAzi的差值diff設(shè)置線性混合系數(shù)a。調(diào)用內(nèi)置函數(shù)mix(antennaColor,blackColor,a)實(shí)現(xiàn)顏色antennaColor、blackColor的線性混疊,實(shí)現(xiàn)顏色漸變。整個(gè)過程頂點(diǎn)方位計(jì)算在GPU端進(jìn)行,每次繪制只需要從提交一組頂點(diǎn)數(shù)據(jù)至GPU即可。

      圖4 實(shí)現(xiàn)顏色混合的片段著色器

      3.2 視頻繪制

      用OpenGL的FBO、紋理和頂點(diǎn)和片段著色器特性實(shí)現(xiàn)了回波視屏的繪制和尾跡衰減效果。textureA用于存儲(chǔ)當(dāng)前需要更新扇形區(qū)域的視頻數(shù)據(jù),textureB用于存儲(chǔ)當(dāng)前和歷史視頻(包括尾跡衰減)的所有視頻數(shù)據(jù)。

      (1) 視頻數(shù)據(jù)的解算與周期內(nèi)視頻繪制

      雷達(dá)回波視頻數(shù)據(jù)存儲(chǔ)一個(gè)方位Azin上距離由近及遠(yuǎn)所有點(diǎn)的幅度值A(chǔ)nm,點(diǎn)之間距離約為30 m,方位上數(shù)據(jù)格式為。而OpenGL頂點(diǎn)坐標(biāo)是以直角坐標(biāo)表示,目標(biāo)位置在理論上一般要將極坐標(biāo)轉(zhuǎn)換成直角坐標(biāo),并根據(jù)幅度值計(jì)算出RGB值。公式(1)用來計(jì)算每個(gè)點(diǎn)的頂點(diǎn)坐標(biāo),其中Azin表示當(dāng)前視頻數(shù)據(jù)的方位。公式(2)用來計(jì)算每個(gè)點(diǎn)RGB值,其中Anm表示方位Azin中第m個(gè)點(diǎn)的幅度值,Amax表示幅度的最大值。

      v=

      (1)

      c=<0,Anm/Amax,0>

      (2)

      雷達(dá)綜合態(tài)勢(shì)顯示軟件通過定時(shí)器來觸發(fā)視頻的刷新,時(shí)間周期(刷新率)根據(jù)需求給定。如圖5所示,時(shí)間周期內(nèi)收到方位Azii至方位Azij(0<=i,j<=n)的視頻數(shù)據(jù)經(jīng)過坐標(biāo)和幅度的計(jì)算轉(zhuǎn)化為OpenGL坐標(biāo)系下的頂點(diǎn)坐標(biāo)值、頂點(diǎn)RGB值后用頂點(diǎn)數(shù)組提交給GPU繪制,并渲染到textureA。

      圖5 方位區(qū)間內(nèi)視頻紋理繪制

      (2) 使用著色器紋理采樣

      使用著色器對(duì)textureB方位Azii至方位Azij(0<=i,j<=n)區(qū)域內(nèi)顏色進(jìn)行衰減。如圖6所示,利用片段著色器中的內(nèi)值函數(shù)計(jì)算textureB紋理坐標(biāo)所在的方位角度angle。如果屬于要更新的區(qū)域,則用GLSL內(nèi)置函數(shù)texture2D (textureB,textBCoord)進(jìn)行textureB紋理采樣,將采樣值與衰減系數(shù)相乘,實(shí)現(xiàn)顏色的衰減。如圖7所示。

      圖6 實(shí)現(xiàn)顏色衰減的片段著色器

      (3) 幀緩沖對(duì)象進(jìn)行紋理疊加

      FBO用于數(shù)據(jù)渲染到紋理對(duì)象,使用FBO技術(shù)會(huì)更高效且易于實(shí)現(xiàn)。如圖8所示,利用FBO將textureA疊加在textureB上渲染成新的紋理textureB’,無glEnable()和glBendFunc()顯示glCopyTexImage。最后將疊加更新后的textureB’繪制到當(dāng)前屏幕緩存實(shí)現(xiàn)最終的顯示效果。

      圖7 方位區(qū)間內(nèi)紋理顏色衰減

      圖8 紋理的疊加

      另外,通過glEnable()和glBendFunc()函數(shù)開啟OpenGL 的混色功能也是必需的步驟?;焐瘮?shù)選取宏定義GL_SRC_ALPHA 即ALPHA通道的顏色做混色源因子,并將宏定義GL_ONE_MINUS_SRC_ALPHA即(1-ALPHA通道顏色值)作為目標(biāo)因子。

      4 實(shí)驗(yàn)結(jié)果

      實(shí)驗(yàn)使用的回波視頻數(shù)據(jù)分為4 096個(gè)方位。每個(gè)方位上記錄約1萬點(diǎn)的幅度值。每個(gè)方位數(shù)據(jù)發(fā)送間隔為1 ms。視頻數(shù)據(jù)通過網(wǎng)絡(luò)傳輸至雷達(dá)態(tài)勢(shì)顯示軟件,并采用本文介紹的方法進(jìn)行繪制。

      雷達(dá)態(tài)勢(shì)顯示軟件的開發(fā)運(yùn)行環(huán)境為QT 4.8.3、銀河麒麟操作系統(tǒng)、飛騰FT1500A處理器、AMD 嵌入式RadeonTME8860顯卡。視頻刷新間隔為20 ms,視頻尾跡衰減系數(shù)為0.5。軟件運(yùn)行效果如圖9、圖10及圖11所示。此方法實(shí)現(xiàn)的雷達(dá)回波視頻及其尾跡衰減效果理想,占用CPU資源低,回波視頻繪制執(zhí)行時(shí)間小于1 ms,整體運(yùn)行流暢無卡頓。

      雷達(dá)回波視頻數(shù)據(jù)實(shí)時(shí)性強(qiáng),數(shù)據(jù)量大,國產(chǎn)化平臺(tái)CPU處理能力有限。本文用OpenGL的FBO和頂點(diǎn)、片段著色器特性實(shí)現(xiàn)雷達(dá)視頻和掃描線的繪制及尾跡衰減效果。方法有以下特點(diǎn):

      (1) 應(yīng)用Qt Graphics View框架和OpenGL特性實(shí)現(xiàn)的雷達(dá)回波視頻繪制為開發(fā)者提供高效便捷的方法,提高了雷達(dá)態(tài)勢(shì)顯示軟件穩(wěn)定性、可靠性和實(shí)用性。由于Qt及OpenGL移植性強(qiáng),使得軟件可在國產(chǎn)化平臺(tái)下運(yùn)行,具有更加廣泛應(yīng)用前景。

      圖9 回波視頻及其尾跡繪制效果

      圖10 視頻尾跡衰減效果

      圖11 態(tài)勢(shì)顯示疊加效果

      (2) 利用OpenGL可編程渲染管線特性,編寫頂點(diǎn)著色器進(jìn)行了矩陣變換和數(shù)據(jù)傳遞,編寫片段著色器進(jìn)行了數(shù)據(jù)換算、顏色混合和紋理采樣,最終實(shí)現(xiàn)了掃描線、回波視頻繪制及其尾跡衰減效果,從而將復(fù)雜運(yùn)算和繪圖產(chǎn)生的負(fù)載從CPU轉(zhuǎn)移到GPU上,發(fā)揮了GPU并行處理的優(yōu)勢(shì),有效平衡系統(tǒng)開銷。此方法不僅簡化了渲染管線的邏輯,而且提高了渲染效率,亦有效解決國產(chǎn)處理器的性能瓶頸。

      (3) 通過OpenGL 的Alpha 通道混色功能設(shè)置源紋理和目標(biāo)紋理的混合因子后,采用幀緩沖對(duì)象(FBO)對(duì)源紋理和目標(biāo)紋理進(jìn)行了疊加,從而提升了渲染效率和穩(wěn)定性,進(jìn)一步提升基于國產(chǎn)化平臺(tái)的軟件實(shí)現(xiàn)可行性。

      5 結(jié)束語

      本文采用的方法對(duì)傳統(tǒng)機(jī)械掃描雷達(dá)的回波視頻數(shù)據(jù)繪制已通過實(shí)驗(yàn)得到驗(yàn)證。對(duì)于電子掃描陣列雷達(dá),因雷達(dá)回波數(shù)據(jù)更新特性有差異,視頻軟件化繪制方法有待進(jìn)一步展開研究。

      猜你喜歡
      著色器圖元尾跡
      一種基于Radon 變換和尾跡模型的尾跡檢測(cè)算法
      一種組態(tài)控件技術(shù)在電力監(jiān)控系統(tǒng)中的運(yùn)用
      學(xué)術(shù)出版物插圖的編排要求(一):圖注
      基于UE4 實(shí)時(shí)射線追蹤技術(shù)的研究與探討
      聯(lián)鎖表自動(dòng)生成軟件的設(shè)計(jì)與實(shí)現(xiàn)
      基于Unity Shader石油泄漏現(xiàn)象模擬的研究
      基于IMx6的opengl圖形著色器開發(fā)研究
      中國新通信(2020年2期)2020-06-24 03:06:44
      基于EEMD-Hilbert譜的渦街流量計(jì)尾跡振蕩特性
      基于Qt繪圖系統(tǒng)的圖形應(yīng)用優(yōu)化研究與實(shí)現(xiàn)
      軟件(2016年12期)2016-02-13 05:58:14
      基于FABEMD和Goldstein濾波器的SAR艦船尾跡圖像增強(qiáng)方法
      新竹县| 毕节市| 漳浦县| 密云县| 花莲县| 商城县| 大方县| 朝阳市| 莱芜市| 神木县| 都江堰市| 资兴市| 平乐县| 专栏| 蒲城县| 枞阳县| 灵宝市| 屯留县| 景德镇市| 丹阳市| 黎川县| 磐安县| 周宁县| 澎湖县| 英山县| 灵璧县| 浠水县| 吴旗县| 天柱县| 东方市| 奇台县| 乡宁县| 监利县| 襄樊市| 柳州市| 蛟河市| 元阳县| 安化县| 西藏| 石泉县| 元朗区|