H.264/AVC的deblocking技术

Deblock的作用是消除块之间的明显的边界,也就是编码中产生的块效应,振铃效应等。对于AVC,DBK作用在4x4或者8x8块的边界。当宏块采用4x4变换的时候,DBK作用在4x4边界,对于每个宏块,有4条竖直边界和4条水平边界,一共8条边界。处理的顺序为先从左到右处理竖直边界,再从上到下依次处理每条水平边界,如图 1所示。当宏块采用8x8变换的时候,DBK作用在8x8边界,则只需要处理图 1中实线,竖直和水平各两条。

图 1 Deblock处理的边界

1.计算边界强度

在每个宏块进行去块滤波之前,需要进行边界强度BS的计算,后续根据边界强度来选择进行滤波的滤波器。BS计算的方式如表 1所示。

1 BS的计算方式

       后续每条边界会根据边界的BS选择相应的滤波方式,总的来说,BS越大,需要的滤波强度也越大。BS=0的时候不滤波。

2.识别边界类型

在确定边界强度之后,对于bs非0的边界,还需要check边界的类型,这是因为边界有的可能是由于变换量化引起的假边界,而有的才是图像内原本就有的真边界。对于真边界,是不需要滤波的。所以这里需要将假边界识别出来进行滤波。假边界和真边界进行区分的依据:(1)假边界两侧的像素的差距比真边界更小;(2)假边界两边的块内部像素变化差距较小(不一定成立)。

具体而言,判断为需要滤波的边界需要满足如下条件:

图 2 块边界像素示意图

|p0 - q0| < α[IndexA]

|p1 - p0| < β[IndexB]

|q1 - q0| < β[IndexB]),

BS != 0,

其中:

IndexA = Clip3( 0, 51, QPaverage + FilterOffsetA )

IndexB = Clip3( 0, 51, QPaverage + FilterQffsetB )

QPaverage = ( QPp+QPq+1) / 2

FilterOffsetA FilterOffsetB 偏移量默认为0,也可以在slice级别指定,从而进行特别的优化。通过传递负的偏移以减少滤波强度,可以有助于小的空间细节的逼真度,特别是高分辨率的视频内容,因为这时小的方块效应不容易被觉察。相反,采用正的偏移以增加滤波强度,可以去除默认表所不能滤除的方块效应,增加图像主观质量。这有助于平滑过渡的低分辨率内容的亮度块情况,去除可能由次优的运动估计、模式选择或残差编码引起的额外方块。αβ计算的方式和QP有关,具体如表 2所示。

2 αβindex对应的索引表

3.对于满足1BS14之间和2中的假边界进行滤波

1)对于Bs=4的边界,

如果满足|p2-p0|<β[indexB]和|p0-q0|<α/4+2,则需要对p0,p1和p2进行滤波,滤波方法为

p0=(p2+2*p1+2*p0+2*q0+q1+4)/8

p1=(p2+p1+p0+q0+2)/4

p2=(2*p3+3*p2+p1+p0+q0+4)/8

否则只滤波p0,滤波方法为

p0=(2*p1+p0+q1+2)/4

类似的,如果满足|q2-q0|<β[indexB]和|p0-q0|<α/4+2,则需要对q0,q1和q2进行滤波,滤波方法为

q0=(q2+2*q1+2*q0+2*p0+p1+4)/8

q1=(q2+q1+q0+p0+2)/4

q2=(2*q3+3*q2+q1+q0+p0+4)/8

否则只滤波q0,滤波方法为

q0=(2*q1+q0+p1+2)/4

(2)对于Bs为1-3强度的边界,滤波方法为:

第1,对p0和q0滤波.

p0=clip3(0, 255, p0+delta)

q0=clip3(0, 255, q0-delta)

delta的计算方式

delta = clip3(-tc, tc, (4*(q0-p0)+(p1-q1)+4)/8)

3 滤波时对像素clip的阈值推导

tc的计算方法为:首先根据indexA和BS的值查询表 3,获得阈值tc0 。对于亮度tc = tc0+(|p2-p0|<β[indexB])+( |q2-q0|<β[indexB]), |p2-p0|或者|q2-q0|小于阈值说明说明边界两边内部的变化强度小于b阈值,需要对边界进行更强的滤波。对于色度tc=tc0+1

第2,|p2-p0|<β[indexB]满足时,还需要对p1进行滤波,滤波方法为

delta = ((p0+q0+1)/2+p2)/2-p1

delta = clip3(-tc0, tc0, delta)

p1=p1+delta

第3,|q2-q0|<β[indexB]满足时,对q1进行滤波,滤波方法为

delta = ((p0+q0+1)/2+q2)/2-q1

delta = clip3(-tc0, tc0, delta)

q1=q1+delta

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值