1.概述
近年来,网络基础设施的升级、智能手机普及、视频技术的不断发展,使得用户可以享受更高质量的视频服务。图 1 显示了视频质量发展趋势。一个方向是提高图像分辨率,从标清( SD ),高清( HD )向超高清( UHD 4K/8K )发展,分辨率提高可以扩大观看视野,从而用户主观感受得到改善。另外一个方向是提高像素的质量,包括位宽( Bit Depth )、颜色动态范围( Wide Color Gamut , WCG )和高对比度 ( High Dynamic Range , HDR ),这些像素质量方面的改进都有效地提高了用户在纹理细节、亮度和颜色丰富程度上的感知效果,从而提高了主观质量。而且超高清和高对比度和颜色动态范围结合后( BT.2020 ),进一步提高了用户主观感受。360视频在这基础上进一步提供 360 度的全向视角,用户通过头盔式显示设备可以得到一种身临其境的沉浸式观看感受;另一方面用户可以根据自己的兴趣,通过头盔式显示设备或者智能手机方便地切换观看视角。
如图 2 所示,由于智能手机本身有 3D 姿态传感器,用户通过改变智能手机的朝向可以非常方便地切换观看视角。这种视频浏览方式改变了传统视频固定视角的观看模式,增加了用户对视频内容的兴趣。目前 360 视频可以先用多视点(如 2 个或者 6 个方向)的同步广角相机拍摄多视点视频,然后再通过拼接( stitch )技术合成 360 视频。 360 视频的这些新特点比较适合虚拟现实( VR )、增强现实( AR )方面的应用,而且随着 360 视频拍摄和显示设备的普及,它在娱乐、教学、社交媒体、工业设计、互动游戏、线上购物、远程医疗、虚拟旅游等领域都有一些好的示范应用。随着 5G 网络和具有更强视频拍摄和图形处理能力的智能手机推广, 360 视频应用的质量将得到很大改进,而且低延迟的实时交互式 360 视频应用服务成为可能。
图 1. 视频质量发展趋势
图 2. 用户观看 360 视频时切换视角
2. 360 视频编码挑战
由于 360 视频的视野要比 UHD/HD 视频大很多,要达到普通 HD 分辨率一样的清晰度, 360 视频本身就需要 16K 以上分辨率。这就要求 360 视频压缩要非常高效,对 360 视频的编码和传输技术都提出了新挑战。 ITU-T 和 ISO/IEC 联合视频专家组( JVET )在 2020 年制定了新的视频压缩标准 H.266/VVC ( Versatile Video Coding ),它对 SDR 、 HDR 和 360 视频都有针对性的优化,以适应现在和将来不同视频应用的需求。 JVET 对 360 视频做了比较全面的研究,包括 360 视频到 2D 平面的投影方法、编码帧封装方法、 360 视频质量评价方法、和 360 视频编码优化方法方面都有比较多的探索和测试,形成了一套有效的 360 视频处理、编码、质量评估体系 [2][3][4] 。图 3 显示了 360 视频包括拍摄、合成、 2D 平面投影、编码,解码、给定视角下显示区域提取的处理流程。
图 3. 360 视频处理流程
JVET 指定了用于测试的 14 种 360 视频 2D 平面投影格式 [3] : Equirectangular projection ( ERP ),(图 4 ), Adjusted equal-area projection ( AEP ), Cubemap projection ( CMP )(图 5 ), Adjusted cubemap projection ( ACP ), Equi-angular cubemap ( EAC ), Hybrid equi-angular cubemap ( HEC ), Generalized cubemap projection ( GCMP ), Segmented sphere projection ( SSP ), Rotated sphere projection ( RSP ), Fisheye , Octahedron projection ( OHP ), Icosahedron projection ( ISP ), Truncated square pyramid ( TSP ), Equatorial cylindrical projection ( ECP )。 360 视频可以包含整个球面范围(经度方向[ -180 , 180 ], 维度方向[ -90 , 90 ]),有些应用只有面向用户的前面半球(经度方向[ -90 , 90 ], 纬度方向[ -90 , 90 ])。 360Lib 参考软件 [4] 支持这些投影格式转换,各种质量评价指标的计算,和根据用户指定浏览轨迹提取用于观看的显示视频以支持 360 视频的主观质量评价。这个 360 视频处理参考软件可以和 H.266/VVC 参考软件合起来以支持 360 视频投影格式转换、编码帧封装和编码的整个过程。
图 4. ERP 投影
图 5. CMP 投影,灰色区域是填充区域
360 视频编码和普通视频编码相比,主要挑战有以下三个方面:(1)360 视频合成时的 2D 平面投影格式和编码用的 2D 平面投影格式可能会不一致,比如合成 360 视频时一般使用的是 ERP 格式,而编码时考虑到编码效率可能采用其它投影格式进行编码;(2)编码图像的每个像素对应在 360 度球面上的采样率是不均匀的:比如 ERP (如图 4 所示)北极和南极区域图像都被拉伸变形严重; CMP (如图 5 所示)每个面内部对应在球面的采样率也是不一样的——离面中心越远采样率越高,这就导致物体在面边缘处被拉伸变形;(3)如果用户观看的视野跨了 360 视频 2D 平面投影格式中的多个面,就会有不连续的接缝现象( seam artifact ),如图 6 中红色箭头所示,这是编码过程中没有考虑这些面之间的边界造成的。
ERP 格式编码 CMP 格式编码
图 6. ERP 和 CMP 投影编码后显示时观察到的接缝现象
3. 360 视频编码技术
针对 360 视频编码中的这些挑战, H.266/VVC 里定义了一些专门针对 360 视频的编码技术。下面逐一介绍。
(1)环绕运动补偿( Wrap-around Motion Compensation )
因为 360 视频是定义在球面上的视频, 2D 平面投影封装成编码帧后,帧边界外面其实是有像素的,只是这些像素被摆放在别的位置了。比如图 4 所示封装后的 ERP 图,实际上这个图的左边界和右边界在球面上对应着同一个边界,所以左边界外面的像素其实是位于右边界里面的(也可以说右边界外面像素其实是位于左边界里面的)。基于这个特点, H.266/VVC 定义了水平方向的环绕运动补偿技术。如图 7 所示,如果当前帧的当前编码块的预测参考块超出了图像边界,那么超出部分(图 7 左边虚线阴影区域)可以通过向右平移 “ERP width” 这个距离,找到图像内的对应块(图 7 中 Reference block ( wrapped-around )),这样就不需要用传统编码里面的重复填充来填补那些图像外的像素了,而是用和球面上对应的连续区域来填充,这样预测准确性可以提高。
H.266/VVC 只定义了水平方向的环绕运动补偿,这个环绕运动补偿的位移量( wrap-around offset )是在图像参数集( PPS )中定义的(见表 1 ),通过编码的图像宽度和环绕运动补偿参数(表 1 中 pps_pic_width_minus_wraparound_offset )可以计算得出环绕运动补偿水平方向上平移的亮度信号整像素个数。这个技术因为提高了图像跨边界的预测准确性,所以对运动视频,尤其是在物体运动超出图像边界时,可以有效减少上面提到的接缝现象。
图 7. Padded ERP 中的环绕运动补偿
表 1. Wrap-around offset 在 PPS 中指示
(2)虚拟边界( Virtual Boundary )
360 视频投影格式中可能包含多个面(如 CMP ),当通过平移、旋转、翻转、缩放、填充( padding )等操作把这些面摆放到编码帧结构中时,在编码图像帧内部有可能造成不连续的边界。图 8 显示了一个例子,如果把 CMP 六个面按照两行三列方式摆放:右面、前面、左面三个面摆放在第一行,下面、后面、上面三个面摆放在第二行,那么在第一行和第二行之间的那个边界(图 8 中黄线指示)两侧的内容就不连续。在这种情况下,如果环内滤波( in-loop filtering ,包括 deblocking , sample adaptive offset ( SAO ), adaptive loop filtering ( ALF ))在边界附近两边滤波时引用了另外一侧的像素,就会在 360 视频正常显示时产生接缝现象(如图 9 所示 [7] )。
为了避免这些接缝现象, H.266/VVC 定义了虚拟边界的语法,用户可以在图像内部定义一些虚拟边界,这些虚拟边界的位置信息可以在序列参数集( SPS )(见表 2 )或者图像头( PH )中进行编码,环路滤波在这些定义的虚拟边界处不能参考跨边界另外一侧像素。 sps_virtual_boundaries_enabled_flag 表示开启或者关闭这个虚拟边界定义。在图 8 的例子中,只要定义一条水平方向的和图 8 中黄线位置相同的虚拟边界就可以解决这里的环路滤波问题。
图 8. CMP ( 3x2 布局)图像内部中不连续边界
图 9. 环路滤波在不连续边界处滤波时参考了边界另外一侧像素后产生的接缝现象
表 2. Virutal boundaries 在 SPS 中指示
(3)子图( Subpicture )编码
如果将全视角 360 视频一次性地传输到用户端,那么码率要求会非常高。为了便于传输, H.266/VVC 中定义了子图( subpicture )编码这个工具 [1][8] ,编码器可以选择让每个子图都可以独立解码。用户可以将 360 视频的不同方位的信息根据其重要性决定这个方位对应的图像分辨率。比如因为用户经常观看前面视点周围的图像,所以前方区域分辨率可以高一些,而左边和右边次之,分辨率稍低,而上面下面和后面可以采用更低的分辨率。
如图 10 所示,可以将 360 视频编码帧分为 4 个区域: front viewport 区域(红色虚线框指示), left viewport 区域(黄色虚线框指示), right viewport 区域(蓝色虚线框指示), top/bottom/back viewport 区域(绿色虚线框指示),这 4 个区域可以组合在一帧图像中进行编码。每个区域都是由多个子图组成,这样这 4 个区域既可以一起传输,也可以按照多个子图组合来传输。这样就为 360 视频传输提供了有很好的灵活性, 360 视频应用可以根据带宽和用户观看区域进行有选择性地传输,比如提取 front viewport 区域中用户观看的视窗(由子图组成)进行传输。
图 10. 和 360 视频视角对应的由子图组成区域划分
(4)ERP 和 GCMP 的指示信息
为了 360 视频的正确显示, H.266/VVC 标准中定义了 ERP 和 GCMP 两种 360 视频 2D 平面投影格式的 SEI ( Supplemental Enhancement Information )信息 [6] ,接收端可以利用这些 SEI 信息进行解码后的一些后处理和正确显示视频。表 3 定义了 ERP 的 SEI 信息,其中 erp_left_guard_band_width 和 erp_right_guard_band_width 分别指示了 ERP 图像左右边界向外填充的像素个数。这些像素是和 ERP 图像一起编码的,解码后它们可以用来对图像边界做混合滤波 [10] ,提高边界处连续性避免接缝现象产生。表 4 定义了 GCMP 的 SEI 信息。
GCMP 可以通过定义每个立方体面上的采样函数( gcmp_mapping_function_type )来表示普通的 CMP 和定制的 CMP 。 gcmp_packing_type 指定不同的编码帧封装格式。 gcmp_guard_band_type 指定不连续边界外面填充像素的填充方法,而 gcmp_guard_band_samples_minus1 指定了不连续边界外面填充像素的个数。 JVET 参考软件 360Lib [4] 支持这些 SEI 信息指定 360 视频投影格式编码和解码时 SEI 信息的输出 [9] ,用户可以用这些解码视频和输出的 SEI 信息对视频进行正确格式转换和显示。
表 3. ERP SEI 信息 [6]
表 4. GCMP SEI 信息 [6]
4. 360 视频质量评价
因为 360 视频编码是在 2D 投影空间进行的,这些像素对应到球面时采样率并不一样,而用户看到的是球面视频效果,所以 360 视频的质量评价不能只是用传统方法对解码视频像素计算各种质量评价指标(比如 PSNR )。
JVET 经过测试给出了端到端 360 视频质量评价方法,如图 11 所示,它综合考虑三方面对编码性能的影响:一个是预处理包括 2D 平面投影格式(包含下采样)和编码帧封装( frame packing )方法;第二个是编解码系统本身;第三个是后处理,包括像素混合( blending )和投影格式转换(包含上采样)。 360 原始视频的分辨率都比较高(比如 6K 或 8K ),而编码时的分辨率会低一些,一般都是 4K ( UHD )或者 2K ( HD ),所以 360 视频编码前下采样是必要的。
编码帧封装是将投影格式下的 360 视频通过对各个面进行平移、旋转、翻转( flip )、缩放、填充等操作将它们填到一个普通编码帧中,这样便于用传统视频编码器( H.266/H.265/H.264 )编码。后处理一个是将编码的填充像素和 360 视频包含的像素进行用基于距离的加权平均,减少第二部分中提到的接缝现象。后处理另外一个任务就是进行上采样将编码分辨率转换到原来视频源的分辨率,便于质量比较。
图 11. 端到端的质量评价方法 [2]
计算端到端 PSNR 时, JVET 采用了下面基于球面采样率加权的 WS-PSNR (Weighted-to-spherically-uniform PSNR ) [5] 。 WS-PSNR 用加权 MSE ( Mean Squared Error )作为失真,计算公式如下,其中权重 w(i, j) 是像素 (i, j) 在球面采样率的倒数。 y(i, j) 是原始像素值, y'(i, j) 是解码后处理后重构的像素值。然后用这个加权后的 MSE 来计算 PSNR 值。
图 12 显示了 ERP 和 CMP 两种格式计算 WS-PSNR 用的权重。对 ERP 来说,赤道权重最大,两极权重最小,同一纬度的权重相同。对 CMP 来说,立方体每个面中心权重最大,面的边缘权重最小,每个面距离中心点距离相同的像素位置权重相同。
(a)ERP 格式计算 SSE 时权重 w(i, j)
(b)CMP 格式计算 SSE 时权重 w(i, j)
图 12. WS-PSNR 计算失真时用的权重
根据 JVET 规定的 360 视频测试条件 [11] 分别用 HM-16.16 、 VTM-12.0 和 360Lib-12.0 参考软件对 ERP 和 GCMP 两种投影格式进行了测试,表 5 列出了测试结果,质量评价使用了前面介绍的端到端的 WS-PSNR 。其中 ERP 和 GCMP 在编码图像帧封装时使用了填充方法,而解码后处理中都使用了混合滤波方法。表 5 ( a )是在 ERP 投影格式下 VTM 相对于 HM 的性能;( b )是在 GCMP 投影格式下 VTM 相对于 HM 的性能;( c )是在 VTM 下 GCM P 相对于 ERP 的性能。
表 5. VTM 和 HM 对 360 视频两种投影格式的测试结果比较
(a)ERP (b)GCMP (c)GCMP vs ERP
5. 参考文献
[1] B. Bross, J. Chen, S. Liu, Y.-K. Wang, “Versatile Video Coding,” JVET-S2001, 19th Meeting, 22 June – 1 July 2020.
[2] P. Hanhart, Y. He, Y. Ye, J. Boyce, Z. Deng, L. Xu, “360-degree Video Quality Evaluation”, PCS 2018.
[3] Y. Ye, J. Boyce, “Algorithm descriptions of projection format conversion and video quality metrics in 360Lib”, JVET-Q2004, March 2020.
[4] 360Lib software, https://jvet.hhi.fraunhofer.de/svn/svn_360Lib/branches/360Lib-12.0
[5] Y. Sun, A. Lu, L. Yu, “AHG8: WS-PSNR for 360 video objective quality evaluation,” Joint Video Exploration Team of ITU-T SG16 WP3 and ISO/IEC JTC1/SC29/WG11, JVET-D0040, Oct. 2016, Chengdu, China.
[6] J. Boyce, V. Drugeon, G. J. Sullivan, Y.-K. Wang, "Supplemental enhancement information messages for coded video bitstreams (Draft 5)," JVET-S2007, June 2020.
[7] S.-Y. Lin, L. Liu, J.-L. Lin, Y.-C. Chang, C.-C. Ju, P. Hanhart, Y. He, “AHG 12: Loop filter disabled across virtual boundaries”, JVET-N0438, Mar. 2019.
[8] Y.-K. Wang, etc., “AHG12: Text for subpicture agreements integration”, JVET-O1143, July 2019.
[9] Y. Wang, Y. He, L. Zhang, " SW Support of 360 SEI Messages", JVET-S0257, July 2020.
[10] L. Lee, J.-L. Lin, Y. Wang, Y. He, L. Zhang, "AHG6: Blending with padded samples for GCMP", JVET-T0118, Oct. 2020.
[11] Y. He, J. Boyce, K. Choi, J.-L. Lin, “JVET common test conditions and evaluation procedures for 360° video”, JVET-U2012, Jan. 2021.
活动推荐:
2023年9月3-5日,「QCon全球软件开发大会·北京站」 将在北京•富力万丽酒店举办。此次大会以「启航·AIGC软件工程变革」为主题,策划了大前端融合提效、大模型应用落地、面向 AI 的存储、AIGC 浪潮下的研发效能提升、LLMOps、异构算力、微服务架构治理、业务安全技术、构建未来软件的编程语言、FinOps 等近30个精彩专题。咨询购票可联系票务经理 18514549229(微信同手机号)。
评论