APP下载

三维投影变换辅助的云游戏编码优化算法

2023-12-18王一帆王昊孙浩楠尘原霍俊彦王豪张伟

西安交通大学学报 2023年12期
关键词:内参视图编码

王一帆, 王昊, 孙浩楠, 尘原, 霍俊彦, 王豪, 张伟,3

(1. 西安电子科技大学通信工程学院, 710071, 西安; 2. 阿里巴巴集团, 310000, 杭州;3. 鹏城实验室人工智能研究中心, 518055, 广东深圳)

作为一种新兴的以云计算为基础的游戏方式,云游戏[1]引起了人们的极大关注[2]。该场景下,云端服务器完成游戏的复杂运算与渲染,并将3D游戏场景压缩为2D视频流,然后通过高速宽带网络传输到玩家游戏终端。终端只需要基本的视频解压能力和可靠的网络即可享受到良好的游戏体验。与传统游戏模式相比,云游戏摆脱了终端对硬件的依赖,在很大程度上减少了玩游戏的设备成本。一些工作[3]提高了云游戏视频传输的可靠性和稳定性,但是高帧率以及高分辨率的游戏视频也对传输带宽提出了更高的要求[4],例如分辨率为720P、帧率为60 帧/s 的游戏视频需要15 Mb/s的传输带宽,而对于4K视频则需要40 Mb/s的传输带宽才可满足用户的质量需求[5]。传输数据量大、占用带宽高等问题是限制云游戏进步和发展的重要因素。因此,如何提高云游戏视频的编码码率、减小带宽,是目前云游戏亟待解决的一大问题。

一种直观的方式是采用传统的视频压缩技术,如高效视频编码(H.265/HEVC)[6]等,通过重复利用视频间的相同像素信息来去除冗余。自20世纪80年代以来,传统视频编码技术蓬勃发展并持续不断优化:文献 [7-9]通过优化编码过程中的滤波、预测等模块来提高编码效率;文献 [10-11]提出了快速模式判决算法来降低编码复杂度;文献 [12-13]建立了更加准确的率失真模型以对码率控制进行改进。此外,随着新兴视频的发展,文献 [14-15]还总结了面向屏幕视频内容的专门编码工具。然而,传统的视频压缩技术及其改进虽然对运动缓慢单一的平移运动具有良好的作用,却无法对相机旋转发挥很好的估计和补偿作用[16]。在云游戏,尤其是第一人称云游戏中,玩家的视角变化非常频繁,游戏视频往往包含更复杂的旋转动作。此外,游戏视频相邻帧之间存在剧烈变化的大范围运动,传统的亚像素精度运动估计也无法精准地捕捉到相邻帧之间的变化。因此,直接采用传统的视频编解码技术压缩游戏视频编码,残差较大,码率较高,仅通过调整帧率、分辨率和编码码率等参数[17-19],难以实现有效的编码优化。

近年来,一些工作基于感兴趣区域(region of interest, ROI)对云游戏视频的编码开展了码率控制。文献 [20]采用显著性图和优先级图合成游戏注意力地图,并利用其设置编码参数,实现高质量的关注区域和较低质量的非关注区域以适应码率限制;文献 [21]针对游戏视频提出了基于多目标优化的编码树单元级别的感知比特分配方法,优化了感兴趣区域的质量同时兼顾了质量波动。结合云游戏视频的内容特性,根据特定的准则将编码比特向重要性高的感兴趣区域倾斜,可以大幅度提高云游戏视频的感知质量。

