楊沁泓,付 林,焦 禹,孔 玥
(中國(guó)船舶集團(tuán)有限公司第八研究院,南京 211153)
分布式視頻處理技術(shù)作為基于服務(wù)器組網(wǎng)絡(luò)傳輸?shù)男滦推唇蛹夹g(shù),可以提高信息處理的速率和容量,但處理后的信息通過網(wǎng)絡(luò)發(fā)送到后端顯示軟件具有亂序、片段化、數(shù)據(jù)疏、漏等缺點(diǎn)。
本文提出一種適應(yīng)亂序數(shù)據(jù)包的雷達(dá)回波平滑顯示方法,實(shí)現(xiàn)掃描線及回波在態(tài)勢(shì)顯示區(qū)域順時(shí)針更新,能精確呈現(xiàn)搜索雷達(dá)的探測(cè)結(jié)果,同時(shí)兼容不同型號(hào)處理器組采樣能力造成的扇區(qū)數(shù)據(jù)疏、漏或間隙,實(shí)現(xiàn)扇區(qū)數(shù)據(jù)間的平滑處理,保證用于態(tài)勢(shì)顯示的回波視頻數(shù)據(jù)準(zhǔn)確、紋理精細(xì)。
顯示軟件將態(tài)勢(shì)顯示區(qū)分割成n個(gè)圓心角為θ/n的扇形區(qū)域,再通過對(duì)雷達(dá)回波進(jìn)行全程全方位的特征提取,識(shí)別出全部雷達(dá)回波的特征,根據(jù)方位、距離轉(zhuǎn)化成屏幕的縱、橫坐標(biāo),把雷達(dá)回波特征可視化映射至態(tài)勢(shì)顯示區(qū)對(duì)應(yīng)的扇形區(qū)域,可以用以下公式實(shí)現(xiàn)轉(zhuǎn)換:
dx=Υ×sin(α×π÷180)
(1)
dy=Υ×cos(α×π÷180)
(2)
Px=X0+dx×R÷Sr+λx
(3)
Py=Y0-dy×R÷Sr+λy
(4)
式中,α、β分別為方位和仰角,°;Υ為距離;X0、Y0分別為原點(diǎn)像素x值和y值;dx、dy分別為距離在x、y方向的分量值;R為半徑的像素值;Sr為當(dāng)前量程(由放大比例確定),與dx和dy量綱相同;λx、λy分別為偏心x和y分量;Px、Py分別為x方向和y方向的屏幕坐標(biāo)。
圖1給出了回波視頻數(shù)據(jù)包經(jīng)解析后投影至對(duì)應(yīng)扇區(qū)的示意。
圖1 扇區(qū)示意圖
分布式處理器的處理能力、截取的數(shù)據(jù)包內(nèi)容、網(wǎng)絡(luò)傳輸速率、拆包等原因?qū)е乱曨l數(shù)據(jù)無法按照天線掃描的順序依次到達(dá)顯示軟件,造成掃描線擺動(dòng)、雷達(dá)回波更新亂序等現(xiàn)象,不符合搜索雷達(dá)顯控軟件中掃描線和回波信息跟隨伺服天線0°~360°順時(shí)針旋轉(zhuǎn)及更新的作戰(zhàn)需要和使用習(xí)慣。
同時(shí),大量程、高分辨率的回波數(shù)據(jù)采用單報(bào)文傳輸將超過網(wǎng)絡(luò)傳輸字節(jié)限制,須將該回波數(shù)據(jù)截取成多個(gè)報(bào)文包分次發(fā)送給顯示軟件,顯示軟件將其進(jìn)行拼接再實(shí)時(shí)顯示。
另外,采樣率的選取可能造成方位扇區(qū)疏或漏,顯示軟件面向用戶,須保證回波視頻紋理的精度和連續(xù),因此必須實(shí)現(xiàn)扇區(qū)數(shù)據(jù)間的平滑處理。
本文算法流程包括數(shù)據(jù)接收、方位排列、數(shù)據(jù)拼接、視頻紋理平滑處理和回波視頻繪制等,如圖2所示。
開辟網(wǎng)絡(luò)線程和緩沖區(qū)A,無差別接收雷達(dá)并行數(shù)據(jù)處理器1~N的回波數(shù)據(jù)。為緩沖區(qū)A設(shè)置標(biāo)志位,表示A[i]數(shù)據(jù)元素是否更新或刪除,其中i表示緩沖區(qū)A內(nèi)數(shù)據(jù)元素所在位置,將該標(biāo)志位作為索引關(guān)鍵字,按網(wǎng)絡(luò)包到達(dá)先后順序?qū)⑹盏降纳葏^(qū)回波數(shù)據(jù)放入緩沖區(qū)內(nèi)尚未更新的位置,并將該位置的標(biāo)志位置為true,此時(shí)緩沖區(qū)A未排列也未拼包。
圖2 算法流程圖
視頻數(shù)據(jù)包攜帶方位計(jì)數(shù)器信息,可作為視頻數(shù)據(jù)的標(biāo)記,再通過下述方法進(jìn)行視頻數(shù)據(jù)包排列:
對(duì)于大小為BufferNum的緩沖區(qū)A,設(shè)置變量i、j用于指向緩沖區(qū)A內(nèi)的元素位置,其中i=0(即指向緩沖區(qū)A的第1個(gè)數(shù)),j=BufferNum-1(即指向緩沖區(qū)A的最后1個(gè)數(shù));將第1個(gè)數(shù)組元素賦值給pivot(即pivot = A[0])。從最后1個(gè)數(shù)由后向前開始遍歷(j--),當(dāng)找到滿足以下兩個(gè)條件任意一個(gè)條件的元素時(shí),交換i和j指向的數(shù)據(jù)元素:
(1)(A[j].unAziCount>=pivot.unAziCount)&&((A[j].unAziCount - pivot.unAziCount) <60000);
(2)(A[j].unAziCount<=pivot.unAziCount)&&((pivot.unAziCount- A[j].unAziCount) >60000)。
從第1個(gè)數(shù)由前向后開始遍歷(i++),當(dāng)找到滿足以下兩個(gè)條件任意一個(gè)條件的元素時(shí),交換i和j指向的數(shù)據(jù)元素:
(1)(A[i].unAziCount <= pivot.unAziCount) &&((pivot.unAziCount-A[i].unAziCount)<60000);
(2)(A[i].unAziCount>=pivot.unAziCount)&&((A[i].unAziCount - pivot.unAziCount) >60000)。
循環(huán)重復(fù)直至i=j,將pivot元素賦值給A[i],此次循環(huán)結(jié)束。
遞歸重復(fù)上述過程,最終實(shí)現(xiàn)緩沖區(qū)A中的數(shù)據(jù)按掃描線順時(shí)針排列。假設(shè)緩沖區(qū)A內(nèi)未經(jīng)排列的回波報(bào)文的脈沖計(jì)數(shù)器序列為 {65534,65533,65535,65532,2,3,1,4,0},則排列后的回波報(bào)文的脈沖計(jì)數(shù)器序列為 {65532,65533,65534,65535,0,1,2,3,4}
順序提取排列后緩沖區(qū)中的元素,將同一扇區(qū)的回波數(shù)據(jù)片段按圖3所示拼接成一個(gè)完整的扇區(qū)數(shù)據(jù),清空被提取的內(nèi)容并將標(biāo)志位(bVideoUpdate)置為false。
圖3 數(shù)據(jù)拼接示意圖
將拼接好的數(shù)據(jù)填入視頻紋理環(huán)形緩沖區(qū),同時(shí)更新寫指針;繪圖線程讀取視頻紋理環(huán)形緩沖區(qū)內(nèi)容,繪制視頻紋理,同時(shí)更新讀指針。
針對(duì)扇區(qū)采樣點(diǎn)出現(xiàn)的間隙,通過下式實(shí)現(xiàn)數(shù)據(jù)平滑填充:
(5)
式中,Data1為上一個(gè)方位上的回波數(shù)據(jù);Datan為當(dāng)前方位上的回波數(shù)據(jù);Datai為填充在i方位上的回波數(shù)據(jù);Indexi為i方位量化至態(tài)勢(shì)顯示區(qū)上的索引值,如圖4所示。
圖4 視頻紋理填充示意圖
通過設(shè)置合適的投影矩陣和合適的視口將圖形映射到屏幕坐標(biāo),或通過其他方式實(shí)現(xiàn)雷達(dá)回波的顯示。
實(shí)驗(yàn)平臺(tái)基于分布式處理器組,視頻數(shù)據(jù)經(jīng)光纖發(fā)送至分布式處理器的進(jìn)機(jī)卡中,再經(jīng)服務(wù)器輪詢處理后發(fā)送給顯示軟件。
本文使用基于OpenGL紋理映射機(jī)制,用于處理后的回波顯示。通過本文所提方法處理后,顯示效果如圖5所示。
經(jīng)實(shí)驗(yàn)證明,本文方法符合態(tài)勢(shì)顯示跟隨搜索雷達(dá)伺服天線0°~360°順時(shí)針旋轉(zhuǎn)探測(cè)而更新的作戰(zhàn)需要和使用習(xí)慣,能夠?qū)崿F(xiàn)大量程、高分辨率的信息傳輸及顯示,克服不同型號(hào)處理器組采樣能力造成的扇區(qū)疏、漏或間隙,實(shí)現(xiàn)扇區(qū)間的平滑處理,保證回波視頻紋理的精度和細(xì)膩度。后續(xù)將在距離副瓣的填充算法、節(jié)約數(shù)據(jù)預(yù)處理時(shí)間和效率方面進(jìn)一步展開研究。
圖5 處理后的回波顯示效果