• AV1 编码标准环路滤波和后处理技术概述


    AV1 环路滤波

    去块滤波器

    视频编码的环路滤波管道中,去块滤波器(deblocking filter)用于减少量化引起的变换块边界处的块状伪影。
    总结:

    1. 去块滤波器的应用

      • 对于亮度(luma)色度分量,可以应用4-tap、8-tap和14-tap的预定义滤波器。
      • 对于色度(chroma)色度分量,可以应用4-tap和6-tap的预定义滤波器。
    2. 滤波器长度的选择

      • 如果变换块在两边的宽度和高度都大于16像素,则对亮度色度分量应用14-tap滤波器。
    3. 去块滤波器的工作原理

      • 去块滤波器是低通滤波器,用于平滑边界,减少伪影。
      • 去块过程中,会检查边界条件以避免过度平滑实际的纹理边缘。
    4. 边界条件检查

      • 当边界样本显示出高局部变化时,识别为实际边缘,不应用去块滤波器。
      • 边界样本被识别为高变化的条件包括:
        • |p1 - p0| > T0
        • |q1 - q0| > T0
        • 2|p0 - q0| + |p1 - q1|/2 > T1
      • 其中,p0, p1, q0, q1 表示变换块边界左右(或上下)两侧的重建样本。
    5. 滤波器长度为8或14时的额外检查

      • 会检查额外的两个样本以确定是否存在高变化:
        • |p3 - p2| > T0
        • |q3 - q2| > T0
    6. 阈值(Threshold)

      • ( T0 ) 和 ( T1 ) 是阈值,可以在超块(superblock)基础上决定。
      • 较高的阈值值表示有更高的机会应用去块滤波器。

    下图展示了使用14-tap滤波器在垂直变换块边界上应用去块滤波器的示意图。
    在这里插入图片描述

    约束性方向增强滤波器

    1. 边缘方向估计

    在视频编码的上下文中,Constrained Directional Enhancement Filters(CDEFs)用于在8×8块级别执行边缘方向估计。

    1. 边缘方向估计

      • CDEFs在8×8块级别上执行边缘方向搜索。
    2. 边缘方向数量

      • 总共有八个边缘方向,如下图所示。
    3. 最优边缘方向的确定

      • 最优边缘方向 ( d_{\text{opt}} ) 是通过最大化以下项来找到的:
        在这里插入图片描述
      • 其中 Sd 定义为:
        在这里插入图片描述
      • 这里 xp 是像素 p 的值。
      • Pd,k 是沿着方向 d 的第 k 行的像素集合。
      • Nd,k 是集合 Pd,k 中像素的数量。
    4. 下图展示了在8×8块中,像素沿着方向 d = 0, …, 7 的行编号 k。
      在这里插入图片描述

    边缘方向估计的目的是找到最能代表块内纹理方向的边缘方向,以便更有效地进行图像增强或滤波处理。通过计算不同方向上的像素值的累积平方和,并除以该方向上像素的数量,可以评估每个方向的纹理一致性。最优边缘方向是使得 Sd 最大的方向,这表明该方向上的像素具有较高的一致性,可能是块的主要纹理方向。

    1. 方向滤波器

    Constrained Directional Enhancement Filters(CDEFs)的过滤过程由主滤波器和次滤波器组成。总结:

    1. CDEF过滤过程

      • 包括主滤波器和次滤波器两个阶段。
    2. 主滤波器

      • 沿着边缘方向处理重建样本(如下图所示)。
      • 对于偶数强度,参数 a 设为2,参数 b 设为4。
      • 对于奇数强度,a 和 b 都设为3。
        在这里插入图片描述
    3. 次滤波器

      • 沿着与边缘方向成45度的方向处理重建样本(如下图所示)。
        在这里插入图片描述
    4. CDEF方程

      • CDEFs可以用以下方程描述:
        在这里插入图片描述

      • 其中 xi,j和 yi,j 分别是CDEF滤波器的输入和输出重建样本值。

      • w 是主滤波器和次滤波器抽头之间应用的权重因子。

      • f(d,S,D) 是非线性滤波函数。

      • S 是滤波强度, D 是阻尼参数。

      • 对于8位内容,主滤波器强度 Sp 范围从0到15,次滤波器强度 Ss 可以是0, 1, 2或4。

      • 阻尼参数 D 对于亮度色度分量范围从3到6,对于色度色度分量范围从2到4。

    5. 非线性滤波

      • CDEF是一个非线性滤波过程,它防止在边缘处应用滤波器时过度模糊。
      • 通过忽略与当前待滤波像素差异过大的像素来实现。
      • 当当前像素与其相邻像素d之间的差异在给定阈值内时,f(d,S,D) 设为d;否则设为0。
      • 强度 S 确定最大允许差异,阻尼 D 确定忽略滤波器抽头的样本位置。

    CDEF通过在边缘方向上应用主滤波器,并在与边缘方向成45度的方向上应用次滤波器,以增强图像的纹理和细节,同时避免在边缘处产生过度的模糊效果。通过调整滤波强度和阻尼参数,CDEF能够适应不同的图像内容和质量需求。

    环路恢复滤波器

    环路恢复(Loop Restoration, LR)滤波是一种用于改善图像和视频质量的技术,特别是在编码和解码过程中。总结:

    1. 应用单元大小

      • LR滤波器在64×64、128×128或256×256大小的块上应用,这些块被称为环路恢复单元(Loop Restoration Unit, LRU)。
    2. 应用选项

      • 在LRU上应用LR滤波器时,有三种选项:
        1. 应用Wiener滤波器。
        2. 应用自引导滤波器(Self-Guided Filter, SGF)。
        3. 不应用任何滤波器。
    3. LR在环路滤波管道中的位置

      • LR是环路滤波管道中的最后阶段,用于最终改善重建图像的质量。
    4. 滤波器系数的信号传输

      • 不同滤波器抽头的系数由编码器派生,并通过比特流以不同的比特深度进行信号传输。

    LR滤波器的应用是为了减少压缩伪影,增强图像细节,并提高整体视觉质量。通过在不同的LRU上应用不同的滤波器或不应用滤波器,可以根据图像内容和编码需求灵活调整滤波效果。

    1. 可分离对称维纳滤波器

    在环路恢复(Loop Restoration, LR)滤波中,Wiener滤波器使用了一个7×7的可分离滤波器,具体细节如下:

    1. 滤波器结构

      • 包含一个7-tap的垂直滤波器和一个7-tap的水平滤波器。
    2. 滤波过程

      • 重建样本的滤波是通过顺序应用垂直和水平滤波器完成的。
    3. 滤波结果

      • 应用完垂直和水平滤波器后,生成最终的过滤重建样本。
    4. 系数派生与信号传输

      • 滤波器系数由编码器派生,并通过比特流进行信号传输。
    5. 对称性利用

      • Wiener滤波器是一个对称滤波器,因此对于7-tap滤波器,只需要信号传输三个系数,其余三个系数作为镜像系数采用相同的值。
    6. 示例

      • 一个对称的7-tap Wiener滤波器的示例在下图中展示。
        在这里插入图片描述
        这种滤波器的设计允许在编码过程中有效地利用对称性减少需要传输的数据量,同时保持滤波器的性能。通过这种方式,可以在解码端重建完整的7-tap滤波器,以实现高质量的图像重建。
    1. 自引导滤波器

    Self-Guided Filters (SGFs) 是一种用于图像和视频恢复的技术,旨在通过结合两个初始过滤帧 X1 和 X2
    来改善图像质量。总结:

    1. SGF目的

      • 设计用于获取两个初始过滤帧 X1 和 X2,并通过它们来恢复最终图像 Xr
    2. 最终恢复公式

      • 最终恢复 Xr 是退化样本 X 和 X1、X2 与 X 的差值的组合,公式如下:
        在这里插入图片描述
    3. 编码器端参数计算

      • α 和 β 是使用最小均方误差方法计算得到的,公式如下:
        在这里插入图片描述

      • 其中 A 是由 X1 - X 和 X2 - X 组成的矩阵,b 是原始样本向量 y 减去样本向量 x 的结果。

    4. 引导滤波器控制参数

      • X1 和 X2 是使用引导滤波得到的,由半径参数 r 和噪声参数 e 控制。
      • r 的较大值意味着更高的空间方差,e 的较大值意味着更高的范围方差。
    5. SGF应用

      • 编码器需要将 r1, e1, r2, e2, α, 和 β 的值信号传输到比特流中。
    6. 初始过滤帧派生步骤

      • 分别为 X1 和 X2 生成提供 (r, e) 对。

      • 计算以待过滤像素为中心的窗口内的输入样本的均值 µ 和方差 σ²。

      • 使用如下公式计算每个样本的过滤样本。
        在这里插入图片描述

      • 使用过滤样本 x’,为 LRU 中的每个样本生成 X1 和 X2

    7. SGF的最终应用

      • 使用 如下方程 和信号传输的 (α, β) 应用 SGF。
        在这里插入图片描述

    SGF 通过结合退化样本和粗略恢复样本的差异,以及通过引导滤波得到的两个初始过滤帧,来优化图像质量。这种方法允许在保持图像细节的同时减少噪声和压缩伪影。

    AV1后处理技术

    帧超分

    超分辨率(super-resolution)是一种用于提高解码图像感知质量的技术,尤其适用于低比特率的情况。

    1. 超分辨率目的

      • 用于提高低比特率下解码图像的感知质量。
    2. 超分辨率过程

      • 可以在每帧的基础上进行超分辨率处理。
    3. 编码器端操作

      • 源视频首先被非标准地缩小尺寸(downscaled)。
    4. 编码和滤波

      • 缩小尺寸的视频被编码,然后进行去块(deblocking)和CDEF(Constrained Directional Enhancement Filters)滤波处理。
    5. 线性上采样

      • 应用规范的线性上采样(upscaling)过程,将编码视频转换回原始分辨率。
    6. LR滤波

      • 应用LR(Loop Restoration)滤波器进一步恢复上采样图像中丢失的细节。
    7. 超分辨率的最后两步

      • 上采样和LR滤波构成了超分辨率过程。
    8. 去块和CDEF滤波器的应用

      • 在解码器端,在较低的空间分辨率下应用去块和CDEF滤波器,然后帧通过超分辨率过程。
    9. 硬件实现中的复杂性降低

      • 为了减少硬件实现中对线缓冲器(line buffers)的使用复杂性,上采样和下采样过程仅应用于水平维度。

    超分辨率技术通过在编码和解码过程中增加分辨率,改善了图像的细节和质量。通过这种方式,即使在低比特率条件下,也能获得更清晰、更高质量的图像输出。

    胶片颗粒合成

    在视频编码中,为了提高感知视频质量,通常会通过添加电影颗粒(film grain)来模拟传统胶片的视觉效果。然而,由于其高度随机性,电影颗粒本身很难有效压缩。AV1编码格式通过一种基于自回归(AR)模型的电影颗粒合成工具,有效地解决了这个问题。

    1. 电影颗粒的重要性

      • 电影颗粒能增强动态影像内容的感知质量,但压缩困难。
    2. AV1编码的电影颗粒合成工具

      • 利用参数化的低阶模型高效编码,然后在解码器端合成并添加到去噪视频信号中。
    3. 编码端处理

      • 通过去噪过程从输入视频中移除电影颗粒,然后对去噪信号进行编码。
    4. 噪声模型参数估计

      • 在去噪视频的平滑区域中估计噪声模型参数,并通过边缘检测器分析其结构和强度。
    5. 解码端处理

      • 使用噪声模型参数在解码器端合成电影颗粒,并添加到解码的去噪视频中,产生最终重建视频信号。
    6. 编码的电影颗粒参数

      • 包括滞后值、AR模型系数、分段线性缩放函数的点集,以及映射色度分量中电影颗粒强度的参数。
    7. 电影颗粒噪声合成公式

      • 对于亮度(luma)分量,使用公式:
        在这里插入图片描述
      • 对于色度(chroma)分量,使用公式 :
        在这里插入图片描述
    8. 电影颗粒噪声合成的应用

      • 在输出图像发送到显示设备前添加合成的电影颗粒噪声,但不添加到参考图像中,以避免降低后续帧间预测的效率。
    9. 电影颗粒噪声合成过程

      • 使用光栅扫描顺序应用自回归过程,生成64×64亮度和两个32×32色度电影颗粒噪声模板。
      • 在合成过程中,从这些模板中以伪随机位置取出32×32亮度和16×16色度电影颗粒噪声块,并添加到重建样本中。
    10. 电影颗粒噪声块的重叠应用

      • 可以选择以重叠的方式应用电影颗粒噪声块,以减少电影颗粒噪声块边界处的潜在不连续性。

    通过这种方式,AV1编码格式能够在保持编码效率的同时,有效地模拟电影颗粒效果,提高视频的视觉质量。

  • 相关阅读:
    【从零开始的Java开发】2-10-3 JSP入门:JSP介绍、语法和页面重用
    【python百炼成魔】Python循环语句:掌握while循环的实战应用
    阿里面试官终于把Java八股文整理成册了,共计12w字,太全了
    MySQL-使用CPP接入到MySQL
    unplugin-vue-components和unplugin-auto-import插件
    JSP Taglib指令具有什么功能呢?
    Open3D(C++) 计算点到平面的距离
    【考研高数 自用】高数第一章基础部分思维导图
    外包干了2个月,技术退步明显...
    Python numpy | 详解 np.unique() 的妙用 去重 + 重排序、统计出现次数
  • 原文地址:https://blog.csdn.net/yanceyxin/article/details/140462134