陕西长岭电子科技有限责任公司产品开发部 彭叶飞
基于Qt Graphics View框架和OpenGL的雷达图像分层的实现
陕西长岭电子科技有限责任公司产品开发部彭叶飞
电子技术的发展日新月异,对雷达显控终端的要求也越来越高。本文提出一种基于Qt Graphics View框架和OpenGL来实现雷达图像分层的方法,方式简单,并具有可移植性,可帮助开发人员在不同平台下快速设计高性能、高稳定性的雷达显控终端。
电子海图;雷达;图像分层
在军事、航海等领域,电子海图无法显示动态目标,雷达则不能识别周围目标的属性,将电子海图与雷达信息叠加显示,才可实现两者的优势互补[1]。随着电子海图与雷达信息数字化后,电子海图与雷达图像信息的叠加显示已成为必然趋势。将两者结合起来使用既可以有效地弥补单独使用雷达/ARPA的局限性[2],又能在航行水域海图信息的基础上提供本船、本船周围的静态目标与动态目标三者之间的位置关系,大大地提高船舶避碰能力和导航定位精度。
本文提出一种基于Qt Graphics View框架和OpenGL实现雷达图像分层的方法,不仅对电子海图与雷达回波视频进行分层,还实现了对雷达二次信息、ARPA、AIS及尾迹等信息的分层,实现方式简单,能极大的提高雷达终端显示系统的开发效率。
Qt的Graphics View框架使用MVC模式,适合对大量2D图元进行管理。在Graphics View框架中,场景(Scene)储存了图形数据,它通过视图(View)以多种形式表现,每个图元(Item)可以单独进行控制。Qt的Graphics View框架中包括三个主要的类:QGraphicsScene、QGraphicsView和QGraphicsItem,分别是场景、视图和图元。一个场景可以通过多个视图表现,一个场景可以包括多个几何图元[3],每个图元可单独更新。
OpenGL (Open Graphics Library)是图形硬件的一个软件接口,也是该领域的工业标准。OpenGL是基于图形处理器的软件接口,在OpenGL硬件方式实现下,OpenGL API被传送给硬件驱动程序,与图形处理器直接交互,可以实现复杂的计算机图形效果[4]。
2.1电子海图层
目前很多已装备雷达都是使用硬件板卡对电子海图和雷达回波视频进行“硬叠加”或是利用可编程GPU着色器实现“软叠加”[5]。“硬叠加”系统开发难度高,设备的成本及维护费用大;GPU着色器“软叠加”虽然具有一定的优势,但其受限于GPU性能,在实时嵌入式操作系统下有很大的局限性。
利用Qt Graphics View框架很容易实现电子海图的叠加:只需继承QGraphicsScene类,并实现其drawBackground函数,在该函数里调用QPainter的setBrush函数将根据需要显示的海图设置成背景画刷,然后调用QPainter的drawRect函数将其显示,如图1中1所示。当雷达由于量程或者舰艇地理位置变化需要更新海图时,只需要将得到的海图更新成画刷即可。由于本文所述系统主要用于雷达观察,目的是提高船舶避碰能力和导航定位精度,所以对于海图只是简单的叠加显示。
2.2雷达回波视频层
现在大部分的导航、搜索雷达仍使用旋转天线[5],当雷达视频被数字化采样后,雷达视频形成一组极坐标数据包(包含方位及其距离单元各点对应的数据)。将视频数据按方位形成一组二维数组,并上传GPU形成纹理,纹理内各纹理单元数据与数组内数据一一对应。当实时更新视频数据时,只需要更新纹理内相应部分,大大减少了系统开销。
使用纹理存储器储存雷达视频数据可以方便的使用着色器程序对视频数据进行处理,系统的开销只是在实时更新数据并上传GPU时产生的,可以根据计算机平台选择适当的上传方式以提高性能。
Qt Graphics View框架提供了对OpenGL的支持,利用OpenGL可对回波纹理实时更新并利用着色器程序进行坐标扫描变换和余辉处理[5],,只需在使用OpenGL绘制时打开混合效果,就可以完美的使雷达回波与电子海图进行叠加,极大的提高了显示效果。为了便于观察雷达回波,使用了红色作为雷达回波视频颜色。如图1中2所示。
具体实现如下:在上述drawBackground函数中首先调用QPainter的beginNativePainting函数以调用标准OpenGL函数,先打开混合功能并绑定着色器程序,再进行四边形图元绘制,绘制过程中进行雷达视频回波纹理映射,即完成了雷达回波的显示。
2.3雷达二次信息层
图1 雷达图像分层示意图
雷达二次信息(包括距标圈、电子方位线、艇艏线、测距线、扫描线等)是观察雷达回波视频的重要辅助手段之一。将雷达二次信息设计为QGraphicsItem图元状态机,可对各信息独立控制;对图元使用透明背景,可方便与电子海图和雷达回波视频进行叠加。只在二次信息有变化时才更新图元,减少了不必要的重绘,大大减少了对系统资源的占用。如图1中3所示。
2.4 ARPA、AIS信息层
由于ARPA(Automatic Radar Plotting Aid,自动雷达标绘仪)以及AIS(AutoMatic Identification System,船舶自动识别系统)提供的都是独立的目标信息,而Qt Graphics View框架适合对大量2D图元进行管理。只需按照ARPA及AIS标准继承QGraphicsItem类,设计并建立图元添加至QGraphicsScene场景,便可利用场景方便对每个图元独立进行更新绘制和管理。如图1中4所示。
2.5尾迹层
尾迹是雷达目标检测和导航避碰的重要辅助手段之一,利用OpenGL着色器程序对尾迹数据生成的纹理与回波纹理进行混合处理,即可完成尾迹的叠加显示。如图1中5、6所示。
利用Qt Graphics View框架和OpenGL实现的雷达图像分层方法,不仅可以为开发者提供高效、便捷的方法,而且在实现高稳定性、高可靠性和强实用性雷达显示控制终端方面具有很大的针对性。由于Qt及OpenGL都很好的支持跨平台编程。本文提出的方法在Windows XP、linux(Ubuntu)及Vxworks6.8下都得到了很好的验证。
[1]刘毅,索继东,曹兰兰.基于GDI+的电子海图与雷达图像的叠加显示[J].航海技术,2009(1):43-45.
[2]Donderi D C,Fadden M S.A Single marine overlay display is more effieient than separate chart and radar displays.Elsevier eomputer science,2003(24):147-155.
[3]蔡志明,卢传富,李立夏等.精通Qt4编程(第2版)[M].电子工业出版社,2011.
[4]Dave shreiner,The Khronos OpenGL ARB Working Group.OpenGL Programming Guide[M].Boston:Addison-Wesley Professional,2009.
[5]张辉,孙立国,李世丹,王德生,等.基于可编程显卡的信息化雷达终端显示系统[J].信息与电子工程,2010,1672-2892(2010)06-0652-04.
彭叶飞(1983-),男,山西大同人,西安电子科技大学电子工程本科生,从事雷达显控终端软件设计。