APP下载

基于Qt的船用雷达简单模拟目标生成及显示

2016-09-28彭叶飞张龙敏

中国新技术新产品 2016年16期
关键词:线程绘图方位

彭叶飞 刘 亮 张龙敏 梁 猛

(陕西长岭电子科技有限责任公司产品开发部,陕西 宝鸡 721006)

基于Qt的船用雷达简单模拟目标生成及显示

彭叶飞 刘 亮 张龙敏 梁 猛

(陕西长岭电子科技有限责任公司产品开发部,陕西 宝鸡 721006)

使用Qt多线程及2D绘图技术实现船用雷达简单模拟目标生成及显示软件。为雷达显控终端研制和调试提供快捷、低成本的生成摸拟目标数据的方法。

Qt;多线程;2D绘图;雷达目标模拟

0.引言

在雷达显控终端的研制和调试中,使用真实目标提供回波数据成本高,而通过软件实现模拟目标回波数据,能更快捷、灵活及低成本地进行雷达显控终端的研制和调试。

随着多处理器系统的普及,应用程序中越来越多地采用多线程技术,使应用程序在处理数据密集事件时,也能对图形用户界面保持响应。本文在Windows系统上利用Qt的图形界面绘图及多线程技术,采用C++编程,实现船用雷达简单模拟目标生成及显示功能软件。

1.系统介绍

软件由方位生成、目标生成、图像生成及界面显示等模块。方位生成主要模拟天线旋转时的方位信息;目标生成实现生成具有运动模拟目标的回波数据;图像生成实现回波数据转换为图像数据的功能;界面显示实现回波图像的显示功能。

回波数据设计为一维数组,大小为[距离×方位](采用距离为1024,方位为4096),每个数组元素表示回波在该位置处的幅度值。

2.Qt多线程

2.1线程创建、启动

具有图形界面的Qt程序中,主线程由GUI线程充当,可拥有一个或多个非GUI线程作为次线程,以处理数据密集事件。软件中界面显示作为GUI线程,目标生成、方位生成及图像生成作为次线程。

Qt中通过子类化QThread并且重新实现run()函数创建线程,run()函数中为事件处理循环,通过调用start()启动线程。

2.2线程同步及通信

QMutex类提供一种保护一个变量或一段代码的方法,使同一时间只有一个线程使用它。目标生成和图像生成对回波数据进行读写,使用QMutex进行回波数据保护及同步。线程间通过信号槽机进行通信。

3.目标的生成及显示

3.1方位生成

根据雷达天线扫描周期,创建新线程定时产生方位,通过信号发送方位至目标生成及图像生成线程。

若方位更新周期为30ms,雷达天线转速为20转/分,方位值范围为0~4095(取正北为方位0,方位从0以顺时针方向增长),则每周期方位变化值可近似为41。

3.2目标生成

离散时间系统下,匀速直线运动目标状态方程用矩阵可表示为:

X(k+1)=F(k)X(k)

其中X(k)和F(k)分别为状态向量和系统状态转移矩阵,如下:

模拟目标包含位置、大小、航速和航向等状态信息,用距本船(雷达)距离、距船艏(或正北)方位表征目标位置,计算目标各扫描周期内的位置及大小。为方便计算,将位置、航速和航向信息转换至直角坐标系,计算目标下一周期位置。

目标只需在每个雷达扫描周期内更新一次。线程启动前,计算目标初始位置及下周期的位置并存储,线程启动后,结合接收到方位,提取目标位置更新回波数据,再计算下周期该目标位置,实现目标生成功能。

3.3图像生成

Qt中QImage类提供了与硬件无关的图像表示方法,它支持在非GUI线程中使用,允许在次线程中实现回波数据到图像数据的转换,完成图像生成功能。

图像生成应能实时反应天线扫描过区域内图像的变化,由于完全刷新整幅图像数据占用资源过多,因此只需更新两次天线信号之间回波数据发生变化的区域。

