利用OpenGL实现全景图像跳转的算法设计*
2021-06-07杨信锟阮承治
杨信锟,阮承治,陈 镔
(1.武夷学院 机电工程学院,福建 武夷山354300;2.农机智能控制与制造技术福建省高校重点实验室,福建 武夷山354300)
随着科学技术的迅猛发展,多媒体信息种类增多,表现效果趋于多样化[1],其中VR全景图像是多媒体显示发展的重要组成部分,具有真实、直观、全面的性能特点,也是虚拟现实和计算机视觉的重要组成部分[2]。全景图像跳转是指全景图像中的不同场景视图的切换,应用最广泛的全景图漫游,是现有的全景图像跳转技术的主要依据,全景图坐标与屏幕坐标之间的关系是根据校正图与球面坐标的关系确定的[3-4]。当每次点击屏幕进行视场移动时,每移动一次,都需要更新校正图与球面坐标之间的关系[5],该算法计算量很大,除了保证实时性,还需要高配置的硬件系统,因此成本较高,效率低下。
本论文提出了一种全新的全景图像跳转方法,利用专业的图形程序接口OpenGL来实现,将采集到的全景图像进行坐标解析,先进行图像的投影变换,再进行视口变换,得到屏幕坐标,当视图屏幕点击位置发生变化时,则可以和全景坐标进行匹配判断,实现图像的跳转。
1 OpenGL全景图像跳转算法简述
该方案利用专业的图形程序接口OpenGL来实现,OpenGL是一款专业的图形程序接口,采用C语言编写,它具有独立的特性,与硬件无关,易用可操作性强,可以基于不同的硬件平台实现,同时支持多种操作系统,是常用的图形开发标准库[3]。
该算法实现图像跳转总共有4个步骤:首先利用全景相机采集全景图像,解析得到多个全景图像坐标,并采用几何变换消除图像的变形;接着在OpenGL中调用glMatrixMode函数进行图像的投影变换;然后在OpenGL中调用glViewPort进行视口变换,得到屏幕坐标;最后判断屏幕坐标与全景图像坐标的匹配,根据匹配结果完成子图像的跳转。具体流程如图1所示。
1.1 全景图像的采集以及几何变换
全景图像的采集指的是利用专业的全景摄影装置进行全景图像信息的采集,本实验采用柯达Pixpro SP360全景相机。该相机采用方盒圆顶设计,可以基于不同场景针对性选择合适的拍摄视角,该相机在水平或者垂直状态都能拍摄到360度全景照片和视频。随后将全景图像的像素解析成坐标的形式,并采用几何变换消除图像获取时出现的几何变形,几何变换包括旋转、移动、拉伸、压缩、错切等。
图1 图像跳转算法流程
1.2 图像的投影变换
投影变换就是将图片投影到一个新的视平面,只显示可视空间内的场景到屏幕上。根据全景图像的坐标进行图像投影变换,得到图像的投影模型,具体的步骤为:
第一步,采用变换公式(1)
因此,根据全景图像的坐标,利用投影变换矩阵,就可以得到投影变换后的图像坐标。在OpenGL中调用glMatrixMode函数,以GL_PROJECTION作为参数,调用的指令为:glMatrixMode(GL_PROJECTION)。
使用OpenGL的运行过程如图2所示。
如果图像的视角发生改变,则需要更新OpenGL中对应的变换矩阵得到新的图像坐标。
1.3 图像的视口变换
在投影变换之后,将对视图进行视口变换,得到图像的屏幕坐标。在OpenGL中调用glViewPort函数,调用指令如下:
其中,x,y为视口的起点,一般为(0,0),width,height为视见区域的宽和高。
1.4 图像的跳转
假设当前视图有N个图像坐标,若视场角发生变化时,则需在OpenGL中更新对应的变换矩阵,再进行视口变换得到新的屏幕坐标,此时如果屏幕出现单击操作,则先判断此时点击位置点的图像坐标,是否与当前视图的N个屏幕坐标一致,如果坐标匹配成功,图像则跳转到点击的子图像。具体的流程如图3所示。
2 实验对比
将本方法与基于Pano2VR的方法进行对比实验,Pano2VR是一款全景图像转换和编辑软件,可以方便地进行图像格式转换以及为图像拼接做预处理。
实验平台为Arm cortex-A7+mali400 GPU,实验结果如表1所示。
使用Pano2VR方法的图像跳转平均时间为50ms,而使用本方法跳转一次时间为30ms,节约了40%的时间,提高了运算效率。
3 结论
上述研究表明,本文提出了全新的采用依据OpenGL实现的全景图像跳转方法,该方法判断高效,实现全景浏览及切换的功能,给浏览者真实、高效的全景浏览体验,具有一定的科研和应用价值。
图2 OpenGL的运行过程
图3 图像跳转流程