与由真实摄像机捕获的传统视频序列不同,云游戏视频是计算机生成视频,可以直接从游戏引擎中获得对象信息等图形渲染上下文辅助编码。文献 [22]将来自游戏引擎的部分信息馈送到视频编码器中以绕过运动估计过程,降低计算复杂度,从而提高视频编码速度;文献 [23]利用游戏开发者为游戏对象分配的简单标签提取ROI信息,在视频帧中的不同区域分配不同数量的比特来优化视频编码,提高视频的感知质量。此类方法由于需要游戏引擎信息,往往只适用于少量开源游戏平台。此外,由于云游戏序列是计算机根据客户端对虚拟相机的控制指令在服务器端渲染而成的,可以额外获得游戏序列中逐帧的相机运动信息。一些工作[16,24-26]尝试利用这一特点,通过基于深度图的图像绘制技术(depth image based rendering , DIBR)[27],将已知图像映射到其他待编码帧处,对映射后图像与原始图像的差值图像进行编码传输。相比于传统的运动估计和运动补偿,DIBR作为一种基于图像的渲染技术,可以利用逐像素深度以及变换矩阵更为准确地抓取复杂运动间的变换信息,降低码率。然而,此类方法需要额外的比特去传输深度信息,这在有限带宽的高传输压力下往往是不可接受的。同时,该方法需要虚拟相机的内参进行二维成像平面的投影,由于商业化电子游戏的版权保护,内参无法被直接获得,这使得利用三维投影变换对云游戏编码优化受到了开源云游戏平台的限制。这些都会增加优化方案的实施难度。并且,上述工作仅对传统编码的输入进行预处理,并未对编码过程进行实质性地优化。文献 [28]利用相机旋转信息,采用深度学习的方法生成增强参考帧,并将其添加到参考帧列表以对现有视频编解码器进行优化。深度学习的使用在提升性能的同时也在一定程度上增加了编码复度,且该工作仅针对相机旋转下的游戏视频进行了评估,具有一定的局限性。

基于此,利用云游戏视频易于获得全局相机运动信息这一特点,本文提出了一种三维投影变换辅助的云游戏编码优化算法。该算法首先对游戏场景中世界坐标系下一点投影到二维平面的过程进行详细分析,并据此三维投影变换过程建立约束,对相机内参进行估计。接着,利用估计的内参以及已知的摄像机运动信息,利用图像单应性生成与当前待编码帧平行的辅助参考帧,将其添加到编码器的参考帧列表中参与编码。由于生成的辅助参考帧与待编码帧之间只有平移运动,所以更有利于传统的运动估计和补偿。本文算法不需要已知的相机内参与深度信息,使利用三维投影变换对云游戏编码优化变得一般化,同时引入了额外的辅助参考帧参与编码,以编码块为单位降低编码残差,大幅度提高了压缩效率。考虑到H.265/HEVC为目前云游戏应用中的主流视频编码方式,本文将所提优化算法应用到HEVC中并与原始HEVC进行比较。实验结果表明,本文算法在云游戏视频上平均可以实现8.14%的BD-rate增益,在仅有相机旋转的情况下,BD-rate 可达-24.68%。同时,还在一定程度上降低了编码复杂度,编码时间平均缩短5.34%。此外,本文算法相比于HEVC 屏幕内容编码扩展(HEVC screen content coding, HEVC-SCC)也有超过20%的BD-rate性能增益。

1 游戏场景中的三维投影变换

游戏场景中的一点要经过多个坐标空间变换才能实现从三维空间坐标到二维像素坐标的映射。以Unity游戏引擎为例,假设三维场景中一点的世界坐标为Pworld=(xw,yw,zw,1),其具体的三维投影变换的过程如图1 所示。

图1 游戏中的三维投影变换

由于玩家观察场景时总是从摄像机的视角出发,摄像机决定了引擎渲染游戏的画面,因此首先需要将世界空间下的点Pworld通过观察矩阵Mview变换到观察空间中

(1)

式中:R和T分别表示从世界坐标系到相机坐标系的旋转和平移变换。

将该点从观察空间变换到裁剪空间,以对相机的可见范围进行设置。裁剪空间由6个裁剪平面包围的视锥体决定,其中近裁剪平面和远裁剪平面决定了摄像机可以看到的深度范围。为投影到二维平面进行准备,通过投影矩阵Mproject得到顶点在裁剪空间中的坐标Pclip=(xc,yc,zc,wc)

