基于纹理特性的VVC多叉树结构快速决策方法及存储介质
技术领域
本发明属于视频编码领域,更具体地说,涉及一种基于纹理特性的VVC多叉树结构快速决策方法及存储介质。
背景技术
随着5G技术应用落地,5G低时延高带宽的传输特性为高清视频技术的应用注入了活力,视频产业由此迎来了前所未有增长机遇,以4K和8K为代表的超高清(Ultra-High-Definition video,UHD)视频开始了广泛应用。超高清视频具有超高分辨率和高帧速率,能够有效提升图像精细度和流畅度,从而带来极佳的观看体验,但同时也带来了急剧增加的视频流量。以帧率为120fps的8K视频为例,1秒钟未经压缩的视频大小就达到119Gbps。巨大的数据量给视频的存储和实时传输带来了新的挑战。为了应对伴随视频产业发展产生的新痛点,2016年国际电信联盟(ITU)和国际标准化组织(ISO)合作成立了联合视频专家组(JVET),开始探索下一代视频编码技术标准即VVC标准新的关键技术。2020年7月,新的视频编码标准VVC正式发布。
相对于H.265/HEVC,VVC开发了许多新的编码技术,这些新技术涉及到视频编码的各个模块中。如在量化和变换模块中,VVC新增了高频调零的大尺度变换、自适应多核变换技术,编码器可以自适应选择最优的变换方式。在预测编码模块中,为了提高预测准确度,VVC新增了帧内多行预测、跨分量线性模型预测、帧内子块预测、位置自适应帧内联合预测、仿射运动补偿预测、帧内帧间联合预测、对称运动矢量差等技术。
视频编码器中的帧内编码模块主要通过去除空间冗余对视频信息进行有效压缩。VVC新增的技术也是针对如何更加高效去除空间冗余进行开发的。在划分结构方面,VVC继承了以往视频编码标准的块划分结构,但与以往标准只能将编码单元划分成方形块不同的是,VVC采用了四叉树嵌套多叉树(Quadtree with nested multi-type tree,QTMT)的结构,使得CU可以根据视频内容自适应划分为方形或者矩形块。在帧内预测方面,VVC扩充了上一代HEVC标准的35种预测模式,采用了67种帧内预测模式,以进一步减少帧内预测的空间冗余。但由于在决策出最佳模式的过程中,需要遍历所有预测模式并进行率失真优化,这一过程复杂度极高且十分耗时。VVC编码器在全帧内配置下,其帧内编码效率相较于HEVC提升了41%,但编码时间却达到HEVC的31倍。
VVC通过采用新的编码技术,使得与上一代视频编码标准HEVC相比,在处理相同视频时,其编码器输出的码率能降低50%,而视频编码质量几乎没有损失,但同时也付出了计算复杂度成倍增加的巨大代价,这阻碍了VVC在实时视频应用方面的发展。因此,在不影响视频编码质量,不降低编码效率的前提下,如何大幅度降低VVC编码复杂度,是当前众多研究机构、专家学者、视频应用相关企业的研究重点。据现有文献的测试结果,如果不执行VVC帧内编码模块中QTMT结构的深度划分,编码器节省的编码时间最高可达到80%以上。因此对帧内编码模块开展研究,提出有效的帧内编码加速算法,是提高VVC的编码速度,降低应用成本的一个重要方向。
CN112929657A,一种基于梯度与方差的H.266/VVC快速CU划分方法,其步骤为:首先根据方差值评估当前CU的同质性,判断是否能提前终止当前CU被进一步划分。然后利用Sobel算子提取当前CU的梯度特征,判断当前CU能否进行QT划分,从而跳过BT和TT划分。最后利用Canny算子提取当前CU纹理的边缘特征,根据当前CU的纹理趋向排除垂直或水平划分方向上的MT划分,将另一个方向的MT划分作为候选,将RDO-cost最小的一个划分方式作为最优划分方式。本发明逐步对CU划分进行决策,通过早期终止和早期跳过加速CU划分过程,在保证编码质量的情况下,明显降低了CU划分的复杂度,大大提高了编码效率。但该专利通过当前CU的纹理趋向排除垂直或水平划分方向上的多叉树(MT)划分后,没有继续对另一个MT划分下的二叉树划分和三叉树划分进行进一步的快速判决,因此该发明的CU划分加速性能还有进一步的提升空间。
本文专利依据梯度特性判断出当前CU的划分方向后,决定提前跳过垂直或水平划分方式;然后再利用当前CU多叉树结构相邻子块边缘像素的差异,分析当前CU的结构特征。如果二叉树划分相邻子块边缘差异大于三叉树划分相邻子块边缘差异的最小值,则当前CU跳过水平三叉树或垂直三叉树划分方式。因此,采用本专利所提方法能最大限度地降低CU划分的计算复杂度,也大大加快了视频编码的速度。
发明内容
本发明旨在解决以上现有技术的问题。提出了一种基于纹理特性的VVC多叉树结构快速决策方法及存储介质。本发明的技术方案如下:
基于纹理特性的VVC多叉树结构快速决策方法,其包括以下步骤:
101、读取输入视频帧中当前待划分CU(编码单元)的编码信息,判断当前CU是否为VVC(多功能视频编码)默认的强制划分CU。若是,当前CU由VVC原平台CU划分方法判断最佳划分模式,否则,执行步骤102;
102、采用边缘检测算子提取当前CU的梯度特征;
103、比较当前CU水平方向的平均梯度值与当前编码帧的水平方向平均梯度值,以及当前CU垂直方向的平均梯度值与当前编码的帧垂直方向平均梯度值,判断当前CU是否提前终止多叉树(MTT)划分。如果提前终止多叉树划分,则当前CU跳过所有MTT划分过程,否则,执行步骤104;
104、根据当前CU的梯度特征值,判断当前CU的主要纹理走向。如果当前CU的纹理走向模糊,采用VVC原平台CU划分方法判断最佳划分模式。如果当前CU纹理以水平走向为主,则选择跳过垂直方向划分方式;如果当前CU纹理以垂直走向为主,则选择跳过水平方向划分方式,然后执行步骤105;
105、计算当前CU子块的相邻边缘像素的方差。以相邻子块边缘像素方差的绝对差值,评估相邻子块的边缘差异。通过比较二叉树(BT)划分相邻子块边缘差异与三叉树(TT)划分相邻子块边缘差异大小,决定是否跳过三叉树划分方式;
106、更新当前CU的划分模式候选列表。
进一步的,所述步骤101中,读取待划分CU的编码信息,包括当前CU的划分深度、位置、尺寸和通道等信息。
所述判断当前CU是否为VVC默认的强制划分CU,指的是编码帧边界处的CU,以及产生划分冗余的CU。编码帧边界处的CU是指超出图像右边界或下边界的CU;划分冗余是指对同一个CU,虽然划分方式和顺序不同,却产生了相同编码结构的情况。
进一步的,所述步骤102采用边缘检测算子提取当前CU的梯度特征,具体包括:
采用Sobel、拉普拉斯、Scharr、Canny等其中的某种算子,分别通过水平和垂直方向的算子模板与CU像素矩阵作平面卷积,以计算出的值取绝对值再除以CU像素个数,得到CU水平方向的平均梯度值Gradh和垂直方向的平均梯度值Gradv。
进一步的,所述步骤103中,当前编码帧的水平方向平均梯度值、当前编码帧的垂直方向平均梯度值,是指视频编码器采用某种边缘检测算子,计算出当前编码帧的水平方向平均梯度值和垂直方向平均梯度值。以Scharr算子为例,当前编码帧的水平方向和垂直方向的平均梯度值的计算方法如公式(1)和(2)所示;
在上述公式中,P是当前编码帧的像素矩阵;Ghpic是当前编码帧水平方向的平均梯度值;Gvpic是当前编码帧垂直方向的平均梯度值;W和H分别是当前编码帧的宽和高。
进一步的,所述步骤103中,判断当前CU是否进行多叉树划分,是指如果满足当前CU的水平方向平均梯度值Gradh小于当前编码帧的水平方向平均梯度值Ghpic,且当前CU的垂直方向平均梯度值Gradv小于当前编码帧的垂直方向平均梯度值Gvpic时,当前CU不再进行多叉树划分;否则,当前CU进行多叉树划分。
进一步的,所述步骤104中,判断当前CU的主要纹理走向,是通过公式(3)进行判断的,得到的主要纹理走向通过划分方向标志dir_flag进行标记;
其中,ThD为判断当前CU纹理走向的阈值,可通过实验统计或学习得到。
若dir_flag=0,当前CU纹理以垂直走向为主,选择跳过水平方向(包括HBT和HTT)划分方式;若dir_flag=1,当前CU纹理以水平走向为主,选择跳过垂直方向(包括VBT和VTT)划分方式;若dir_flag=-1,表明当前CU纹理走向模糊,不能判断出当前CU纹理的主要走向,采用VVC原平台CU划分方法判断最佳划分模式。
进一步的,所述步骤105中,计算当前CU相邻子块边缘像素的方差,具体包括:对当前CU进行水平方向或垂直方向划分时,计算该CU子块相邻边缘像素的方差。如果判断出当前CU纹理以水平走向为主,计算水平方向三叉树和二叉树相邻子块的相邻边缘像素的方差值。对于水平方向三叉树从上往下的三个子块,计算第一个子块最下面一行的边缘像素方差值,得到
计算第二个子块最上面一行和最下一行的边缘像素方差值,得到
和
计算第三个子块最上面一行的边缘像素方差值,得到
对于水平方向二叉树从上往下的二个子块,计算第一个子块最下面一行的边缘像素方差值,得到
计算第二个子块最上面一行的边缘像素方差值,得到
如果判断出当前CU纹理以垂直走向为主,计算垂直方向三叉树和二叉树相邻子块的相邻边缘像素的方差值。对于垂直方向三叉树从左往右的三个子块,计算出第一个子块最右边一列的边缘像素方差值,得到
计算第二个子块最左边一列和最右边一列的边缘像素方差值,得到
和
计算第三个子块最左边一列的边缘像素方差值,得到
对于垂直方向二叉树从左往右的二个子块,计算出第一个子块最右边一列的边缘像素方差值,得到
计算第二个子块最左边一列的边缘像素方差值,得到
进一步的,所述步骤105中,以相邻子块边缘像素方差的绝对差值,评估相邻子块的边缘差异,是指通过公式(4)计算水平方向相邻子块相邻子块相邻边缘的像素方差的绝对差值,或通过(5)计算垂直方向相邻子块相邻边缘的像素方差的绝对差值,以绝对差值的大小评估相邻子块边缘的差异;
在上述公式中,
是水平二叉树相邻子块相邻边缘的像素方差的绝对差值;
和
分别是水平三叉树相邻子块相邻边缘的像素方差的绝对差值;
是垂直二叉树相邻子块相邻边缘的像素方差的绝对差值;
和
分别是垂直三叉树相邻子块相邻边缘的像素方差的绝对差值。
进一步的,所述步骤105中,通过比较二叉树(BT)划分相邻子块边缘差异与三叉树(TT)划分相邻子块边缘差异大小,决定是否跳过三叉树划分方式。对于水平方向多叉树通过公式(6)进行判断,对于垂直方向多叉树则通过公式(7)进行判断的。如果水平二叉树(HBT)或垂直二叉树(VBT)划分相邻子块边缘差异大于水平三叉树(HTT)或垂直三叉树(VTT)划分相邻子块边缘差异的最小值,则当前CU跳过水平三叉树或垂直三叉树划分方式;
在上述公式中,ttskip为是否跳过三叉树划分的标志。如果ttskip=1,表示当前CU跳过水平三叉树或垂直三叉树划分方式;如果ttskip=0,表示当前CU不跳过水平三叉树或垂直三叉树划分方式。
一种存储介质,该存储介质内部存储计算机程序,所述计算机程序被处理器读取时,执行上述任一项的方法。
本发明的优点及有益效果如下:
本发明针对当前VVC编码器运算复杂度过高,实现成本大,难以实际应用的问题,提出了利用视频本身纹理特性,跳过CU不必要划分模式的遍历过程,实现VVC多叉树结构快速决策方法及存储介质。首先依据当前CU检测出的梯度特性,判断其纹理复杂度,若当前CU纹理平滑,就终止多叉树划分过程。接着根据判断当前CU主要的纹理走向,决定是否提前跳过垂直或水平划分方式;最后,利用当前CU多叉树结构相邻子块边缘像素的差异,决定是否跳过三叉划分方式。在VVC视频编码器采用本发明,在确保编码效率和编码质量下降很小的情况下,可大幅度降低编码计算复杂度,可用于实时性要求较高的视频通信应用场景。
本发明的创新主要在于权利3、权利4和权利5,使用本发明的CU划分方式提前终止或跳过编码器某些CU划分过程,实现CU结构的快速决策。采用权利要求3的方法中,对于纹理平滑的CU,提前终止所有多叉树划分过程;对于纹理复杂的CU,采用权利要求4的方法,当判断当前CU纹理为水平走向时,跳过垂直方向的多叉树划分;当判断当前CU纹理为垂直走向时,跳过水平方向的多叉树划分;采用权利要求5的方法,分析二叉树和三叉树结构相邻子块边缘像素的差异,决定是否跳过三叉划分方式,可进一步降低编码复杂度。目前在研究VVC快速CU划分算法相关文献中,很少考虑跳过多叉树中三叉树划分方式,主要原因是如果不能准确分析出当前CU的子块特征,跳过三叉树划分过程后会导致编码效率损失较大。而本发明通过分析当前CU子块边缘像素的差异性,能准确地判断出二叉树和三叉树的结构特征,跳过三叉树划分过程,视频编码器的编码效率损失不大。由于本发明只采用了常规的边缘检测算子分析当前CU和编码帧的梯度特征,以终止当前CU多叉树划分,或跳过某个方向的多叉树划分过程。在评估子块边缘差异方面,也只需计算当前CU相邻子块边缘像素方差,因此本发明算法逻辑简单,易于实现,且编码加速效果明显,所付出的编码效率和编码质量代价也很小。
附图说明
图1是本发明提供优选实施例一种基于纹理特性的VVC多叉树结构快速决策方法流程示意图;
图2是本发明中CU的水平和垂直方向子块相邻边缘示意图;
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、详细地描述。所描述的实施例仅仅是本发明的一部分实施例。
本发明解决上述技术问题的技术方案是:
图1是本发明提供的一种基于纹理特性的VVC多叉树结构快速决策方法流程图,具体包括以下步骤:
101、读取当前待划分CU的编码信息,判断当前CU是否为VVC默认的强制划分CU,若是,当前CU由VVC原平台CU划分方法判断最佳划分模式,否则,执行下一步。
102、采用边缘检测算子提取当前CU的梯度特征。
103、通过比较当前CU水平方向梯度值与当前编码帧的水平方向梯度值,以及当前CU垂直方向梯度值与当前编码帧的垂直方向梯度值,判断当前CU是否提前终止多叉树划分。如果提前终止多叉树划分,则当前CU跳过所有的多叉树划分过程,否则,执行下一步。
104、根据当前CU的梯度特征值,判断当前CU的主要纹理走向。如果当前CU的纹理走向模糊,采用VVC原平台CU划分方法判断最佳划分模式。如果当前CU纹理以水平走向为主,则选择跳过垂直方向划分方式;如果当前CU纹理以垂直走向为主,则选择跳过水平方向划分方式,然后执行下一步。
105、计算当前CU子块的相邻边缘像素的方差。以相邻子块边缘像素方差的绝对差值,评估相邻子块的边缘差异。通过比较二叉树(BT)划分相邻子块边缘差异与三叉树(TT)划分相邻子块边缘差异大小,决定是否跳过三叉树划分方式;
106、更新当前CU的划分模式候选列表,执行下一个CU划分。
优选的,所述步骤101中,读取待划分CU的编码信息,包括当前CU的划分深度、位置、尺寸和通道在内的信息;
优选的,所述步骤101中,判断当前CU是否为VVC默认的强制划分CU,指的是编码帧边界处的CU,以及可能产生划分冗余的CU。编码帧边界处的CU是超出图像右边界或者下边界的CU。划分冗余是指对同一个CU,虽然划分方式和顺序不同,却产生了相同编码结构的情况。
优选的,所述步骤102中,采用边缘检测算子提取当前CU的梯度特征,是指采用Sobel、拉普拉斯、Scharr、Canny等某种算子,通过水平和垂直方向的算子模板与CU像素矩阵作平面卷积,对计算出的值取绝对值后再除以CU像素个数,得到CU对应方向的平均梯度值。以Scharr算子提取水平和垂直梯度为例,当前CU的水平和垂直梯度值计算方法如公式(1)和(2)所示,Gradh是计算出的当前CU水平方向的平均梯度值;Gradv是当前CU垂直方向的平均梯度值。
其中,A是CU的像素矩阵;width和height分别对应当前CU的宽和高。
优选的,所述步骤103中,当前编码帧的水平方向梯度值,当前编码帧的垂直方向梯度值,是视频编码器获取当前编码帧后,采用边缘检测算子计算出的当前编码帧的水平和垂直方向的平均梯度值。以Scharr算子为例,当前编码帧的水平和垂直方向梯度值的计算方法如公式(3)和(4)所示。
其中,P是当前编码帧的像素矩阵;Ghpic是当前编码帧水平方向的平均梯度值;Gvpic是当前编码帧垂直方向的平均梯度值;W和H分别是当前编码帧的宽和高。
优选的,所述步骤103中,判断当前CU是否进行多叉树划分,是指如果满足当前CU的水平平均梯度值Gradh小于当前编码帧的水平平均梯度值Ghpic,且当前CU的垂直平均梯度值Gradv小于当前编码帧的垂直平均梯度值Gvpic时,当前CU不再进行多叉树划分;否则,当前CU进行多叉树划分。
优选的,所述步骤104中,判断当前CU的主要纹理走向,是通过公式(5)进行判断的,得到的主要纹理走向后,再通过划分方向标志dir_flag进行标记。
其中,ThD为判断当前CU纹理走向的阈值,可通过实验统计或学习得到。
若dir_flag=0,当前CU纹理以垂直走向为主,选择跳过水平方向(包括HBT和HTT)划分方式;若dir_flag=1,当前CU纹理以水平走向为主,选择跳过垂直方向(包括VBT和VTT)划分方式;若dir_flag=-1,表明当前CU纹理走向模糊,不能判断出当前CU纹理的主要走向,采用VVC原平台CU划分方法判断最佳划分模式。
优选的,所述步骤105中,计算当前CU相邻子块边缘像素的方差,是指CU按图1所示进行水平或垂直方向划分时,计算相邻子块相邻两条边缘像素的方差。如果当前CU纹理以水平走向为主,计算如图2中图(a)和图(b)所示的水平方向三叉树和二叉树相邻子块相邻边缘像素的方差,分别得到六个边缘像素方差值
和
如果当前CU纹理以垂直走向为主,计算如图2中图(c)和图(d)所示的垂直方向的三叉树和二叉树相邻子块相邻边缘像素的方差,得到六个边缘像素方差值
和
优选的,所述步骤105中,以相邻子块边缘像素方差的绝对差,评估相邻子块边缘差异的特征,是指通过公式(6)计算水平方向相邻子块相邻边缘的像素方差的绝对差值,或通过(7)计算垂直方向相邻子块相邻边缘的像素方差的绝对差值,以绝对差值的大小评估相邻子块边缘的差异;
其中,
是水平二叉树相邻子块相邻边缘的像素方差的绝对差值;
和
分别是水平三叉树相邻子块相邻边缘的像素方差的绝对差值;
是垂直二叉树相邻子块相邻边缘的像素方差的绝对差值;
和
分别是垂直三叉树相邻子块相邻边缘的像素方差的绝对差值。
优选的,所述步骤105中,通过比较二叉树(BT)划分相邻子块边缘差异与三叉树(TT)划分相邻子块边缘差异大小,决定是否跳过三叉树划分方式。对于水平方向多叉树通过公式(8)进行判断,对于垂直方向多叉树则通过公式(9)进行判断的。如果水平二叉树(HBT)或垂直二叉树(VBT)划分相邻子块边缘差异大于水平三叉树(HTT)或垂直三叉树(VTT)划分相邻子块边缘差异的最小值,则当前CU跳过水平三叉树或垂直三叉树划分方式。
其中,ttskip为是否跳过三叉树划分的标志。如果ttskip=1,表示当前CU跳过水平三叉树或垂直三叉树划分方式;如果ttskip=0,表示当前CU不跳过水平三叉树或垂直三叉树划分方式。
优选的,所述步骤106中,更新当前CU的划分模式候选列表,指的是如果判断当前CU能提前终止多叉树划分的情况,则只将QT加入当前CU划分模式候选列表中;如果当前CU纹理以水平走向为主,若能跳过HTT划分,只将QT和HBT加入当前CU划分模式候选列表中,否则将QT、HBT和HTT加入当前CU划分模式候选列表中;如果当前CU纹理以垂直走向为主,若能跳过VTT划分,只将QT、VBT加入当前CU划分模式候选列表中,否则将QT、VBT和VTT加入当前CU划分模式候选列表中;
一种存储介质,该存储介质内部存储计算机程序,所述计算机程序被处理器读取时,执行上述任一项的方法。
上述实施例阐明的系统、装置、模块或单元,具体可以由计算机芯片或实体实现,或者由具有某种功能的产品来实现。一种典型的实现设备为计算机。具体的,计算机例如可以为个人计算机、膝上型计算机、蜂窝电话、相机电话、智能电话、个人数字助理、媒体播放器、导航设备、电子邮件设备、游戏控制台、平板计算机、可穿戴设备或者这些设备中的任何设备的组合。
计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitory media),如调制的数据信号和载波。
还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、商品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、商品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、商品或者设备中还存在另外的相同要素。
以上这些实施例应理解为仅用于说明本发明而不用于限制本发明的保护范围。在阅读了本发明的记载的内容之后,技术人员可以对本发明作各种改动或修改,这些等效变化和修饰同样落入本发明权利要求所限定的范围。