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