Pclip=MprojectPview=

(2)

式中:V′、r、N、F分别表示相机的视场角、近裁剪平面的宽高比、视锥体近裁剪平面和远裁剪平面距离相机的距离;cot是余切函数。由式(2)可知,裁剪坐标wc与zv密切相关,且随着像素的变化而变化。

完成所有裁剪工作后,需要把视锥体投影到屏幕空间来生成对应的2D坐标。首先,通过

(3)

利用透视除法将视锥体变换到一个立方体内,得到归一化的设备坐标PNDC=(xNDC,yNDC,zNDC,1),其中xNDC,yNDC,zNDC∈ [-1,1]。接着,利用

(4)

通过简单的视口变换Mviewport,根据图像的宽度W和高度H得到对应的像素坐标Ppixel=(u,v,1)。

通过上述步骤实现了从摄像机视角出发,将场景从三维空间映射到二维画面的过程。那么,从屏幕上一点投影到世界空间的过程则为上述三维投影变换的逆过程。因此,在已知深度信息以及相机内外参(内参即投影矩阵,外参即观察矩阵)的情况下,世界坐标系下一点从一幅视图映射到另一幅视图的变换过程为式(5)

(5)

式中:上标1和2分别表示两幅视图对应的参数信息。实际上,由于大部分商业化电子游戏平台都不开源,相比于游戏开发者可以很容易地从游戏引擎中拿到图像渲染上下文,用户往往很难获得相机的内参进行上述视图间的变换。因此,如何利用已知视图对相机内参进行一定程度的估计,对有效利用游戏中的三维投影变换是至关重要的。

2 基于三维投影变换的内参估计算法

本文在相机旋转下,基于三维投影变换对相机内参进行了一定的估计。依据式(2),假设待估计的相机投影矩阵Mproject为

(6)

式中:f1、f2、c1、c2分别对应于投影矩阵中的4个参数。相机旋转下的Mview可表示为

(7)

式中:θx、θy、θz分别表示绕x、y、z轴的旋转角。

(8)

(9)

结合式(5),可对f1、f2建立3个约束

(10)

通过min((A-B)2+(C-B)2+(A-C)2),采用经典的非线性最小二乘法便可求解得到f1以及f2。考虑到游戏视频,尤其是第一人称游戏视频,往往包含大量的相机旋转运动,采用本文算法可以很容易估计出f1以及f2。为提升匹配的准确性,本文采用纹理相对丰富的已知视图进行匹配。此外需要注意的是,当相机仅绕x轴或y轴旋转时,目标函数仅为f2或f1的相关函数,因此采用多轴复合旋转运动可以更加方便快捷地计算出f1、f2。

基于此,通过抓取游戏视频中相机旋转的两帧,采用本文提出的基于三维投影变换的相机内参估计算法,便可通过上述过程求得相机投影矩阵的f1、f2参数。利用图像单应性[30],可在已知相机运动信息的前提下,仅利用f1、f2实现对已知视图的旋转变换。不同坐标表示的其他游戏引擎内参也可通过类似方法得到。

3 三维投影变换辅助云游戏编码优化

在游戏序列中,视角通常会保持移动,尤其是在第一人称游戏中,相机的运动往往是旋转角度更大、移动频率更高的旋转和平移的复合运动,然而传统运动估计对相机旋转较为敏感。本节利用第2节中基于三维投影变换的相机内参估计算法,结合图像单应性特点,利用视图间的旋转信息生成与当前待编码帧平行的辅助参考帧,然后将其添加到编码器的参考帧列表中参与编码。由于辅助参考帧利用相机的旋转信息进行了视角校正,与待编码帧之间只有平移,因此更有利于进行运动估,从而减少编码残差,优化编码性能。

3.1 辅助参考帧的生成

