H264去块效应滤波分析

###Date:2017/10/17

转载自:http://blog.csdn.net/h514434485/article/details/52241778


所谓的块效应就是在视频编码中人眼察觉到的小块边界处的不连续。通过下面的图有个直观的感受。

                   H264去块效应滤波分析_第1张图片

可以感受到(a)中的左上角有一些明显的小块,而(b)看上去比较平滑一些。


一、块效应产生的原因:

1)在对图像进行编码的时候,图像被分成16x16,8x8或者4x4这样的块,然后对这些块进行DCT变换,这样就导致块与块之间的相关性被忽略。

2)对每个块进行DCT变换得到的系数进行量化的时候取整,而由于不同图像块做了不同的量化处理,有时量化步长不同有时是舍入的高频分量

不一样,这就导致图像相关性受到破坏。

3)H264的运动补偿加剧了块效应。

4)时域预测技术使得参考图像中存在的边界不连续可能会传递到后续图像编码。


二、滤波器类型:

根据在视频编解码中加入去块滤波器的位置,滤波器分两种类型。

1)后置滤波器:

   只放在解码端,处理解码环路外的显示缓冲区中的数据,后置滤波器不属于标准化内容,在标准中只是可选项。

2)环路滤波器:

   放置在编解码环路中,在编码器中被滤波的图像作为后续编码图像的参考图像,在解码器端,滤波后的图像作为

   解码重建的参考图像。

 编解码器要使用同样的滤波器,才能保证编码图像在解码端顺利重建。

 两种滤波器比较:

a:环路滤波器可以保证不同水平的图像质量。

b:解码器端没有必要为环路滤波器准备额外缓存。

c:环路滤波器更能增加视频流的主客观质量,同时降低解码器的复杂度。


三、滤波过程:

H264中的去块效应滤波是以16x16的宏块为单位,在宏块内部按照先横后纵、先亮度后色度的顺序,对每个4x4块

边界进行滤波处理。滤波过程分为边界分析和滤波运算两部分。

边界分析要解决两个问题:计算边界强度+解决真假边界的问题。

1)计算边界强度:

   根据边界强度需要,采用不同强度的滤波。假设P块和Q块是两相邻的4X4块,边缘强度BS计算如下表:

        H264去块效应滤波分析_第2张图片

2)区分真假边界:

  区分真假边界基于两个假设:

a:真实边界两边像素点的差值通常比虚假边界两边像素差值要大。

b:对于两边像素值差别很小的真实边界,即使使用了平滑滤波,其主观效果也不会有太大的影响。

  区分真假边界遵守两个原则:

a:平坦区域,即使很小的像素不连续也容易被人察觉,所以要使用比较强的去块滤波。

b:对复杂区域,为保持图像的细节,要使用较弱的平滑滤波,改变较少的像素点。


为区分真假边界,需要对被滤波的相邻的4x4块边界的样点进行分析,假设如下边界两边像素分布:

H264去块效应滤波分析_第3张图片

左两个是边界两边像素点分布图,图右是边界两边像素点亮度值分布图。

     H264标准中定义两个阀值α和β,α表示块与块之间的边界阀值,β表示块内边界阀值。

边界两边像素值满足下面公司三个条件,则定义为虚假边界,否则为真实边界。

IndexA,IndexB计算公式如下:

H264去块效应滤波分析_第4张图片

IndexA和IndexB等于边界两边的平均QP分别加上偏移量FilterOffset和FilterOffset,同时量化参数QP在[0,51]范围。

α和β的取值取决于量化参数的大小,IndexA、IndexB与α、β对于关系如下表:

H264去块效应滤波分析_第5张图片

另外在BS为1、2、3时滤波像素改变值tc0限定了一个范围,防止滤波过程中把边界附近的图像细节平滑的太厉害,

特别是量化参数小的时候。tc0的范围如下表:

H264去块效应滤波分析_第6张图片


、滤波运算过程:

H264滤波是以宏块为单位进行的,滤波对象是4x4块边界,先对垂直边界进行滤波,再对水平边界进行滤波。

H264去块效应滤波分析_第7张图片

上述图滤波顺序规则如下:

1)亮度分量顺序:先滤波4个垂直边界,顺序为a、b、c、d,然后是4个水平边界顺序为e、f、g、h。

2)色度分量顺序:先滤波2个垂直边界,顺序为i、j,接着2个水平边界顺序为k,l。

3)色度要借用亮度的边缘强度,所以在滤波完亮度的边界后才能滤波色度的对应边界。

4)宏块的右边界和下边界与后面的宏块一起滤波,称为"被动滤波"。


当BS的值不为0时就要进行边界滤波。H264根据BS的值,分为两种滤波。具体滤波可参考下图:

                          H264去块效应滤波分析_第8张图片

BS为1、2、3时采用强度较弱滤波器,首先改变p0,q0两个像素点,接着用阀值β判断是否需要调整p1和q1的值。

BS为4时分两种强度的滤波,强滤波可改变6个像素点(p0、p1、p2、q0、q1、q2)如上图示,弱滤波只改变边界上的

两点(p0、p1)。

具体滤波过程如下:

1)BS=1、2、3时的滤波过程

   此时滤波过程分两步:基本滤波和限幅。

   a:基本滤波,首先对边界两个像素点进行滤波,公式如下:

      

△0是由△‘0经限幅后得到的,△’0由下式得到:

   如果是色度分量,BS=1、2、3的滤波过程就结束了,对于亮度分量则还需考虑p1、q1的滤波,p1和q1值取决于β,如下:

1)、|p2-p0|<β,则认为p块内部p1点出有虚假边界,p1点需修改为

    p`1=p1△1p

2)、|q2-q0|<β,则认为q块内部q1点处有虚假边界,q1点需修改为

    q`1=q1+△1q

△1p△1q△`1p△`q经限幅后获得,△`1p和△`1q计算如下

     此处说道的限幅就是上面提到的滤波过程的限幅tc0来控制。


2)BS=4时强滤波:

    对于P块点若满足下式,则认为细节信息不多,

公式4-1

  采用强滤波:

不满足公式4-1,则只采用弱滤波修改p0值:

于Q点,类似P点,若满足下式:

公式4-2

采用强滤波:

不满足公式4-2,则采用弱滤波修改q0值,公式如下:

色度分量在BS=4时,只改变p0,q0点,滤波公司和亮度分量采用弱滤波时相同。

你可能感兴趣的:(【视频编解码开发】)