设置所显示图像大小,为回波数据的每个位置计算其对应图像上的坐标。图像中心对应回波数据密集,远离中心稀疏,即图像中一个像素既可能有多个回波数据与之对应,也可能与其周围像素共享一个回波数据。图像生成线程启动前,计算图像数据与回波数据位置对应表,线程启动后查找对应表快速读取回波数据生成图像。结合回波数据([1024×4096])和图像数据[800×800]大小分析,回波数据中一位置(用E表示),在图像数据中均有与之对应处,记为P,当E处值发生变化时,对应图像中P处像素值也发生变化,且图像中每一点均能在回波数据中有一个或多个数据与之对应,则用下式表示P处图像数据值:

其中Vp表示图像数据P处值,VEn表示回波数据En处值,N表示对应图像位置P处回波数据个数且大于0。使用setPixel函数设置图像像素,根据方位更新图像数据。

3.4 界面显示

QWidget类是Qt中所有用户界面对象的基类,通过继承QWidget,重新实现虚函数paintEvent,使用QPainter快速、方便地将图像绘制在屏幕上。

Qt绘图设备默认坐标系统是坐标原点位于左上角,X轴向右增长,Y轴向下增长,而基于雷达回波数据转换后的图像数据的坐标系统以雷达为坐标原点,X轴向右增长,Y轴向下增长。通过仿射变换能方便实现对物体实施缩放、旋转、平移操作。二维向量的变换可用一个3×3的矩阵来表示。在QTransform中定义变换矩阵及将一点变换为另一点公式如下:

其中m11和m22表示水平和垂直方向的比例;m12和m21表示水平和垂直方向的扭曲程度;m13和m23表示水平和垂直投影,m33为投影因子,(x,y)是变换前的点,(x′,y′)是变换后点。

雷达图像大小设置为800×800,Qt默认左上角作为坐标原点,通过设置变换矩阵参数,使Qt以图像中心位置(400,400)作为直角坐标系原点进行绘图,变换矩阵系数m11为1,m22为-1,m31和m32均为400,m33为1,其余均为0。

在Qt中,QImage主要是为图像I/O、图片访问和像素修改设计,而QPixmap主要用于绘图,针对屏幕显示而最佳化设计。为提高UI响应速度,软件在次线程中使用QImage将图像加载,在GUI线程中转换为QPixmap进行显示。

界面显示作为GUI线程,接收方位、图像数据,通过定时器将方位线、图像进行更新,实现回波数据显示功能。

4.软件测试

在PC上编译软件程序并运行,测试模拟扇区效果、若干运动目标图像显示情况,测试结果如图1所示,其中左为扇区效果图,中为模拟目标初始图像,右为目标运动一段时间后图像。

结论

本文介绍一种基于Qt多线程船用雷达简单模拟目标生成及显示的软件。经测试,软件达到预期效果,实现模拟目标数据生成及显示功能,为雷达显控终端提供快捷、低成本、灵活可控的模拟目标数据,对雷达回波显示及导航跟踪算法验证具有良好作用。

[1] Jasmin Blanchette, Mark Summerfield. C++ GUI Qt4编程(第二版)[M].北京:电子工业出版社,2008.

[2]蔡志明,卢传富,李立夏.精通Qt4编程(第二版)[M].北京:电子工业出版社,2011.

[3]何友,修建娟,张晶炜,关欣.雷达数据处理及应用[M].北京:电子工业出版社,2006.

TN957

A

猜你喜欢

线程绘图方位
来自河流的你
“禾下乘凉图”绘图人
基于HTML5 Canvas绘图技术应用
浅谈linux多线程协作
借助方位法的拆字
说方位
基于TMS320C6678的SAR方位向预滤波器的并行实现
Surfer和ArcView结合在气象绘图中的应用
基于上下文定界的Fork/Join并行性的并发程序可达性分析*
Linux线程实现技术研究