相机在发生旋转前后呈现的两幅视图具有图像单应性[30],因此相机旋转运动下从图像1到图像2的映射可由式(5)简化为

(11)

式中:H表示3×3的单应性矩阵;K、V分别表示3×3的相机内参矩阵(投影矩阵)和视口变换矩阵。

由第1节中Mviewport和Mproject的表示形式,不难得到相机旋转下的V

(12)

相机旋转下的K可表示为

(13)

且其参数可通过第2节的内参估计算法得到。

因此,给定参考视图与相机旋转矩阵,即可依据式(11)在不使用深度图的情况下实现从参考视图到任意目标视图的空间映射。基于此,本文选择每个编码视频序列(CVS)中质量较高的帧内随机接入点(IRAP)帧作为映射过程的参考帧,利用上述公式通过图像单应性校正相机旋转,并应用三角形重心插值算法[31]模拟游戏引擎的渲染过程,生成与当前CVS中其他待编码帧平行的辅助参考帧。由于旋转之后视图之间只有平移,本文算法更有利于进行运动估计,从而减少压缩残差所需的比特。此外,当游戏序列包含单一的相机旋转运动时,生成的辅助参考帧与待编码帧同视点同方向,可以最大程度地减小编码残差。相比于传统编码器,本文算法额外增加的比特开销只有相机的旋转信息与两个内参,且内参通常对整个序列保持相同并且只需要传输一次。

3.2 参考帧列表的更新

利用生成的辅助参考帧更新编码器的参考帧列表,以提供更好的运动估计和补偿。以标准Low-Delay-P (LDP)配置下HEVC参考软件HM为例,参考帧列表最多包含4个以图像序列号(POC,用符号IPOC表示)从大到小顺序排列的参考帧。本文将生成的辅助参考帧添加到原始参考帧列表的第二个位置,第一个位置的原始参考帧保持不变以保持较强的相关性,除最后一帧外的其余原始参考帧按顺序依次排列在辅助参照帧之后。更新过程见图2。辅助参考帧的 POC 设为-1,与原始参考帧进行区分。如果原始参考帧列表包含POC为3、2、1、0的参考帧,则更新后参考帧的POC依次为3、-1、2、1。

图2 参考帧列表更新示意

4 实验与分析

为验证所提云游戏编码优化算法的有效性,将本文算法加入到HEVC参考软件HM16.16中,从编码性能和编码复杂度两方面与原有的HEVC编码算法进行对比。

4.1 实验设置

由于云游戏低时延的要求,本文以标准LDP为配置,在Intel (R) Core (TM) i7-9700KF CPU @ 3.60 GHz处理器上,以4个量化参数22、27、32、37进行编码。参数IntraPeriod、intrqpoffset以及GOPSize分别设置为8、0和4,编码帧数设置为96。本文选择编码序列中每个CVS中的IRAP帧作为映射参考帧,用以生成优化算法中相同CVS中其他帧的辅助参考帧。

由于标准测试序列大部分为不含相机运动信息的自然序列,本文使用Air Light VR(ALVR)软件将SteamVR游戏流式传输到客户端独立的VR头戴式显示器中,通过捕获视频帧及其对应的相机运动信息,建立包含渲染图像和相机运动的云游戏视频测试序列。本文将VR游戏的里程碑之作The Lab作为游戏数据库,选取其中具有不同内容特征的5个场景下的20个YUV 8 bit序列作为测试序列。每个场景下的序列分别包含4种不同的大幅度相机运动方式,每个序列的分辨率为1 024×1 024。图3 为5个场景的示意。

(a)场景1

4.2 编码性能

本小节首先通过Bjøntegaard-Delta rate(BD-rate,用符号ΔR表示)和Bjøntegaard-Delta PSNR(BD-PSNR,用符号ΔP表示)[32]评估所提优化算法在YUV上的编码性能。BD-rate表示在相同编码质量下节省了多少码率,负值表示所提算法具有更高的编码效率;BD-PSNR表示在相同码率下可以获得的质量增益,正值表示所提算法具有更优异性能。

