dbk滤波总体过程:
1. 对亮度和色度分别做去块效应滤波。去块效应滤波的单位是滤波块,按照光栅扫描顺序依次处理每个滤波块。亮度滤波块的尺寸是8×8,色度滤波块的尺寸也是8×8(这里注意8*8的色度对应的16*16的亮度块)。
2. 每个滤波块包括一条垂直边界和一条水平边界。亮度滤波块的每条边界的长度为8个亮度样本,平均分为8段。色度滤波块的每条边界的长度是8个色度样本,平均分为8段。对每个滤波块,首先滤波垂直边界,然后滤波水平边界,其中先亮度再色度。
3. 对每条边界,首先判断该边界是否需要滤波。如果需要滤波,则计算该条边界的每段边界的滤波强度,然后根据该段边界的滤波强度进行去块效应滤波;否则,将补偿后样本的值直接作为滤波后样本的值。
4. 当前边界两侧的样本值可能在以前的去块效应滤波过程中已经被修改,当前边界的滤波的输入为这些可能被修改的样值。当前滤波块的垂直边界的滤波过程中修改的样值作为水平边界滤波过程的输入。
简单理解:就是一个8*8的块,右边界和上边界,右边界的左右8个像素点需要平滑(左4个右4个,即垂直滤波),上边界的上下8个像素点需要平滑(水平滤波)。先垂直做完右边界的8条边界,再水平上面8条边界,边滤波边保存,肯定会有一些点垂直滤波后再水平滤波的情况的。

例如下图,左右两个8*8的块,第一个8*8块正在做第一条垂直边界的垂直滤波(红线),用到了左右4个像素点。

了解了滤波方式,下面是具体的计算细节:
1. 首先是滤波条件,AVS标准里给出了

2. 然后是关键的计算滤波强度BS
2.1 根据qp查表得到alpha和beta(水平滤波就是上下两个8*8块的qp,垂直就是左右两个8*8块的qp)
2.2 由边界两边的像素点计算得到边界相关性fs
①ABS(p0-p1) < beta时,fl=fl+2。
②ABS(p0-p2) < beta时,fl=fl+1。
③ABS(q0-q1) < beta时,fr=fr+2。
④ABS(q0-q2) < beta时,fr=fr+1。
fs = fl + fr;
2.3 计算出滤波强度BS,过程挺复杂,由标准规定如下:1 <Abs(p0 - q0) < α时计算,否则BS=0
①当fs等于6时,如果 Abs(po-p1) <= β/4且Abs(q-q1) <= β/4且Abs(po-q0) < α,则Bs = 4;否则 Bs = 3。
②当fs等于6且DeblockingFilterType 等于1时,如果 Abs(p0-p1) <= β/4且 Abs(q0-q1) <= β/4且Abs(p0-p3) <= β/2且 Abs(q0-q3) <= β/2且 Abs(p0-q0) < α,则 Bs = 4;否则 Bs = 3。
③当fs等于5时,如果p0 = p1且q0 = q1,则Bs = 3;否则Bs = 2。
④当fs等于5日DeblockingFilterType等于1时,如果p0 = p1且q0 = q1且Abs(p2·-q2) < a,则Bs = 3;否则Bs = 2。
⑤当fs等于4时,如果fl = 2,则Bs = 2;否则Bs = 1。
⑥当fs等于3时,如果 Abs(p1-q1) < β,则 Bs = 1;否则 Bs = 0。
⑦当fS为其它值时,Bs = 0。
色度的BS就是亮度BS-1
3. 根据滤波强度来进行滤波
BS为4时,改变边界两边各3个点

BS为3时,改变边界两边各2个点

BS为2时,改变边界两边各1个点

BS为1时,改变边界两边各1个点

BS为0时,不滤波
色度BS大于0时,改变两边各1个点

色度BS等于3时,再进一步改变各1个点

整体流程就是这些,dbk是编码后处理滤波,编码端跟解码端的计算过程基本一样。
351

被折叠的 条评论
为什么被折叠?



