当前位置: 首页 > 范文大全 > 公文范文 >

基于OpenGL的SAR实时图像显示

发布时间:2022-05-13 16:48:01 | 来源:网友投稿

摘 要: 成像雷达在实际的操作中显示的图像数据量颇大,并且能呈现出图形的许多细节,因此,对显示的现实性、实时性要求很高。图像在屏面空间滚动时,数据中会包含已经输入的原始图像数据,同时也会滚动显示新录入的图像数据,两组图像数据在同一平面显示,而且要注意到在进行图像数据显示时,还要求在其空间上叠加相应的飞参信息和时间信息。因此,为满足成像雷达的显示需求,在VxWorks操作系统下通过采用OpenGL系统具有的双缓存技术和融合技术,可以获得平滑的、完整的、动感的、实时的动画效果。

关键词: OpenGL; SAR; 双缓存; VxWorks操作系统

中图分类号: TN911.73⁃34 文献标识码: A 文章编号: 1004⁃373X(2015)13⁃0007⁃03

Abstract: Since imaging radar needs to display massive image data and can present many graphic details in practical operation, the requirements in the aspects of displayed authenticity and real⁃time capacity are very high. When image is scrolling in display screen, the image data consists the entered original image data and new entered image data. The two sets of image data are displayed in the same plane. It is noticed that when image data displays, it also requires to overlay the relevant flight⁃parameter information and time information. To satisfy the display requirements of imaging radar, dual⁃cache technology and fusion technology of OpenGL system were adopted in VxWorks operating system, by which the smooth, complete, dynamic and real⁃time animation effect can be obtained.

Keywords: OpenGL; SAR; dual⁃cache; VxWorks operating system

0 引 言

VxWorks操作系统是一种嵌入式操作系统,因其在实际操作中,具有良好的性价比,操作程序简洁实用,运行扎实可靠被广泛应用在通信、军事、航空、航天等高精尖技术以及实时性要求极高的领域中[1]。VxWorks操作系统在图形界面的通用开发方式是采用风河公司的图形开发软件WindML,但该软件在具体实操时,不能有效利用图形界面实现操作效率的提升,同时利用该软件处理的图像界面显示,效果单一模糊,最大的短板是该软件在面临诸如图像的动画、反走样等问题时无法提供解决渠道[2]。因此,考虑选择系统显卡自带的OpenGL三维图形软件包,该软件最大的特点是通过建立函数关系进行操作,函数的设立、建构都依照实用简单的模型,利用OpenGL提供的函数功能,只需建构、设置一整套自己需要、简洁清晰的渲染函数就能完成图形选取、设计、规划,这样直接通过操作简单函数来进行图形制作,针对性、时效性强,所设计的图形更具直观性,同时OpenGL可以很好地解决诸如图形的动画、反走样等显示效果方面出现的难题[3⁃4]。

OpenGL是SGI公司开发的具有广泛运用性的一种软件接口,它的最大特点是可以移植,并且具备独立性,不受窗口操作系统和硬件环境的制约,是一种用于实时3D图形的标准范例。OpenGL的图像显示是基于硬件(通常是显卡)实现的,在OpenGL硬件运转情况下,调动OpenGL API 传送给硬件驱动程序,然后与图形显示硬件直接交互,如图1所示。由于软件技术的深度开发,OpenGL在3D图形加速卡方面的发展日益加快,使得图形处理更为简洁、实用、高效[5]。

1 软件设计

OpenGL提供glDrawPixels函数绘制像素贴图。在操作环节它利用glRasterPos定义当前光栅位置的左下角,然后以glPixelStore操控像素贴图的格式。在雷达图像中,像素格式通常为灰度图,含256级亮度,每个字节对应一个像素的信息。在glRasterPos函数设置好当前光栅位置后,随即可利用glDrawPixels函数将图像从内存复制到帧缓冲区内。

