System.ArgumentOutOfRangeException: 索引和长度必须引用该字符串内的位置。 参数名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind()
【技术实现步骤摘要】
本专利技术属于雷达显示控制,尤其涉及基于gpu和opengl的vts雷达ppi显示方法。
技术介绍
1、为使船舶能顺畅通航于有限水域或拥挤水域,各海运国家逐渐建立起岸船之间合作的船舶交通管理系统,简称vts系统,主要包括岸基雷达、ais基站、光电设备、北斗定位系统和船载移动终端等设备。作为vts系统的重要组成部分,vts雷达探测是主动探测,不必受目标条件的限制;且vts雷达可以探测和获取覆盖范围的全景图像,在雷达的ppi显示界面需要显示雷达目标的原始视频图像和目标的点迹和航迹数据,并可根据雷达原始视频判断目标的大小和形状。
2、雷达ppi模式显示除了要显示更新频率快、实时性高的雷达视频,还要显示检测后的点航迹信息以及量程线。传统的雷达原始视频显示是基于fpga或dsp在硬件板卡上来实现的,虽然采用硬件板卡显示具有实时性好、精度高和专用性强等优点,但是也存在成本高、可移植性差、系统开发、更新和维护易受硬件平台限制等缺点。随着计算机技术飞速发展,在计算机上采用软件来实现雷达视频显示已经成为一种趋势。经过多年的应用,用户对雷达终端画质的要求不断提高,原本基于cpu的图形渲染显示无法满足用户的需求。
技术实现思路
1、为了克服现有技术在vts雷达ppi显示方面所存在的难点和缺点,本专利技术提出基于gpu和opengl的vts雷达ppi显示方法。在本专利技术中使用的gpu是英伟达公司的cuda并行计算架构,该显示方法使用opengl的多重纹理映射技术和gpu的高速并行计算能力,实
2、本专利技术为解决上述技术问题采用以下技术方案:
3、本专利技术第一方面提供了基于gpu和opengl的vts雷达ppi显示方法,主要包括初始化环境和设备、接收实时网络数据或读取回放文件数据并传递到gpu显存、cuda内核并行数据提取、用户交互、互操作方式显示雷达视频等步骤。其中,雷达原始视频的并行计算以及从缓冲到纹理的转换两部分主要在gpu设备端执行,点航迹数据和背景地图的纹理转换在cpu端完成,最终纹理的渲染调用opengl的api接口实现。
4、具体步骤如下:
5、s1,创建一个基于qglwidget的主显示视图,并初始化一个逻辑视图管理类,该视图管理类完成显示窗口改变、鼠标移动和鼠标滚轮时,主显示视图随之进行中心点变换、移动和缩放动作。最后调用视图工厂创建一个ppi显示区域,至此,ppi显示的窗口和视口已建立完成;
6、s2,初始化cuda和opengl的环境和各项参数,按照地图背景层、雷达原始视频层和雷达信息层初始化三个图层,并为各个图层设置叠加信号量以及图层的叠加顺序。其中,雷达原始视频的绘制通过cuda和opengl的交互完成,地图背景层和雷达信息层的绘制通过opengl的纹理渲染接口完成;
7、s3,新建ppi显示背景地图渲染线程,初始化该图层对应纹理参数,包含两个qimage变量和两个opengl纹理对象。在线程运行期间,轮流将图层数据渲染到这两个qimage中,当image发生变化时,绘制图像到对应的纹理中;
8、s4,新建雷达信息层渲染线程,初始化该图层对应纹理参数,包含两个qimage变量和两个opengl纹理对象。在线程运行期间,轮流将图层数据渲染到这两个qimage中,当image发生变化时,绘制图像到对应的纹理中;
9、s5,新建雷达原始视频显示处理线程,注册雷达原始视频数据对象和雷达原始视频视图对象、分配设备端回波参数对象、分配颜色表内存、分配回波数据内存、分配显示数据内存、分配时间表内存、分配存放当前回波的内存。该线程主要完成将雷达原始视频数据从cpu拷贝到gpu,在cuda中更新gpu数据,然后更新相应的雷达原始视频纹理内存;
10、s6,新建数据接收线程,根据配置文件,初始化雷达原始视频和雷达点航迹数据的udp接收地址和端口;
11、s7,启动各个cpu处理线程,在该方法中,除了主线程和gpu的并行计算线程外,另外有4个线程,通信线程1负责数据的收发;绘图线程2负责雷达信息层数据的绘制;绘图线程3为雷达原始视频绘制线程,通过完成cuda和opengl的交互,负责雷达原始视频的绘制;绘图线程4负责地图背景层的绘制;
12、s8,根据接收到的数据和用户操作,确定相应的图层是否需要修改,若需要修改则根据图层的类型,进行相应的坐标转换和纹理更新;
13、s9,根据图层的叠加顺序,使用opengl的纹理渲染接口,绘制各个图层的图像,完成ppi显示模式下三层图层的显示。
14、其中雷达原始视频绘制相关的cuda和opengl数据交互步骤如下:
15、s51,设置cuda和opengl的数据共享区。设置cudagraphicsresource*类型和gluint类型的两个变量完成数据的共享;
16、s52,初始化opengl。雷达ppi除了要显示更新频率快、实时性高的雷达视频,还要显示检测后的点航迹信息以及量程线,本文采用opengl的多重纹理技术,创建3个纹理图层,第一层是瓦片地图层,第二层是雷达原始视频层,第三层是点迹航迹和方位线量程线等数据信息层。在opengl初始化阶段初始化三个纹理图层;
17、s53,使用openglapi创建数据缓冲区。glgenbuffers(1,&m_pbo)生成一个缓冲区句柄,glbindbuffer(gl_pixel_unpack_buffer,m_pbo)将句柄绑定到像素缓冲区,glbufferdata(gl_pixel_unpack_buffer,w*h*4,0,gl_stream
18、_draw_arb)申请内存空间并设置相关属性以及初始值;
19、s54,数据缓冲区分享给cuda。本方法需要使用gpu的并行计算能力,需要设置cuda能够访问共享缓冲区,cudagraphicsglregisterbuffer(&m_cudaglresource,m_pbo,cudagraphicsm apflagswritediscard)将缓冲区句柄注册为一个图形资源;
20、s55,cuda映射共享资源,获取相对于显卡而言的设备指针。按顺序调用cudagraphicsmapresources()、cudagraphicsresourcegetmappedpointer完成该操作。映射完成后,我们需要获得缓冲区对于显卡(设备)而言的指针,获得设备指针后,就可以使用cuda的并行计算功能了;
21、s56,执行cuda核函数进行并行计算。执行核函数updatepviewtexturefull<<<numblocks,threadsper本文档来自技高网...
【技术保护点】
1.基于GPU和OpenGL的VTS雷达PPI显示方法,其特征在于,包括以下步骤:
2.如权利要求1所述的基于GPU和OpenGL的VTS雷达PPI显示方法,其特征在于,步骤S1中,主显示区的显示视图由一个视图管理类进行管理。
3.如权利要求1所述的基于GPU和OpenGL的VTS雷达PPI显示方法,其特征在于,步骤S3中,背景地图的渲染显示采用独立线程和单独纹理图层。
4.如权利要求1所述的基于GPU和OpenGL的VTS雷达PPI显示方法,其特征在于,步骤S4中,该显示雷达信息层的渲染显示采用独立线程和单独纹理图层。
5.如权利要求1所述的基于GPU和OpenGL的VTS雷达PPI显示方法,其特征在于,步骤S2和步骤S9中,所述雷达原始视频的渲染采用GPU和OpenGL的交互操作具体包括如下步骤:
6.如权利要求1所述的基于GPU和OpenGL的VTS雷达PPI显示方法,其特征在于在,步骤S5中,雷达原始视频的渲染显示采用独立线程和单独纹理图层。
7.如权利要求1所述的基于GPU和OpenGL的VTS雷达
...【技术特征摘要】
1.基于gpu和opengl的vts雷达ppi显示方法,其特征在于,包括以下步骤:
2.如权利要求1所述的基于gpu和opengl的vts雷达ppi显示方法,其特征在于,步骤s1中,主显示区的显示视图由一个视图管理类进行管理。
3.如权利要求1所述的基于gpu和opengl的vts雷达ppi显示方法,其特征在于,步骤s3中,背景地图的渲染显示采用独立线程和单独纹理图层。
4.如权利要求1所述的基于gpu和opengl的vts雷达ppi显示方法,其特征在于,步骤s4中,该显示雷达信息层的渲染显示采用独立线程...
【专利技术属性】
技术研发人员:李敏杰,陈龙,郭强,
申请(专利权)人:四创电子股份有限公司,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。