将本文算法与原始HEVC进行比较,结果如表1 所示。相比HEVC,本文算法额外的比特增加只有相机的旋转信息与两个内参,因此本文在表1的计算中忽略这部分开销。

从表1 可知,从均值来看,相比于原始HEVC,本文算法在相同视频客观质量下可以节省8.14%的比特率,在相同的码率下可以实现0.313 8 dB的性能增益。针对不同的相机运动方式,本文算法都有良好的编码性能增益。其中,在相机单独旋转运动下,BD-rate和BD-PSNR性能可达-24.68%和0.989 2 dB。这是因为在单一的相机旋转运动下,本文算法生成的辅助参考帧与待编码帧同视点同方向,最大程度地减小了编码残差,提升了编码性能。此外,相机运动的幅度与快慢也会影响算法的性能。例如,在单独旋转下,相比于其他4个场景,场景4的相机旋转幅度更大,变化更剧烈,原始HEVC无法对如此大范围的运动进行很好的运动估计和补偿,而本文算法克服了运动范围与幅度的限制,利用三维投影变换较为准确地捕获了大运动下视图间像素的运动,因此可以获得-29.96%的BD-rate性能。综上可知,本文算法在不同游戏场景不同运动下都可以实现良好的压缩性能。

为了对编码后的视频进行进一步的视觉客观评价,表2给出了量化参数(QP)为22、27、32、37编码后的视频结构相似度(structural similarity, SSIM)和多尺度结构相似度值(multi-scale structural similarity,MS-SSIM)。可以看出,本文算法编码后的视频相比于HEVC仍然没有视频质量的降低。在达到相同客观质量的情况下,本文算法所需的码率更低,本文算法的优越性得到了进一步验证。

表2 4个QP编码后视频的结构相似度和多尺度结构相似度

同时,考虑到云游戏是提供计算机生成文本、图形和动画等屏幕内容的典型应用之一,本文算法与HEVC 屏幕内容编码扩展(HEVC screen content coding, HEVC-SCC)[15]进行了对比,结果如表3所示。可以看出,尽管HEVC-SCC可以利用云游戏视频具有重复图案、高度饱和度或者有限数量颜色等不同于自然视频的特性对其实现良好的压缩,却无法应对频繁视角变化的情况。相比之下,本文算法充分考虑了云游戏的应用特性,实现了任意视角与运动下良好的压缩性能,相比于HEVC-SCC有超过20%的BD-rate性能增益,从而进一步证明了本文算法相比于目前云游戏应用中主流视频编码方式的优越性。

表3 本文算法与HEVC-SCC平均压缩性能的比较

由于本文算法与文献 [28]算法都利用了相机运动信息来优化编码器的参考帧列表,以此提高云游戏视频的编码效率,所以本文算法与文献 [28]算法进行了比较,亮度分量上的压缩性能结果如表4所示。由于文献 [28]算法仅针对相机旋转下的视频序列进行了训练,所以仅对单独旋转下的序列采用文献 [28]中训练好的模型进行测试。可以看出,本文算法在5个场景下的压缩性能都远远高于文献 [28]算法,平均可以实现-24.12%的BD-rate和1.005 0 dB的BD-PSNR性能增益。这是因为本文的测试序列运动幅度更大,视角变换更加剧烈,采用文献 [28]中增强参考帧的方法已经无法从根本上对如此剧烈变化的运动实现更好的运动估计与补偿效果,而本文算法利用三维投影变换生成与当前待编码帧更相似的辅助参考帧,进一步降低了剧烈运动下运动估计的难度,且大幅度减少了编码残差,从而实现了良好的压缩效果。

表4 本文算法与文献 [28]算法压缩性能的比较

4.3 辅助参考帧有效性

