一种全零块检测方法。
由于许多编码块经过DCT变换和量化后系数基本趋近于0,因此,值得在DCT之前检测所有零量化块,以便跳过后续一系列步骤。事实上,越大的TU检测起来越困难,HEVC最大的TU是32x32,而VVC最大尺寸更是达到了64x64、128x128。大的变换块包含更多种类的内容特征,因此以前的AZB检测方案就变得无效。
检测全零块主要从变换块左上角的系数入手,对于32x32块,检查8x8子块的DC系数用于AZB检测。
引言
HEVC采用了四叉树的结构,在寻找最优变换尺寸时(HEVC有4种变换尺寸),变换应该重复执行,因此,计算复杂度显著增加。所以,检测全零块就非常有必要,这样就可以跳过这些繁琐操作。
AZB检测阈值
众所周知,残差服从拉普拉斯分布,假设Walsh哈达玛变换系数xh服从零均值拉普拉斯分布:
期望即:
一个NxN块中归一化的哈达玛变换系数的样本均值为:
假设上面提到的服从拉普拉斯分布的概率密度函数的平均值等于上面的样本均值,那么就有:
因此,NxN块的SATD可以表示为:
由此可得到Walsh哈达玛变换系数的标准差:
为获得NxN中DCT的拉普拉斯模型参数,有如下关系:
其中,Rh是矩阵中元素都是Walsh哈达码变换系数的一个矩阵。由此得到NxN块的平均标准差:
然后,可以计算出DCT域的拉普拉斯模型参数;
下式就展示了在拉普拉斯概率密度函数条件下,对于X的NxN变换块的量化非零系数总数可以用熵编码来简化:
其中,f为舍入偏移量系数,q是量化步长,λdct是上面提到过的DCT系数的拉普拉斯模型参数。注意,上式中,没有NxN的R(q)表示量化非零系数部分。如果R(q)小于1,NxN块中所有系数都被量化为0。因此,可以把NxN的TU块量化为AZB的条件表示为:
其中,0.5是舍入偏移量。上面不等式表明,如果上上式的量化非零系数总数小于1,那么在NxN变换块中不存在需要编码的显著系数。最后,可以导出NxN块对于AZB的阈值:
其中,α是缩放常数,根据经验确定为1.1。下图展示了QP=28时,4x4、8x8、16x16、32x32TU块的在SATD域的AZB和NAZB的分布。
从上图可以看出,4x4、8x8、16x16、32x32四种块的AZB和NAZB都有一部分重叠部分,为基于SATD在对AZB和NAZB分类时更好地划清界限,提出一种更精确的检测方案:给定Walsh哈达玛变换系数,将矩阵A乘以WHT可以获得DCT系数,然后归一化,就表示为:
上式中,对于4x4和8x8DCT,Nq分别设为18和21。DCT系数量化为0的条件也可以改写成:
这样,对于4x4、8x8这样小的TU块的AZB检测算法就可以用下面流程图来表示:
对于比较大的16x16和32x32TU块,可以通过下面流程进行AZB检测: