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编码格式能够在保持编码效率的同时,有效地模拟电影颗粒效果,提高视频的视觉质量。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/802162.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

minIO集成springboot

问题 minIO与spring集成。 步骤 创建桶 创建key 找到创建账号页面,如下图: 点击创建,如下图: 设置如下权限: {"Version": "2012-10-17","Statement": [{"Effect": &q…

华为OD算法题汇总

60、计算网络信号 题目 网络信号经过传递会逐层衰减,且遇到阻隔物无法直接穿透,在此情况下需要计算某个位置的网络信号值。注意:网络信号可以绕过阻隔物 array[m][n],二维数组代表网格地图 array[i][j]0,代表i行j列是空旷位置 a…

如何在所有docker命令前加上一个sudo

如果当前登录用户不是root不用,使用docker命令的时候,需要在前面加上一个sudo 提升权限。 但是每次都加,就感觉特别的麻烦,如何简化呢? 解决办法 打开你的shell配置文件(例如,如果你使用bash&am…

Spring Cloud Eureka快读入门Demo

1.什么是Eureka? Eureka 由 Netflix 开发,是一种基于REST(Representational State Transfer)的服务,用于定位服务(服务注册与发现),以实现中间层服务的负载均衡和故障转移&#xff…

C语言 | Leetcode C语言题解之第239题滑动窗口最大值

题目&#xff1a; 题解&#xff1a; int* maxSlidingWindow(int* nums, int numsSize, int k, int* returnSize) {int prefixMax[numsSize], suffixMax[numsSize];for (int i 0; i < numsSize; i) {if (i % k 0) {prefixMax[i] nums[i];} else {prefixMax[i] fmax(pref…

甄选范文“论软件维护方法及其应用”软考高级论文,系统架构设计师论文

论文真题 软件维护是指在软件交付使用后,直至软件被淘汰的整个时间范围内,为了改正错误或满足 新的需求而修改软件的活动。在软件系统运行过程中,软件需要维护的原因是多种多样的, 根据维护的原因不同,可以将软件维护分为改正性维护、适应性维护、完善性维护和预防性 维护…

Mindspore框架CycleGAN模型实现图像风格迁移|(三)损失函数计算

Mindspore框架&#xff1a;CycleGAN模型实现图像风格迁移算法 Mindspore框架CycleGAN模型实现图像风格迁移|&#xff08;一&#xff09;CycleGAN神经网络模型构建 Mindspore框架CycleGAN模型实现图像风格迁移|&#xff08;二&#xff09;实例数据集&#xff08;苹果2橘子&…

JAVA 异步编程(异步,线程,线程池)一

目录 1.概念 1.1 线程和进程的区别 1.2 线程的五种状态 1.3 单线程,多线程,线程池 1.4 异步与多线程的概念 2. 实现异步的方式 2.1 方式1 裸线程&#xff08;Thread&#xff09; 2.1 方式2 线程池&#xff08;Executor&#xff09; 2.1.1 源码分析 2.1.2 线程池创建…

新的“SCALE”软件允许为 AMD GPU 原生编译 CUDA 应用程序

虽然已经有各种努力&#xff0c;如HIPIFY来帮助将CUDA源代码转换为AMD GPU的可移植C代码&#xff0c;然后是之前AMD资助的ZLUDA&#xff0c;允许CUDA二进制文件通过CUDA库的直接替代品在AMD GPU上运行&#xff0c;但有一个新的竞争者&#xff1a;SCALE。SCALE现在作为GPGPU工具…

超算网络体系架构-资源层-平台层-服务层-应用层

目录 超算网络体系架构 我国超算基础设施 超算互联网相关标准研制方面 技术架构 资源层 基础资源 芯片多样 体系异构 高效存储 高速互连 资源池化 可隔离 可计量 互联网络 高带宽 低时延 高安全 平台层 算力接入 资源管理 算力调度 用户管理 交易管理 模…

基于springboot和mybatis的RealWorld后端项目实战二之实现tag接口

修改pom.xml 新增tag数据表 SET FOREIGN_KEY_CHECKS0;-- ---------------------------- -- Table structure for tags -- ---------------------------- DROP TABLE IF EXISTS tags; CREATE TABLE tags (id bigint(20) NOT NULL AUTO_INCREMENT,name varchar(255) NOT NULL,PR…

VBA学习(21):遍历文件夹(和子文件夹)中的文件

很多时候&#xff0c;我们都想要遍历文件夹中的每个文件&#xff0c;例如在工作表中列出所有文件名、对每个文件进行修改。VBA给我们提供了一些方式&#xff1a;&#xff08;1&#xff09;Dir函数&#xff1b;&#xff08;2&#xff09;File System Object。 使用Dir函数 Dir…

2024年大数据高频面试题(中篇)

文章目录 Kafka为什么要用消息队列为什么选择了kafkakafka的组件与作用(架构)kafka为什么要分区Kafka生产者分区策略kafka的数据可靠性怎么保证ack应答机制(可问:造成数据重复和丢失的相关问题)副本数据同步策略ISRkafka的副本机制kafka的消费分区分配策略Range分区分配策略…

三级域名能申请SSL证书吗?

在当今互联网时代&#xff0c;SSL证书已经成为了保障网站安全的重要工具&#xff0c;企业会为网站部署SSL证书来实现HTTPS加密以保护传输数据安全。然而随着业务的增长以及交易规模的扩大&#xff0c;为了更好的管理业务和内容&#xff0c;企业会在主域名的基础上划分二级域名&…

GitHub 令牌泄漏, Python 核心资源库面临潜在攻击

TheHackerNews网站消息&#xff0c;软件供应链安全公司 JFrog 的网络安全研究人员称&#xff0c;他们发现了一个意外泄露的 GitHub 令牌&#xff0c;可授予 Python 语言 GitHub 存储库、Python 软件包索引&#xff08;PyPI&#xff09;和 Python 软件基金会&#xff08;PSF&…

【RabbitMQ】一文详解消息可靠性

目录&#xff1a; 1.前言 2.生产者 3.数据持久化 4.消费者 5.死信队列 1.前言 RabbitMQ 是一款高性能、高可靠性的消息中间件&#xff0c;广泛应用于分布式系统中。它允许系统中的各个模块进行异步通信&#xff0c;提供了高度的灵活性和可伸缩性。然而&#xff0c;这种通…

网络准入控制设备是什么?有哪些?网络准入设备臻品优选

小李&#xff1a;“小张&#xff0c;最近公司网络频繁遭遇外部攻击&#xff0c;我们得加强一下网络安全了。” 小张&#xff1a;“是啊&#xff0c;我听说实施网络准入控制是个不错的选择。但具体什么是网络准入控制设备&#xff1f;我们有哪些选择呢&#xff1f;” 小李微笑…

2024Datawhale AI夏令营---Inclusion・The Global Multimedia Deepfake Detection--学习笔记

赛题背景&#xff1a; 其实总结起来就是一句话&#xff0c;这个项目是基于目前的深度伪装技术&#xff0c;就是通过大量人脸的原数据集进行模型训练之后&#xff0c;能够生成伪造的人脸视频。这项目就是教我们如何去实现这个DeepFake技术。 Task1:了解Deepfake和跑通baseline …

Python项目部署到Linux生产环境(uwsgi+python+flask+nginx服务器)

1.安装python 我这里是3.9.5版本 安装依赖&#xff1a; yum install zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel gcc make -y 根据自己的需要下载对应的python版本&#xff1a; cd local wget https://www.python.org/ftp…

开发实战经验分享:互联网医院系统源码与在线问诊APP搭建

作为一名软件开发者&#xff0c;笔者有幸参与了多个互联网医院系统的开发项目&#xff0c;并在此过程中积累了丰富的实战经验。本文将结合我的开发经验&#xff0c;分享互联网医院系统源码的设计与在线问诊APP的搭建过程。 一、需求分析 在开发任何系统之前&#xff0c;首先要…