王培武
(四川大学计算机学院,成都 610065)
2016被看作虚拟现实技术发展元年,传统媒体与新媒体都热切关注,伴随VR技术迅速发展,全景视频为用户提供了一种全新的,能够在沉浸式场景中获取更加直观,临场感很强的视觉体验。全景视频支持多角度播放,与传统视频内容的被动接收方式不同,观看者可以主动探索视频内容,增强临场参与感,成为虚拟参与者。
为了更好的用户体验,保证4K分辨率基本上是全景视频领域的最低要求,用户通常使用VR头戴设备进行观看,VR头盔一般支持3D播放模式。在传输由H.264/H.265编码的4K3D全景视频时,需要至少100Mbps的传输带宽,而根据Akamai于2017年5月发布的全球《2017年第一季度互联网/连接状态报告》,中国大陆平均网速为7.6Mbps,显然这对于当前的在线全景视频播放存在很大的困难。因此,本文提出一种基于头盔的,有效降低数据传输量的全景视频播放系统方法。
本文系统是全景视频播放系统,其中涉及视频解码,帧处理,帧播放等功能,具有较强的实时性要求。整个系统基于C/S架构模式,Server端完成视频解码,帧处理及视频流传输任务,Client端负责视频帧渲染与播放、头盔传感器数据上报功能。系统架构如图1所示:
图1 全景视频播放系统架构
采用全视角传输方案进行全景视频传输并播放时,用户通过VR头盔只会选取全景视频帧中感兴趣部分进行观看,而未被观看的部分不会被显示,这样会造成带宽资源的浪费。利用头戴设备所载传感器的返回参数,计算并预测用户所观看的视窗部分进而切割出,丢弃未被看到的部分,只传输用户观看部分视窗。
实验中头戴设备使用了Oculus Rift2。Oculus Rift 2硬件包含如陀螺仪、加速度计、磁力计等微电子机械传感器,从DK2开始,新增头戴设备位置跟踪器,合并传感器融合过程,用于确定用户头部在真实世界中的运动方向,并能实时同步用户视窗。通过DK2所提供的ovr_GetTrackingState可以获取由StatusFlags描述的预期头部姿势和当前HMD跟踪状态,Rift坐标系统如图2。头部跟踪数据可用于预测的特定绝对时间点,通常对应于一帧图像将要展示在头盔上的未来时间。
图2 Rift坐标系统
注视点渲染技术在VR领域中被越来越多地提及,利用人类视觉系统特点,在眼睛容易聚焦的区域显示高分辨率,在外围区域显示低分辨率,这样,相对于全屏高分辨显示就可以有效降低GPU的计算,并降低视频流传输的数据量。
由于Oculus Rift2未提供用于确认注视焦点的硬件及软件(眼球追踪技术),因此,本文实验假定注视焦点位于视窗中心的圆形方框。使用OpenCV获取用户视窗的中心圆形区域,再将用户视窗部分的图像质量整体降低,最后将截取的中心圆形贴回原位置。注释点渲染后,如图3:
图3 用户视窗的注视点渲染
基于头盔显示的纹理渲染方式通常属于分屏立体渲染,相互独立地为左右视野进行渲染。使用OpenGL中缓冲区对象(Buffer Object)技术,渲染全景视频帧。OpenGL基于C/S模式,处理数据时,需要将数据从Cli⁃ent端(通常为内存)读取至Server端(通常为显卡显存)中,引入缓冲区对象(VBO),可以只传输有修改的数据至Server端,引入顶点数组对象(VAO),使得设置顶点状态更为方便,数据处理效率进一步提升。
等距正圆柱投影是目前使用较为广泛的水平方向全景图投影方法,球面与圆柱面相切于球面赤道位置,保持经线长度不变,将经线与纬线投影到圆柱面上,再沿圆柱面的任一母线展平。等距正圆柱投影公式为:
其中,Sm为从赤道到所求点纬度的经线弧长;r为所求点纬线圈半径,r0为基准纬线圈半径;m、n为经线与纬线的长度比值;P为面积变形;ω为角度的最大形变。
用户视窗部分的渲染过程与上述全景图的生成过程刚好相反,全景图的渲染是将其作为纹理,渲染到柱面模型的相应位置。用户视窗部分渲染后,如图4。
图4 用户视窗渲染
本文实验在CPU为Inter Core i7-3770@3.4Ghz,内存容量8GB,显卡NVIDIA GeForce GTX 650环境下进行,测试视频为3D 4096×4096pixels。相关算法使用Ubuntu Linux下QT Creator、OpenCV、OpenGL3.0、SDL2、Oculus Rift DK2及其SDK编程实现。输入的视频帧如图5,Oculus Rift2观看的用户视窗如图6。
图5 输入的全景视频帧
如上图所示,输入4K 3D全景视频,解码后得到全景视频帧,利用头戴设备的返回参数,计算并预测用户观看的视窗部分,切割出观看部分,保留眼睛聚焦区域的高分辨率,降低外围区域分辨率,最后传输数据并渲染播放。经实验测试,使用头盔设备播放4K 3D全景视频时,数据传输带宽平均为2.4Mbps,帧传输速率平均为44fps,有效减少数据传输量的同时达到预期的身临现场的观看体验。
图6 输出的用户视窗
基于头盔显示设备,本文实现了一种有效降低数据传输量的全景视频播放系统,在取得的实验结果中,降低传输带宽与视频播放均有较好效果。随着虚拟现实技术的不断进步,尤其是眼球追踪技术的成熟,基于头盔显示设备的应用,会让用户有更加真实,全面的观看体验。
[1]杨帆,宋辉,姜忠鼎.面向头盔显示的加密全景视频播放系统[J].微型电脑应用,2016,32(9):1-4.
[2]吕伟龙,曾宪晖,孙亚旺.360全景视频渲染与压缩方法探究[J].网络新媒体技术,2017,6(1):38-44.
[3]张萍,陈云海,刘晓玲.全景视频处理技术分析[J].广东通信技术,2017,2(3):11-13.
[4]江军,李玥庆.虚拟现实的交互方式分析[J].集成电路应用,2016,33(12):84-86.
[5]肖源源,王子牛.基于VC++的OpenGL纹理映射技术的研究与实现[J].贵州大学学报,2008(02):158-160.