环路滤波Loop Filter

版权声明:本文为博主[email protected](阿King)原创文章,不得以任何理由任何形式进行转载 https://blog.csdn.net/lj501886285/article/details/84702809

前言

在这里插入图片描述
由于FDCT变换后的量化(Quant)过程是一个有损(lossy)过程,会照成信息损失。再经过反量化(Rescale)和IDCT后恢复的矩阵与原矩阵存在一定的误差,特别宏块的边界,会照常恢复的图像呈现方块化,而方块化的图片对于后面的图片预测存在极大的影响,所以我们需要通过环路滤波进行去方块化
在这里插入图片描述

真假边界

在这里插入图片描述

真边界

即原图像所存在的纹理细节。例如上图foreman的脸部边界

假边界

即原图像平坦区域由于量化操作而导致块边界失真,相邻块之间过度不平滑,呈现出来的边界。例如上图白色块之间的边界

判定

在这里插入图片描述
当且仅当以下三个条件满足时才进行滤波

  • p 0 q 0 < α ( i n d e x A ) |p_0-q_0|<\alpha(index_A)
  • p 1 p 0 < β ( i n d e x B ) |p_1-p_0|<\beta(index_B)
  • q 1 q 0 < β ( i n d e x B ) |q_1-q_0|<\beta(index_B)

其中
在这里插入图片描述
QP为量化中的参数,范围[0,51],offset给编码器提供一个控制滤波器性能的偏移量,然后我们针对 α ( i n d e x A ) \alpha(index_A) β ( i n d e x B ) \beta(index_B) 查表:
在这里插入图片描述

滤波过程

滤波强度Bs

在这里插入图片描述
Bs=4时,强度最大;Bs=0时,无需进行滤波。色度块的滤波强度同亮度块
我们所希望的是:
针对平坦区域(高频),使用较强的滤波强度
针对细节区域(低频),使用较弱的滤波强度

滤波顺序

在这里插入图片描述
依照从左至右,依上而下的顺序,即

  • 16x16的亮度块:a b c d e f g h
  • 8x8色度块:i j k l

当Bs = {1,2,3}时

  1. 更新 p 0 p_0 q 0 q_0
    Δ 0 = ( ( q 0 p 0 ) < < 2 + ( p 1 q 1 ) + 4 ) > > 3 p 0 = p 0 + Δ 0 q 0 = q 0 Δ 0 \Delta_0=( (q_0-p_0) << 2 + (p_1 - q_1) + 4) >> 3\\ p_0'=p_0+\Delta_0\\ q_0'=q_0-\Delta_0
  2. p 0 p_0 q 0 q_0 进行限幅
    即将 p 0 p_0 q 0 q_0 限制在范围 [ c 0 , c 0 ] [-c_0,c_0] 内。 c 0 c_0 取值为 c 1 c_1 ,若同时满足 p 2 p 0 < β ( i n d e x B ) |p_2-p_0|<\beta(index_B) q 2 q 0 < β ( i n d e x B ) |q_2-q_0|<\beta(index_B) ,则 c 0 = c 1 + 1 c_0=c_1+1

若满足 p 2 p 0 < β ( i n d e x B ) |p_2-p_0|<\beta(index_B) ,则

  1. 更新 p 1 p1
    Δ p 1 = ( p 2 + ( p 0 + q 0 + 1 ) > > 1 2 p 1 ) > > 1 p 1 = p 1 + Δ p 1 \Delta_{p1}=( p_2 + (p_0+q_0+1)>>1-2p_1 ) >> 1\\ p_1'=p_1+\Delta_{p1}\\
  2. p 1 p1 限幅
    p 1 p1 限定在范围 [ c 1 , c 1 ] [-c_1,c_1] ,其中 c 1 c_1 的值查表所得
    在这里插入图片描述

同样的,若满足 q 2 q 0 < β ( i n d e x B ) |q_2-q_0|<\beta(index_B) ,则

  1. 更新 q 1 q1
    Δ q 1 = ( q 2 + ( q 0 + p 0 + 1 ) > > 1 2 q 1 ) > > 1 q 1 = q 1 + Δ q 1 \Delta_{q1}=( q_2 + (q_0+p_0+1)>>1-2q_1 ) >> 1\\ q_1'=q_1+\Delta_{q1}\\
  2. q 1 q1 限幅
    限幅规则同 p 1 p1

当Bs = 4时

  1. 更新 p 0 p_0 q 0 q_0
    · 若 p 0 q 0 < α > > 2 + 2 |p_0-q_0|<\alpha>>2+2
    p 0 = ( p 2 + 2 p 1 + 2 p 0 + 2 q 0 + q 1 + 4 ) > > 3 q 0 = ( q 2 + 2 q 1 + 2 q 0 + 2 p 0 + p 1 + 4 ) > > 3 p_0'=(p_2+2p_1+2p_0+2q_0+q_1+4)>>3\\ q_0'=(q_2+2q_1+2q_0+2p_0+p_1+4)>>3
    · 否则
    p 0 = ( 2 p 1 + p 0 + q 1 + 2 ) > > 2 q 0 = ( 2 q 1 + q 0 + p 1 + 2 ) > > 2 p_0'=(2p_1+p_0+q_1+2)>>2\\ q_0'=(2q_1+q_0+p_1+2)>>2
  2. 若满足 p 2 p 0 < β ( i n d e x B ) |p_2-p_0|<\beta(index_B) ,则更新 p 1 p_1 p 2 p_2
    p 1 = ( p 2 + p 1 + p 0 + q 0 + 2 ) > > 2 p 2 = ( 2 p 3 + 3 p 2 + p 1 + p 0 + q 0 + 4 ) > > 3 p_1'=(p_2+p_1+p_0+q_0+2)>>2\\ p_2'=(2p_3+3p_2+p_1+p_0+q_0+4)>>3
  3. 若满足 q 2 q 0 < β ( i n d e x B ) |q_2-q_0|<\beta(index_B) ,则更新 q 1 q_1 q 2 q_2
    q 1 = ( q 2 + q 1 + q 0 + q 0 + 2 ) > > 2 q 2 = ( 2 q 3 + 3 q 2 + q 1 + q 0 + p 0 + 4 ) > > 3 q_1'=(q_2+q_1+q_0+q_0+2)>>2\\ q_2'=(2q_3+3q_2+q_1+q_0+p_0+4)>>3

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/lj501886285/article/details/84702809