生成的辅助参考帧、原始参考帧以及待编码帧如图4所示。这里原始参考帧指相关性最强的前一帧的重构帧。可以明显看出,生成的辅助参考帧实现了视角的校正,相比于原始参考帧,与待编码帧之间只有简单的平移运动,更容易进行运动估计。利用该辅助参考帧可以使编码器更好地估计云游戏视频中复杂的全局相机旋转以及剧烈变化的大范围运动,提高云游戏的编码效率。

(a)原始参考帧

各场景下,预测块采用辅助参考帧进行预测的辅助参考帧命中率如图5所示。可以看出:生成的辅助参考帧深度参与了编码,其命中率随运动状态的不同而变化,最高可超过50%;辅助参考帧的命中率呈规律性分布,每个CVS中距离映射参考帧(即IRAP帧)越近的帧,采用辅助参考帧进行预测的命中率越高。这是由于距离较远的帧与映射参考帧之间的场景重复度降低,大量未在映射参考帧中出现的新场景逐渐暴露出来,导致生成的辅助参考帧与待编码帧相似度降低,从而降低了命中率。

图5 使用辅助参考帧进行预测的比例

4.4 编码复杂度

设THEVC为原始HEVC的编码时间,Tproposed为本文算法的编码时间(包括额外生成辅助参考帧的时间以及将辅助参考帧添加到参考帧列表进行编码的时间),则编码复杂度衡量指标ΔT可表示为

ΔT=(Tproposed-Toriginal)/Toriginal

(14)

ΔT为负表明本文算法编码复杂度较低。表5 给出了4种运动方式下编码时间的对比。可以看出,相比原始HEVC,本文算法在带来大幅度性能增益的同时还在一定程度上降低了编码复杂度,编码时间平均缩短5.34%。

表5 本文算法与HEVC编码时间的比较

5 结 论

随着高性能云计算等技术的快速发展,云游戏生态逐步扩大,高帧率以及高分辨率的云游戏视频对传输带宽提出了更高的要求,然而云游戏视频中复杂的全局相机旋转以及剧烈变化的大范围运动给传统视频压缩带来了极大的挑战。本文针对这一问题,利用云游戏视频易于获得全局相机运动信息这一特点,提出了一种三维投影变换辅助的云游戏编码优化算法。

本文通过对游戏场景中三维投影变换的过程进行理论分析,利用来自世界坐标下同一点的匹配点对建立约束,构建了虚拟相机的内参估计算法。结合全局相机运动信息,利用估计的内参生成与待编码帧平行的辅助参考帧更新原始参考帧列表,参与编码。由于生成的辅助参考帧相对于待编码帧只有平移,更有利于进行运动估计和补偿。本文算法克服了开源云游戏平台的限制,使利用三维投影变换对云游戏编码优化变得一般化。实验结果表明,本文算法在云游戏视频上平均可以实现8.14%的BD-rate增益,在仅有相机旋转的情况下,BD-rate 可达-24.68%。同时,还在一定程度上降低了编码复杂度,编码时间平均缩短5.34%。此外,本文算法相比HEVC-SCC也有超过20%的BD-rate性能增益。

云游戏的大规模应用对通信系统提出了多项挑战,除高带宽外,云游戏对网络时延要求很高,尤其在实时竞技类游戏中,卡顿现象会严重影响用户体验。因此,除了提高云游戏视频的编码效率以降低带宽外,如何满足云游戏对网络的低时延要求也在进一步研究中。

猜你喜欢

内参视图编码
基于SAR-SIFT和快速稀疏编码的合成孔径雷达图像配准
《全元诗》未编码疑难字考辨十五则
子带编码在图像压缩编码中的应用
内参报道如何在全媒体时代“出圈”
Genome and healthcare
5.3 视图与投影
视图
办好党报内参的思考与探索
Y—20重型运输机多视图
SA2型76毫米车载高炮多视图