彭葉飛 劉 亮 張龍敏 梁 猛
(陜西長嶺電子科技有限責(zé)任公司產(chǎn)品開發(fā)部,陜西 寶雞 721006)
基于Qt的船用雷達(dá)簡單模擬目標(biāo)生成及顯示
彭葉飛 劉 亮 張龍敏 梁 猛
(陜西長嶺電子科技有限責(zé)任公司產(chǎn)品開發(fā)部,陜西 寶雞 721006)
使用Qt多線程及2D繪圖技術(shù)實現(xiàn)船用雷達(dá)簡單模擬目標(biāo)生成及顯示軟件。為雷達(dá)顯控終端研制和調(diào)試提供快捷、低成本的生成摸擬目標(biāo)數(shù)據(jù)的方法。
Qt;多線程;2D繪圖;雷達(dá)目標(biāo)模擬
在雷達(dá)顯控終端的研制和調(diào)試中,使用真實目標(biāo)提供回波數(shù)據(jù)成本高,而通過軟件實現(xiàn)模擬目標(biāo)回波數(shù)據(jù),能更快捷、靈活及低成本地進(jìn)行雷達(dá)顯控終端的研制和調(diào)試。
隨著多處理器系統(tǒng)的普及,應(yīng)用程序中越來越多地采用多線程技術(shù),使應(yīng)用程序在處理數(shù)據(jù)密集事件時,也能對圖形用戶界面保持響應(yīng)。本文在Windows系統(tǒng)上利用Qt的圖形界面繪圖及多線程技術(shù),采用C++編程,實現(xiàn)船用雷達(dá)簡單模擬目標(biāo)生成及顯示功能軟件。
軟件由方位生成、目標(biāo)生成、圖像生成及界面顯示等模塊。方位生成主要模擬天線旋轉(zhuǎn)時的方位信息;目標(biāo)生成實現(xiàn)生成具有運(yùn)動模擬目標(biāo)的回波數(shù)據(jù);圖像生成實現(xiàn)回波數(shù)據(jù)轉(zhuǎn)換為圖像數(shù)據(jù)的功能;界面顯示實現(xiàn)回波圖像的顯示功能。
回波數(shù)據(jù)設(shè)計為一維數(shù)組,大小為[距離×方位](采用距離為1024,方位為4096),每個數(shù)組元素表示回波在該位置處的幅度值。
2.1線程創(chuàng)建、啟動
具有圖形界面的Qt程序中,主線程由GUI線程充當(dāng),可擁有一個或多個非GUI線程作為次線程,以處理數(shù)據(jù)密集事件。軟件中界面顯示作為GUI線程,目標(biāo)生成、方位生成及圖像生成作為次線程。
Qt中通過子類化QThread并且重新實現(xiàn)run()函數(shù)創(chuàng)建線程,run()函數(shù)中為事件處理循環(huán),通過調(diào)用start()啟動線程。
2.2線程同步及通信
QMutex類提供一種保護(hù)一個變量或一段代碼的方法,使同一時間只有一個線程使用它。目標(biāo)生成和圖像生成對回波數(shù)據(jù)進(jìn)行讀寫,使用QMutex進(jìn)行回波數(shù)據(jù)保護(hù)及同步。線程間通過信號槽機(jī)進(jìn)行通信。
3.1方位生成
根據(jù)雷達(dá)天線掃描周期,創(chuàng)建新線程定時產(chǎn)生方位,通過信號發(fā)送方位至目標(biāo)生成及圖像生成線程。
若方位更新周期為30ms,雷達(dá)天線轉(zhuǎn)速為20轉(zhuǎn)/分,方位值范圍為0~4095(取正北為方位0,方位從0以順時針方向增長),則每周期方位變化值可近似為41。
3.2目標(biāo)生成
離散時間系統(tǒng)下,勻速直線運(yùn)動目標(biāo)狀態(tài)方程用矩陣可表示為:
X(k+1)=F(k)X(k)
其中X(k)和F(k)分別為狀態(tài)向量和系統(tǒng)狀態(tài)轉(zhuǎn)移矩陣,如下:
模擬目標(biāo)包含位置、大小、航速和航向等狀態(tài)信息,用距本船(雷達(dá))距離、距船艏(或正北)方位表征目標(biāo)位置,計算目標(biāo)各掃描周期內(nèi)的位置及大小。為方便計算,將位置、航速和航向信息轉(zhuǎn)換至直角坐標(biāo)系,計算目標(biāo)下一周期位置。
目標(biāo)只需在每個雷達(dá)掃描周期內(nèi)更新一次。線程啟動前,計算目標(biāo)初始位置及下周期的位置并存儲,線程啟動后,結(jié)合接收到方位,提取目標(biāo)位置更新回波數(shù)據(jù),再計算下周期該目標(biāo)位置,實現(xiàn)目標(biāo)生成功能。
3.3圖像生成
Qt中QImage類提供了與硬件無關(guān)的圖像表示方法,它支持在非GUI線程中使用,允許在次線程中實現(xiàn)回波數(shù)據(jù)到圖像數(shù)據(jù)的轉(zhuǎn)換,完成圖像生成功能。
圖像生成應(yīng)能實時反應(yīng)天線掃描過區(qū)域內(nèi)圖像的變化,由于完全刷新整幅圖像數(shù)據(jù)占用資源過多,因此只需更新兩次天線信號之間回波數(shù)據(jù)發(fā)生變化的區(qū)域。
設(shè)置所顯示圖像大小,為回波數(shù)據(jù)的每個位置計算其對應(yīng)圖像上的坐標(biāo)。圖像中心對應(yīng)回波數(shù)據(jù)密集,遠(yuǎn)離中心稀疏,即圖像中一個像素既可能有多個回波數(shù)據(jù)與之對應(yīng),也可能與其周圍像素共享一個回波數(shù)據(jù)。圖像生成線程啟動前,計算圖像數(shù)據(jù)與回波數(shù)據(jù)位置對應(yīng)表,線程啟動后查找對應(yīng)表快速讀取回波數(shù)據(jù)生成圖像。結(jié)合回波數(shù)據(jù)([1024×4096])和圖像數(shù)據(jù)[800×800]大小分析,回波數(shù)據(jù)中一位置(用E表示),在圖像數(shù)據(jù)中均有與之對應(yīng)處,記為P,當(dāng)E處值發(fā)生變化時,對應(yīng)圖像中P處像素值也發(fā)生變化,且圖像中每一點均能在回波數(shù)據(jù)中有一個或多個數(shù)據(jù)與之對應(yīng),則用下式表示P處圖像數(shù)據(jù)值:
其中Vp表示圖像數(shù)據(jù)P處值,VEn表示回波數(shù)據(jù)En處值,N表示對應(yīng)圖像位置P處回波數(shù)據(jù)個數(shù)且大于0。使用setPixel函數(shù)設(shè)置圖像像素,根據(jù)方位更新圖像數(shù)據(jù)。
3.4 界面顯示
QWidget類是Qt中所有用戶界面對象的基類,通過繼承QWidget,重新實現(xiàn)虛函數(shù)paintEvent,使用QPainter快速、方便地將圖像繪制在屏幕上。
Qt繪圖設(shè)備默認(rèn)坐標(biāo)系統(tǒng)是坐標(biāo)原點位于左上角,X軸向右增長,Y軸向下增長,而基于雷達(dá)回波數(shù)據(jù)轉(zhuǎn)換后的圖像數(shù)據(jù)的坐標(biāo)系統(tǒng)以雷達(dá)為坐標(biāo)原點,X軸向右增長,Y軸向下增長。通過仿射變換能方便實現(xiàn)對物體實施縮放、旋轉(zhuǎn)、平移操作。二維向量的變換可用一個3×3的矩陣來表示。在QTransform中定義變換矩陣及將一點變換為另一點公式如下:
其中m11和m22表示水平和垂直方向的比例;m12和m21表示水平和垂直方向的扭曲程度;m13和m23表示水平和垂直投影,m33為投影因子,(x,y)是變換前的點,(x′,y′)是變換后點。
雷達(dá)圖像大小設(shè)置為800×800,Qt默認(rèn)左上角作為坐標(biāo)原點,通過設(shè)置變換矩陣參數(shù),使Qt以圖像中心位置(400,400)作為直角坐標(biāo)系原點進(jìn)行繪圖,變換矩陣系數(shù)m11為1,m22為-1,m31和m32均為400,m33為1,其余均為0。
在Qt中,QImage主要是為圖像I/O、圖片訪問和像素修改設(shè)計,而QPixmap主要用于繪圖,針對屏幕顯示而最佳化設(shè)計。為提高UI響應(yīng)速度,軟件在次線程中使用QImage將圖像加載,在GUI線程中轉(zhuǎn)換為QPixmap進(jìn)行顯示。
界面顯示作為GUI線程,接收方位、圖像數(shù)據(jù),通過定時器將方位線、圖像進(jìn)行更新,實現(xiàn)回波數(shù)據(jù)顯示功能。
在PC上編譯軟件程序并運(yùn)行,測試模擬扇區(qū)效果、若干運(yùn)動目標(biāo)圖像顯示情況,測試結(jié)果如圖1所示,其中左為扇區(qū)效果圖,中為模擬目標(biāo)初始圖像,右為目標(biāo)運(yùn)動一段時間后圖像。
本文介紹一種基于Qt多線程船用雷達(dá)簡單模擬目標(biāo)生成及顯示的軟件。經(jīng)測試,軟件達(dá)到預(yù)期效果,實現(xiàn)模擬目標(biāo)數(shù)據(jù)生成及顯示功能,為雷達(dá)顯控終端提供快捷、低成本、靈活可控的模擬目標(biāo)數(shù)據(jù),對雷達(dá)回波顯示及導(dǎo)航跟蹤算法驗證具有良好作用。
[1] Jasmin Blanchette, Mark Summerfield. C++ GUI Qt4編程(第二版)[M].北京:電子工業(yè)出版社,2008.
[2]蔡志明,盧傳富,李立夏.精通Qt4編程(第二版)[M].北京:電子工業(yè)出版社,2011.
[3]何友,修建娟,張晶煒,關(guān)欣.雷達(dá)數(shù)據(jù)處理及應(yīng)用[M].北京:電子工業(yè)出版社,2006.
TN957
A