H264解码——Deblocking Filter

1.简介

1.1何为宏块效应

视频图像有些小方块边界呈现不连续的情况;如下图所示:
宏块效应

1.2宏块效应出现的原因

  • 宏块残差值的变换系数经过量化后丢失图像细节,特别是低码率情况下会更加明显;
  • 帧间预测的运动估计:相邻块选取的参考帧或者参考块不是连续的,所以在运动补偿后,可能会引入边界效应;

1.3边界的定义

1)H264标准中,宏块的定义为16x16像素块;而变换的基本单位为4x4;故宏块内部边界如下图中的2、3、4(垂直边界);6、7、8(水平边界)所示;对于YUV420来说,Cb、Cr同理;
边界说明
另外上图中还存在 最上边1(Top MB Edge) 以及 最左边5(Left MB Edge);区别是这两条边界消除时依赖相邻宏块;但原理一致。
2)消除顺序:
按照先垂直后水平,先左后右,先上后下的原则;故图中Y分量的消除顺序为:1、2、3、4、5、6、7、8

1.4 真假边界

  • 真边界:实际图像中确实存在的边界;
  • 假边界:因为变换或者运动估计引入的边界;

真假边界消除的原理:

  • 真边界的两边像素的差值通常较大;
  • 即使真边界的两边像素差值不大,被误判断为假边界进行消除;那么对其主观影响不大

2.宏块消除

2.1 宏块消除思想

使用相邻像素进行“均值”运算来替换边界值

2.2 边界强度

区分边界强度的原因是:根据不同的边界强度,会采用不同的边界像素值计算方法。

判断条件 边界强度BS
边界为宏块边缘,且边界两边块有一个块为帧内预测 4
边界两边块有一个块为帧内预测 3
边界两边块有一个块的变换系数包含非零系数 2
边界两边块有一个块的变换系数不包含非零系数;并且边界两边块的参考帧或运动向量数目(前后向)不同 1
边界两边块有一个块的变换系数不包含非零系数;并且边界两边块的参考帧或运动向量数目(前后向)相同 0

2.3 真假边界的区分

根据真假边界的两个假设,H264标准设定两个阈值α和β用来判定真假边界。为了便于说明,我们假设判定的边界如下图红线所示。
边界
H264 Spec规定如下三个条件都满足时,才判定为虚假边界,才需要Deblocking;任一条件不满足,则认为为真实边界,无需Deblocking。

/*判断真假边界公式*/
|p0 - q0| < α[IndexA]
|p1 - p0| < β[IndexB]
|q1 - q0| < β[IndexB]
/*
 *其中p0、p1、q0、q1为上图中的像素点值;
 *IndexA = Clip3( 0, 51, QPave + FilterOffsetA )
 *IndexB = Clip3( 0, 51, QPave + FilterOffsetB)
 *QPave = (qPp + qPq +1) >> 1;qPp,qPq为q0、p0的量化值;
 *FilterOffsetA = slice_alpha_c0_offset_div2 << 1
 *FilterOffsetB = slice_beta_c0_offset_div2 << 1
 *- slice_alpha_c0_offset_div2, slice_beta_c0_offset_div2为Slice 
    Header中语法;取值应[-6, +6],默认为0;
 *- α、β值通过IndexA以及IndexB查表得到,如下表所示。
 *- clip3(a, b, c): a,c为上下限,若a < b < c,则返回b, 否则取上下限的值
*/

α以及β表

2.4滤波运算

首先声明t’c0,t’c0也是查表得到,如下表所示:
t'c0表1t'c0表2

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值