OpenGL支持双缓存技术,在显示前台缓存图像的同时,后台缓存绘制第二幅图像。当后台绘制完成后,后台缓存中的图像就显示出来,此时原来的前台缓存开始绘制第3幅图像,如此循环往复,使屏幕上的画面看起来是连续的。

另外,还要考虑融合技术。这是一种最为基本的图像处理技术,应用面广泛,利用这种技术可以显示飞参等信息。在图像处理过程中,融合的方式多种多样,最主要的方式是使用Alpha通道。在程序中,使用Alpha值可以直接完成字体位图与图像信息的融合透明处理[6]。

1.1 图像绘制

绘制像素贴图OpenGL函数及其参数如下:

(1) 描述位图数据的存储格式。

这里要解决好如下两个问题:如何使用glReadPixels函数保存像素;如何为glDrawPixels函数读取像素。在程序中主要是利用该函数设置从内存中读取像素的格式来解决上述问题。

Void glPixelStorei(Glenum pname,Glint param)

其中pname为要设置的参数;param是参数值。

控制从内存中读取像素的pname参数取值为:

GL_UNPACK_SWAP_BYTES

GL_UNPACK_LSB_FIRST

GL_UNPACK_ROW_LENGTH

GL_UNPACK_SKIP_ROWS

GL_UNPACK_SKIP_PIXEL

GL_UNPACK_ALIGMENT

程序参数取GL_UNPACK_ALIGMENT值为1,表示图像上每一行扫描的对齐方式是按照1个字节进行扫描对齐的。

(2) 设置当前光栅位置,确定图像的起始位置

Void glRasterPos2i(GLint x,GLint y)

其中,x表示图像起始左下角的水平坐标;y表示图像起始左下角的垂直坐标。x,y的数据类型也可以是浮点数,相应的函数名称是glRasterPos2f(GLfloat x,GLfloat y)。

(3) 从内存将像素数据复制到帧缓冲区光栅位置

Void glDrawPixels(GLsizei width,GLsizei height,GLenum format,GLenum type,const GLvoid* pixels)

其中:width表示像素计的图像宽度;height表示像素计的图像高度;format表示绘制的像素的颜色空间;type是指绘制的像素类型;pixels是图像的像素数据的指针。雷达图像是灰度级数据,因此设置type参数为GL_UNSIGNED_BYTE,format参数设为 GL_LUMINANCE。

1.2 图像平滑滚动的实现

OpenGL支持双缓冲系统,但在实际中OpenGL函数不会用来交换前台缓冲区和后台缓冲区。但是令人欣慰的是,每个OpenGL支持的窗口系统都可以通过设置一个函数调用来完成前后缓冲区之间的交换。在Windows中,函数是SwapBuffer。在程序中,函数是glxSwapBuffer。

OpenGL用双缓存技术来完成动画制作。程序默认帧存为两个视频缓存,在任意时刻,两者中只有一个内容能被显示出来。运行原理是, 当前可见视频缓存称为前台视频缓存,不可见的(正在画)的视频缓存称为后台视频缓存。当后台视频缓存中的内容被要求显示时,OpenGL就将它拷贝至前台视频缓存。在操作中显示硬件通过读取可见视频缓存中的内容,把相关结果显示在屏幕上。OpenGL在双缓存模式下,位平面被默认切分为前台和后台位平面。通过绘制函数操作的图像首先被写向后台位平面,这就要求,在描画物体之前,首先必须把帧存设置成正确的组态,当后台出现完整的画之后,就调用glxSwapBuffer函数,使其称为可见视频缓存[7]。glxSwapBuffer函数的工作过程如图2所示。

1.3 生成位图字符

OpenGL直接用于处理单色位图。这种储存形式单一、简洁,如果存储位为1则用指定的颜色填充该位,如果存储位为0,则用底色填充该位。如果按每行8位扫描,则按以下数组表示的位所生成的位图是字母B,如图3所示。

