DCC2020:VVC帧内预测中基于梯度的CU划分早停止

460 阅读4分钟

 

本文来自DCC2020论文《Gradient-based Early Termination of CU Partition in VVC Intra Coding》

通过方向梯度预先决定是否对块在水平或垂直方向进行二叉树或三叉树划分,在VTM5.0上可以在BD-Rate损失只有1.2%的情况下节省51%的时间。

VVC中CU划分和帧内编码概述

VVC中CTU大小是128x128,首先进行四叉树划分,四叉树的叶子节点可以进一步按照二叉树或三叉树划分。

 

Fig.1是一个划分示例,QT、BT_H、BT_V、TT_H、TT_V分别表示四叉树划分、水平二叉树划分、垂直二叉树划分、水平三叉树划分、垂直三叉树划分。

Depth表示四叉树划分深度,MTDepth表示多类型树划分深度。

VVC允许的最小四叉树块尺寸是16x16,最大多类型树深度是4。多类型树的叶子节点直接用于帧内预测和变换。此外,对于I帧亮度和色度分量可以有不同的划分方式。

VVC帧内编码模式由35个扩展到67个,包括65个角度模式和DC模式、Planar模式。有6个MPMs(most probable modes)。同时引入了宽角度帧内预测、CCLM、PDPC、MRL、ISP、MIP等。

早停止算法

早停止需要进行三个决策,是否划分、水平还是垂直划分、二叉树还是三叉树划分。

统计分析

纹理信息对于块划分非常重要,在平坦区域倾向于大尺寸块,在复杂区域倾向于更精细的划分。为了验证纹理和CU划分的关系,Fig.2打印出了重建视频帧中CU划分情况。

可以看出块划分和纹理有很强的相关性。因此,图像内容可以指导块划分。而且,VVC中的划分还有方向性,包括水平和垂直两个方向。块划分和图像内容有连贯性,以边界区域为例,纹理沿着人的身体以垂直方向延申块的划分也沿着垂直方向。

通常来说4种方向的梯度经常用到,水平、垂直、45度、135度。文章按下面方式计算4种梯度,

通过比较不同方向的梯度可以反映纹理信息,Fig.3展示了各个CU的4个梯度。很明显,如果CU某个方向的梯度远小于其他三个方向梯度这意味着纹理沿着该方向。如果4个梯度值都差不多且接近0表示内容平坦不需要划分。如果相邻块梯度差异足够大表示它们应该属于不同CU,需要划分或比较子块梯度。

早停止算法

1、对于尺寸大于等于16x16的CU,用split_flag表示当前块划分标志位。如果split_flag为1,表示当前块需要划分,直接跳到子块不需要对其进行帧内预测。当split_flag为0时,划分停止。为了得到split_flag需要计算四个子块的水平和垂直梯度。如Fig.4(1a)所示,H和W比值小于5,对于其他情况按(b)(c)划分为2个子块。

对于Fig.4(1a)情况,split_flag按下面方式计算,

ThrB和ThrS是预定义阈值。

2、对于四叉树叶子节点,有4种划分方式包括二叉树水平/垂直划分、三叉树水平/垂直划分。首先比较四个梯度确定其实水平还是垂直可以排除掉两种模式。对于Fig.4(2a)的情况,其方向dir_idx按下式计算,

ThrH和ThrV是预定义阈值。dir_idx等于0表示该块按水平划分跳过垂直模式,等于1表示该块按垂直划分跳过水平模式,否则四个模式都要计算。对于Fig.4(2b)的情况,如果Grad_h<ThrG且Grad_v >= Grad_h*ThrV则该块按水平划分。对于Fig.4(2c)如果Grad_v满足同样条件则该块按照垂直划分。

计算标志位bt_skip表示是否跳过二叉树划分,index(1,2,3)表示Fig(6ab)中按三叉树划分时的三个块。

计算标志位tt_skip表示是否跳过三叉树划分,

 

整个算法流程如下所示,

实验结果

为了验证算法,在VTM5.0上AI配置下进行实验,每个序列编码100帧。评估RD效果和时间节省(TS),结果如下表。

setting 1中ThrB、ThrS、ThrH、ThrV、ThrG分别设为5.0,1.0,1.1,1.1,54。setting 2中分别为2.0,1.2,1.0,1.0,108。

感兴趣的请关注微信公众号Video Coding