基于DCT频率特性的全零块检测算法

一种基于DCT频率特性全零块检测方法。

基于DCT变换的频率特性,提出一种针对HEVC全零块检测算法,尤其针对16x16和32x32的变换块。通过分析频域中残差能量的分布,哈达玛变换仅用于估计部分DCT系数(这些系数通常占有大部分的能量)。为了让这种算法在一些复杂序列中也比较有效,用SATD来估计剩余系数的最大值。实验表明,这种算法可以检测出4x4、8x8、16x16变换块中90%以上的零块,32x32变换块中80%以上的零块,同时,可降低DCT/量化中大约50%的计算复杂度。


引言

  由于运动估计后的预测残差比较小,因此量化后的很多变换系数为0,当变换块中所有系数在经过量化后为0时,就称这个变换块是全零块。而我们要做的就是提早检测出这样的全零块。
  有种全零块检测算法是通过SA(T)D来估计最大DCT系数,基于SA(T)D估计最大DCT系数的这种算法检测效率并不理想,因为SA(T)D只能反映整体的频率特性。为获取更多的频率特性,用SSE评估交流系数能量,这种算法的缺点是对于每一个TB,SSE都要计算一次,这使得算法计算复杂度过高,不能减少DCT和量化带来的复杂度。所以,就有了基于AZB检测算法的哈达玛变换。因为哈达玛变换能够反映DCT的单频点的特征,所以这种算法以较小的计算损耗换来了较高的检测效率。
  铺垫了这么多,本文提出了一种基于频率特性的HEVC的AZB检测算法。与上面提到的这些算法不同,本文的算法同时利用了单频点特性和DCT的整体特性。

AZB检测算法

1.AZB检测阈值

  如果一个DCT系数可以被量化为0,它必须满足:在这里插入图片描述
  那么就自然而然得到了一个AZB检测阈值:在这里插入图片描述

2.低复杂区域AZB检测

  如上所示,只有当能够获得所有的DCT系数时,才能确定AZB。但是大多数情况下,没必要获得所有的DCT系数,对于一帧中的低复杂度区域,残差通常很小,并且能量集中在DCT的低频系数中。这种情况下,高频系数对AZB检测几乎没有影响,而低频系数足以用来检测AZB。本文中,对4x4TB用所有变换系数,对8x8TB用4x4低频系数,对16x16TB用8x8低频系数,对32x32TB用12x12低频系数,以这样的方式来检测AZB。
  值得欣喜地是,DCT系数可以通过哈达玛变换系数来评估。对于16x16和32x32的TB,在特定位置上需要通过额外计算来获得哈达玛变换系数,而对于4x4和8x8的TB,可以直接获得哈达玛变换系数。下面就来仔细介绍一下如何从8x8哈达玛变换到16x16或32x32哈达玛变换(8x8哈达玛变换可以直接获得)。
  首先,8x8哈达玛变换矩阵可以组成一个16x16非Walsh序列哈达玛变换,像这样:在这里插入图片描述
  B16‘(16x16的哈达玛变换系数矩阵,不是Walsh序列)和B8之间的关系可以描述如下:在这里插入图片描述
  其中f16代表16x16TB的16x16的残差系数块,f8(i,j)代表从f16出发的4个不重叠的8x8残差系数块之一,B8(i,j)是f8(i,j)相应的哈达玛变换系数矩阵。
  B16的8x8低频系数和B16’的低频系数值相同,如下图用灰色来标记。B16的8x8低频系数通过计算下图中的灰色部分系数来获得。在这里插入图片描述
  可以用b(i,j)8,4x4来代表B8(i,j)的4x4低频系数,并且用b16,8x8代表B16的8x8低频系数。那么,b16,8x8可以表示为:在这里插入图片描述
  32x32哈达玛变换的12x12低频系数可以通过类似的方法计算。B32的12x12低频系数和B32’的低频系数值相同,它们在下图中用灰色表示。B32的12x12低频系数可以通过计算下图中灰色部分系数来得到。在这里插入图片描述
  到这儿,所选位置的所有哈达玛变换系数都可以直接或者间接得到。当这些哈达玛变换系数用于检测全零块时,被误分类为全零块的非全零块的比例有点高。这是因为哈达玛变换系数有时候比DCT系数小。为减小被误分类为全零块的TB数量,在全零块检测之前用一个因子来缩放哈达玛变换系数,本文缩放因子是:在这里插入图片描述
  最终,对于低复杂区域的AZB检测算法可以表示如下:在这里插入图片描述

3.高复杂区域AZB检测

  当一帧中的区域比较复杂时,由运动估计或者帧内预测得到的残差不再平滑,而且残差的能量将集中在高频系数上。在这种情况下,按照低复杂区域AZB检测的方法,一些非全零块会被误分类为全零块,这就会降低视频质量。由于只有少数情况下能量集中在高频系数上,因此像上一节那样评估每一个高频系数在计算上不划算。因此,这里基于SATD方法来评估高频DCT系数最大值。
  由于残差是服从正态分布的,因此,它的绝对值的期望:在这里插入图片描述
  由于SAD:在这里插入图片描述
  那么E[|x|]可以近似表示为E[|x|]=SAD/N^2,这样就有:在这里插入图片描述
  对于一个变换T,可以计算(u,v)位置的变换系数的方差:在这里插入图片描述
  已经知道,SAD和SATD之间有一种线性关系,这样就可以得到:在这里插入图片描述
  上式就可以用来评估(u,v)位置的变换系数。
  概率论中有介绍到:满足正态分布的随机变量在[-2б,2б]中的概率是95.4%,在[-3б,3б]中的概率是99.7%。
  因此,变换系数绝对值在[2б,3б]中的概率大于95%。这里,把γN*бT(u,v)认为是变换系数的估计值,γN的取值范围是[2,3]。这样,高频DCT系数的最大值可以表示为:在这里插入图片描述
  对于一个全零块:HFmax<THq
  总之,如果一个全零块满足下面两个式子,就把这个TB认为是AZB。在这里插入图片描述
在这里插入图片描述
  当一个TB被认为是AZB后,所有的量化系数都可以直接指定为0,并且可以跳过繁琐的DCT和量化等步骤。

总结

  本文主要介绍一种基于频率特性的AZB检测算法,在这种算法中,哈达玛变换系数用于估计低频DCT系数,SATD用于估计高频DCT系数最大值。实验结果表明,这种算法可以检测出4x4、8x8、16x16TB中超过90%的AZB,32x32TB中大约80%的AZB。而且,在保持视频质量和压缩效率几乎不变的情况下,在DCT和量化方面减少了大约50%的计算复杂度。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值