一种高效全零块检测方法

it2024-11-03  7

一种自适应低复杂度全零块检测算法。主要是为了提高基于SATD阈值的自适应检测方法的检测精度,节省RDO检测时间。在传统的SATD检测失败后,提出了一种自适应搜索时域低频最大变换系数幅值的全零块检测方法。

文章目录

引言一种高效的AZB检测算法1.真全零块检测2.伪全零块检测3.全零块检测编程总结


引言

  在变换量化之前提早地检测出全零块无疑是非常有必要的。现有的全零块检测技术大多数是使用SAD或SATD来设计基于一些附加条件的阈值。

一种高效的AZB检测算法

  一般来说,真全零块表示在均匀量化后,一个块的系数全部被量化为0;伪全零块表示一个块被进一步经过RDOQ后,系数被量化为0;除此之外就是非全零块。

1.真全零块检测

  首先,一个真全零块的量化系数应当小于1。   要提早检测真全零块,就需要在变换之前做文章。那么就来对变换系数设定阈值,即:   因此,对于一个块内所有变换系数,就有:   即:   这样就有了第一个用于检测真全零块的阈值:   对于变换方式的选择,较大的TU(16x16、32x32)使用4x4和8x8的哈达玛变换来模拟DCT,8x8和4x4TU直接用DCT变换,这样区分的目的还是减小由DCT带来的计算复杂度。   对于预测残差来说,一般是服从高斯分布或者拉普拉斯分布,所以,就需要由此来推出残差分布与变换系数之间的对应关系。   大致如上图推导过程,可得一个阈值。最终检测真全零块的阈值就是:

2.伪全零块检测

  如下图所示,随着TU尺寸的增大,G-AZB和P-AZB都会变少。尤其是对于32x32这样的大尺寸TU,几乎没有G-AZB,这也就是说,没有基于RDO的软判决量化,32x32TU量化为全零块的可能非常小。   但是,基于RDO的AZB检测非常耗时,因此提出了一种自适应检测每个时间点最大变换系数的方法。   具体来说,就是在RDOQ中,引入简化的均匀量化,来提供出预选的量化level(UQ level),然后基于RDO从这些候选值中选择最优的一个。然而,只有UQ level为1或者2的候选值最终才被确定为0。如下图所示,所有非零UQlevel都低于2,并且只有所有UQlevel都小于2的TU才能被编码为P-AZB。

  为减少系数搜索负担,把每个TU分成低频区域和高频区域。实际上,通过平衡搜索成本和检测精度,低频区域和高频区域的界限是基于QP来决定的。当QP比较低的时候,会有更多的非零UQ level,并且搜索区域应当比低比特率时大。因此,为TU左上角低频区域的块宽或块高设计了一个确定性方案:   考虑到只有UQlevel为1和2时,TU才有机会被RDOQ确定为0,并且较大系数出现在低频区域也是常见的情况,因此,我们只关注低频区域并且保证最大绝对UQlevel在2以内这一观点是合理的。   为节省UQ过程的计算,我们同样基于变换系数而不是UQlevel来制定检测阈值。因此就有:

3.全零块检测编程总结

  对于当前TU的残差数据,用flag来标志当前TU是否是全零块: 1.用下式作为变换核: 2.存储SATD的值和变换系数 3.如果SATD满足: 那么把flag设为1,表示当前TU是全零块(G-AZB); 否则,如果 满足 那么也把flag设为1,表示当前TU也是全零块(P-AZB); 否则,如果以上两种情况都不满足,那么设flag为0,表示当前TU是非全零块。

最新回复(0)