全零块检测的一些做法
G-AZB检测
采用一种基于数学推导的方法,在检测真全零块方面,使用比之前更加严格的阈值。
首先,理论上,如果被检测是真全零块,那么TU中所有变换系数都应满足:
进一步推导如下:
很快,就得到了一个检测阈值:
一个检测阈值不够,还需要一个检测阈值,然后取他们当中较小的那一个,也就是所谓“严格”的阈值。
根据一些论文中所计算得到的,残差数据的标准差:
(u,v)位置的变换系数的方差:
将上面两个式子中的标准差代入第二个式子,可以得到:
已有研究表明,SAD和SATD之间满足一种线性关系,即:
将上式代入上上式子,可以得到:
根据概率理论中的一些知识,下面式子的概率约占99.7%(你问我?我也不懂):
将 标准差代入上式,得到:
这样就得到了另外一个阈值:
最终,G-AZB检测阈值也就得到了:
P-AZB检测
之所以叫伪全零块,是因为它在DZ+UTQ下,并不会被量化为全零块。它只有通过RDOQ才能被量化为全零块。所以,P-AZB的检测实在G-AZB检测之后的,当G-AZB的检测条件不满足时,马上进行P-AZB检测。
较大的TU(16x16,32x32)的系数分布可以从下图看出来:
可以看出来,对于全零快和非全零块,绝对量化系数值为1、2或大于2。观察上面两幅全零块的图,发现在不同的qp下,最大量化系数一般小于2。所以,可以从系数大小这一线索来确定非全零块。
在RDOQ量化的第一步中,需要确定可选的量化值,进而利用RDO准则确定最优值。在这确定的可选的量化值中,只有l(u,v)在[0,2]范围内,可选的量化值才有可能包括0,TU才可以被编码为AZB。
首先,需要做的是,把TU分成高频和低频两个部分。在此提出一种方案识别位于TU左上角的低频部分的块:
另外,比较被检测为AZB和非AZB的cost来设计阈值,AZB和非AZB的cost通过下面式子计算:
特别地,RAZB可以近似看作1(没有需要编码的系数,信号只需要一个位标志)
最终P-AZB的检测可以看SATD是否位于下面的范围中: