康剑源,刘志
(北方工业大学,北京 100144)
虚拟现实(VR)360 度视频的应用越来越广泛。与传统视频不同,虚拟现实360度视频不能直接被编码,需要首先经过投影过程转化为二维(2D)平面视频,才能使用传统的视频编码器进行编码。为此,JVET组织提出了11种投影格式,包括等矩形投影(ERP)、八面体投影(OHP)、立方体映射投影(CMP)等[1-2]。其中ERP是使用最广泛的投影格式。
根据JVET建议,高效视频编码(HEVC)[3]被用来编码投影后的虚拟现实360度视频。HEVC是目前最新的视频编码国际标准,压缩性能比H.264/AVC提高50%。为了提升HEVC编码器的性能,人们对HEVC进行了大量的优化[4-5]。如在编码单元(CU)划分方面,唐浩漾等[6]提出了一种基于CART决策树的CU快速划分算法,利用相邻CU的深度来判断当前CU是否需要被划分。Jing等[7]提出了一种基于决策树的CU尺寸决策算法,利用决策树模型判断CU的尺寸。在帧内模式选择方面,祝世平等[8]提出了一种基于决策树的候选模式缩减算法,通过对候选模式的分类,减少粗选模式(RDO)列表中候选模式的数量。Ryu等[9]提出了一种基于机器学习的快速帧内预测模式决策算法,用多个帧内预测模式的RDO过程来估计当前预测单元中的帧内预测模式。
在帧内预测之前,HEVC编码器需要对变换单元(TU)周围的参考像素进行滤波处理,滤波的效果对帧内预测性能具有较大影响。为了提高滤波性能,研究人员提出了一些改进算法[10-12]。王欢[13]提出了一种参考像素滤波的并行化设计方案,将原有的串行滤波方式改为了并行化滤波方式。Liu等[14]提出了一种减少参考像素的帧内预测方法。
目前,大部分的优化研究都是针对传统视频数据进行的,针对360度视频的参考像素滤波优化工作还很少。由于投影后的虚拟现实视频拥有与传统二维视频不同的统计特性,降低了编码器的性能,因此有必要根据虚拟现实视频的特性,对HEVC编码器进行优化。在本文中,基于对虚拟现实360度视频特性的分析,优化滤波参数的配置,分区域建立决策树模型,利用决策树判断参考像素的滤波方式,达到提升滤波性能的效果。
ERP格式是官方360Lib框架提出的默认投影格式。与传统视频相比,ERP格式视频靠近两极的视频内容被严重拉伸,造成图像的失真与图像数据的冗余,呈现出与赤道区域不同的纹理特性。为此,本文将视频区域分为两极区域和赤道区域分别处理。利用WS-PSNR[5]的权重,计算每个编码树单元(CTU)的,并根据确定CTU所属的区域。的计算方法如式(1)所示,其中(i, j)表示CTU左上角第一个像素的坐标位置。
图1 区域划分示意图
在HEVC的标准算法中,可以根据需求对参考像素进行滤波处理,滤波方式可以分为强滤波、弱滤波和不滤波。其中,强滤波只用于32×32尺寸的树单元(TU)。在滤波方式的判断过程中,HEVC标准算法会在横向和纵向的参考像素中,各采样三个像素点用于判断滤波方式。强滤波的判断过程为:若满足式(2)和式(3),那么当前滤波方式为强滤波。其中abs代表绝对值,的大小为,Bitdepth为像素灰度值的位深,A、B、C、D、E的像素位置如图2所示。式(2)和式(3)可以用于粗略判断纵向和横向方向上参考像素灰度值变化的剧烈程度。
图2 各参考像素采样点的位置
在HEVC标准参考算法中,TU的尺寸与当前区域的像素灰度值变化程度有关。当像素灰度值变化程度较大时,一般使用小尺寸TU;反之,一般使用大尺寸的TU。在ERP格式视频的两极区域,由于图像水平拉伸的缘故,该区域的像素复杂度较低,主要采用32×32尺寸的TU。
由于投影过程中水平拉伸的缘故,ERP格式视频两极区域中32×32尺寸的TU通常呈现水平方向的纹理,如图3所示。对于具有水平方向纹理的TU,HEVC标准算法关于滤波方式的判断存在一定的问题。在标准算法中,只用了5个像素采样点用于判断强弱滤波,并且对于32×32尺寸的TU,只在模式10和模式26中采用了不滤波的参考像素,导致许多TU在应该使用弱滤波或不滤波的参考像素时使用了强滤波的参考像素,降低了预测的准确性。
图3 两极区域尺寸为32×32的TU
为了体现HEVC标准算法对两极区域参考像素滤波方式的判断不准确的问题,我们为三个典型序列统计了标准算法下的滤波方式占比和穷举算法下的最优滤波方式占比,统计数据如表1和表2所示。从表1和表2中可以看出,在标准算法的滤波过程中,对两极区域使用了大量的强滤波。而从穷举算法得到的最优滤波方式表明,对于两极区域中水平方向纹理的TU,一般使用弱滤波或者不滤波的方式。
表1 标准算法下各滤波方式的占比(单位:%)
表2 穷举算法下各滤波方式的占比(单位:%)
不同于两极区域,赤道区域各尺寸TU的分布比较均匀,图像纹理结构多变,HEVC标准算法对参考像素三种滤波方式的选择不存在明显的倾向性,然而,标准算法对滤波方式的判定方法仍存在需要改进的地方。
在标准算法的滤波过程中,对所有4×4尺寸的TU都使用不滤波的参考像素,这样的策略不一定是最优的。例如在图4中,TU1~TU4为一个四叉树分枝上的四个节点,其中TU1、TU2、TU4为复杂块,TU3为简单块。按照标准算法,这四个块的参考像素均不滤波。然而实际上,对TU3而言,采用强滤波或弱滤波的参考像素往往能够实现更准确的像素预测。因此,标准算法的滤波判定存在偏差。
图4 TU纹理复杂度示意图
另一个问题是对32×32尺寸TU参考像素的滤波方式判断。在32×32尺寸TU的像素预测过程中,只对模式10和模式26使用不滤波的参考像素,而对其他模式则只使用弱滤波或强滤波的参考像素。实际上,对其他模式也存在使用不滤波的参考像素的情形。如图5所示,区域1和区域2为两个尺寸为32×32的TU。相对于TU1,TU2的图像显得更模糊,这是由于TU2的预测模式为模式11,在该模式下,标准算法对参考像素采用了弱滤波的滤波方式,参考像素的一些纹理细节被滤除了。如果采用不滤波的滤波方式,TU2的图像会更加清晰。
图5 滤波决策误差导致的图像纹理损失示意图
基于以上的分析,HEVC标准算法关于参考像素滤波方式的判定策略存在优化空间。下文中,我们针对上述问题,使用决策树模型,分区域对参考像素的滤波决策进行优化。
在本文改进算法中,主要通过增加参考像素采样点数量、设计低复杂度的决策树属性,以及分区域构造决策树等方式来改进参考像素滤波方式选择策略。
2.2.1 采样像素点的优化
采样点用于反映参考像素灰度值的变化程度。在标准算法的滤波过程中,共有5个像素采样点用于判断参考像素的滤波方式。在横向或纵向上,只有3个像素的灰度值被采样,采样点数量少、间隔较大导致反映出的灰度值变化不够准确。
本文在标准算法的每两个采样点之间,增加一个采样点。优化后的采样点,间隔缩短为原来的二分之一,数量由5个增加到了9个。这样的优化方法可以在避免增加过多计算复杂度的同时,更好地反映参考像素灰度值的变化。采样像素点的位置如图6所示。其中,L的大小等于TU的长度的二分之一。
图6 采样像素点的位置示意图
2.2.2 决策树属性的构造
决策树属性的选择对决策树的性能至关重要。本文的决策树属性选择中,一方面要求属性能够反映不同滤波方式的特征,另一方面要避免增加过多计算量。
本文使用9个参考像素采样点来构造样本属性。属性的计算方法为:对于R1至R5和R5至R9的两个方向,对每一个方向上的5个采样像素点依次两两相减,如果两个相邻采样像素的灰度值满足式(4),那么属性值加1,依次下去,直到得到最终的属性值。最终属性的取值范围为:{0,1,2,3,4}。这样的属性计算过程中只有减法、取绝对值,以及比较操作,计算复杂度很低。式(4)中,THR取值为,Bitdepth为像素灰度值的比特位深。THR的值为常数,不需要每次比较的时候都计算。
2.2.3 决策树的建立
根据前文的分析,在两极区域,本文只对32×32尺寸TU的参考像素滤波方式进行重新判定,决策树样本为所有32×32尺寸的TU。样本有两个属性A和B,分别代表R1至R5和R5至R9两个方向上的参考像素灰度值变化程度,属性的构造方法如章节2.2.2所述。样本最终被分为两类:1和0,分别代表对当前TU的参考像素进行弱滤波和不滤波处理。
在赤道区域,本文对所有尺寸TU的参考像素滤波方式进行重新判定,决策树样本为所有TU。样本有三个属性A、B和C。其中属性A和B与两极区域决策树的属性A和B相同。属性C代表当前TU的尺寸,取值方法如式(5)所示。TU尺寸能作为属性的原因是TU尺寸能反映当前区域的纹理复杂度,且区域的纹理复杂度与参考像素的滤波方式存在一定联系。样本被分为三类:0、1和2,分别代表对当前TU的参考像素进行不滤波、弱滤波和强滤波处理。
图7 用于提取样本的3个典型序列
图8 两极区域的决策树模型
图9 赤道区域的决策树模型
样本分类和属性确定之后,从三个分辨率的视频序列中各取一个序列作为典型序列,如图7所示。在四个QP(QP=22,27,32,37)下,分别取每个典型序列的一帧用于提取样本,组成样本集。采用CART算法[12]建立决策树模型,决策树最大深度设置为4。建立的两极区域和赤道区域的决策树模型分别如图8和图9所示。
在本文算法中,当叶节点的Gini系数小于等于0.35时,该叶节点的分类结果被采用,图8和图9中灰色的叶节点为采用的叶节点。对于两极区域,当根据决策树无法判定滤波方式时,对32×32尺寸的TU使用不滤波的参考像素进行像素预测过程。对于赤道区域,当根据决策树无法判定滤波方式时,使用标准算法判定滤波方式。
基于决策树的参考像素滤波过程流程如下:
步骤1:开始,判断当前T U 所在的图像区域,若位于赤道区域,跳到步骤2。若位于两极区域,跳到步骤7。
步骤2:缓存经过强滤波和弱滤波的参考像素,跳到步骤3。
步骤3:根据赤道区域决策树模型决定当前TU参考像素的滤波方式,跳到步骤4。
步骤4:根据标准算法判断当前模式是否使用滤波的参考像素。若使用,跳到步骤5;若不使用,跳到步骤6。
步骤5:使用由决策树判定滤波方式的参考像素进行预测像素的计算,跳到步骤10。
步骤6:当前模式使用不滤波的参考像素进行预测像素的计算,跳到步骤10。
步骤7:判断T U 尺寸,若为3 2×3 2 尺寸的TU,跳到步骤8;若为其他尺寸TU,按照标准算法判断参考像素的滤波方式,跳到步骤10。
步骤8:缓存经过弱滤波的参考像素,并根据两极区域决策树判断当前TU参考像素的滤波方式,跳到步骤9。
步骤9:判断当前模式是否为DC模式、模式10、模式26中的一种:若为其中一种,跳到步骤6;若不是,当前模式使用由决策树判定滤波方式的参考像素进行预测像素的计算,跳到步骤10。
步骤10:结束参考像素的滤波,开始预测像素的计算过程。
本文算法被整合到HM16.20(HEVC的参考程序)和360Lib-5.1中,验证算法的有效性。JVET-G0147、JVET-D0143、JVET-D0179、JVET-D0026、JVET-D0039和JVET-D0053[15-17]提案提供的十二个标准测试序列用于测试算法的有效性。实验的计算机硬件参数为:CPU 为Intel®CoreTM i7-7700 CPU @ 3.60GHz,RAM容量为8.0 GB。编码参数配置为全I帧编码模式(encoder_intra_main10)。用于测试的视频帧数为每个QP 100帧(QP=22、27、32、37)。在本次实验中,和被用于衡量算法性能,计算公式如式(6)和式(7)所示。
实验结果如表3 所示。由表3 可以看出,与HM16.20相比,本文算法的BD-rate降低了0.1%,而编码时间基本保持不变,说明改进后的参考像素滤波过程在一定程度上提升了帧内预测编码后的图像质量。从表中还可以看出,各序列减少的BD-rate较为均衡,说明算法性能比较稳定。
表3 本文算法与HM16.20的性能比较
本文提出的适用于虚拟现实视频的参考像素滤波算法,利用决策树判断当前TU参考像素的滤波方式。提出的算法根据ERP格式下虚拟现实视频的特性,改进了滤波方式的配置:一是在两极区域,为32×32尺寸的TU增加了不滤波的滤波方式;二是在赤道区域,为各尺寸的TU均设计了强滤波、弱滤波和不滤波三种滤波方式。
算法优化了参考像素采样点的数量,为不同区域设计了不同的决策树属性和分类类别,分别构造了两极区域和赤道区域的决策树。实验结果表明,与HM-16.20的标准算法相比,所提出算法的BD-rate减少了0.1%,而编码时间基本保持不变。实验结果证明了该算法的有效性。