以同样的方法,可以表示A~Z的字母,0~9的数字。要输出位图,需要调用glBitmap函数把位图按指定的位置显示在屏幕上。glBitmap原型为:

Void glBitmap(GLsizei width,GLsizei height,GLfloat xorig, GLfloat yorig,GLfloat xmove,GLfloat ymove,const GLubyte* bitmap)

其中,width指定位图的宽,height指定位图的高,两者均以像素为单位;(xorig,yorig)为位图原点的坐标;(xmove,ymove)为位图基于当前光栅位置的偏移量;bitmap为存储位图的地址。

1.4 融合处理

OpenGL融合技术可以把源颜色与目的颜色进行某种方式的融合,通过融合组合成为目标颜色,从而生产出透明或半透明的特殊效果。颜色的比例融合通过Alpha进行操作,即RGBA颜色模型中的A。融合操作涉及两个因子,一个是源因子,另一个是目的因子。在进行融合计算之前,要完成两个因子的融合,完成此功能的函数是glBlendFunc,原型为:

void glBlendFunc(GLenum sfactor,GLenum dfactor)

参数sfactor说明怎样计算源因子,参数dfactor说明怎样计算目标因子。

设源融合因子为[(Sr,Sg,Sb,Sa),]目的因子为[(Dr,Dg,][Db,Da),]则融合后的颜色为:[(RsSr+RdDr,GsSg+GdDg,BsSb+][BdDb,AsSa+AdDa),]颜色的各个分量最后自动进行归一化处理。

融合作为一种特殊的功能,必须进行启动和关闭声明:

glEnable(GL_BLEND);

glDisable(GL_BLEND);

2 测试结果

显卡输出的雷达图像视频经视频采集卡接收处理后,实现图像的正常显示,如图4所示。

在显卡显示噪声的同时,会叠加载机信息。

3 结 语

本文通过基于OpenGL在实际操作中的图像显示方法(一方面显示原始图像信息,同时显示自数据处理系统的二次信息),在程式命令的操作下,显示系统会进行显示模式转换,如A型、B型和P型显示器,显示切换功能会不停转换,显示更加灵活,实用性较强。

参考文献

[1] 胡延苏,南秦博,高昂,等.VxWorks中任务恢复机制的设计与实现[J].空军工程大学学报:自然科学版,2013(5):48⁃52.

[2] 郑元珠.基于VxWorks操作系统的雷达显示软件屏幕截图技术研究[J].舰船电子对抗,2010(2):116⁃120.

[3] 李军.OpenGL编程指南[M].北京:机械工业出版社,2009.

[4] 和克智.OpenGL 编程技术详解[M].北京:化学工业出版社,2010.

[5] 张琪.OpenGL超级宝典[M].北京:人民邮电出版社,2010.

[6] 马建萍,严恭敏,王保卫.OpenGL在雷达图像实时显示中的应用[J].航空计算技术,2005,35(4):72⁃74.

[7] 柳佳佳,栾晓岩,边淑莉.基于OpenGL的二维矢量地图可视化技术研究[J].测绘科学,2013(5):88⁃90.

推荐访问:实时 图像 显示 OpenGL SAR

本文标题:基于OpenGL的SAR实时图像显示
链接地址:http://www.ylwt22.com/gongwenfanwen/2022/0513/133992.html

版权声明:
1.十号范文网的资料来自互联网以及用户的投稿,用于非商业性学习目的免费阅览。
2.《基于OpenGL的SAR实时图像显示》一文的著作权归原作者所有,仅供学习参考,转载或引用时请保留版权信息。
3.如果本网所转载内容不慎侵犯了您的权益,请联系我们,我们将会及时删除。

十号范文网 |
Copyright © 2018-2024 十号范文网 Inc. All Rights Reserved.十号范文网 版权所有
本站部分资源和信息来源于互联网,如有侵犯您的权益,请尽快联系我们进行处理,谢谢!备案号:粤ICP备18086540号