AV1 编码标准中帧内预测技术详细说明

news2024/9/25 19:18:42

AV1 编码标准帧内预测

AV1(AOMedia Video 1)是一种开源的视频编码格式,旨在提供比现有标准更高的压缩效率和更好的视频质量。在帧内预测方面,AV1相较于其前身VP9和其他编解码标准,如H.264/AVC和H.265/HEVC,进行了显著的增强和扩展。

  1. 帧内预测模式的扩展:AV1支持更多细化的角度模式,从VP9的10种模式扩展到了56种模式。这些模式包括8个基础角度模式,每个基础角度模式两侧以3°为步长分布有6个扩展角度。

  2. 非角度模式的新增:除了角度模式,AV1还新增了多种非角度模式,如Smooth模式(垂直、水平和垂直+水平)、DC模式、Paeth模式、CFL(Chroma from Luma)模式、调色板模式以及基于递归滤波的预测模式 。

  3. 帧内预测的实现:在AV1的参考软件libaom-av1中,帧内预测从函数av1_predict_intra_block_facade()开始,并涉及到构建intra predictor,处理调色板模式,以及在非调色板模式下,准备周边块的参考信息 。

  4. 帧内预测的性能:AV1的帧内预测技术通过利用空间和时间上邻近像素的相关性,减少了数据的冗余,提高了压缩效率 。通过对比实验,使用帧内预测技术在某些编码模式中可以实现2%的性能提升 。

  5. 帧内预测的优化方法:AV1采用了自适应环路滤波算法来减少预测残差的边缘伪影,并采用了可变大小的预测块和扩展的预测模式集合来增强预测的适应性和灵活性。此外,还利用了深度学习技术来优化帧内预测的模式选择和残差计算过程。

  6. 帧内预测的局限性与改进空间:尽管AV1的帧内预测技术在提高编码效率方面取得了显著成果,但在处理快速运动和复杂纹理的场景下可能效果不佳,需要进一步优化
    。未来的研究可以关注新型帧内预测算法的开发,如深度学习在帧内预测中的应用,以及帧内预测技术与其他视频编码技术的融合与优化 。

  7. 帧内预测的未来发展趋势:帧内预测技术将朝着更加智能化、自适应化的方向发展,深度学习的应用将使帧内预测更加精准,同时新技术如人工智能、云计算、物联网的发展也将为帧内预测技术带来新的挑战和机遇。

方向帧内预测

  • 方向性内预测用于模拟局部纹理,它使用一组边缘方向。存在八个名义上的方向性内预测模式,每个模式都有一个与之关联的角度偏移量集合,这些偏移量以介于-3到+3之间的整数值进行索引,其中名义角度位于0度。预测方向是通过将角度偏移量加到名义内角度上来得到的。总共有56个方向性内预测模式。
  • 八个名义方向预测模式对应的角度分别为:45°、67°、90°、113°、135°、157°、180°、203°。
  • 名义方向预测模式和相关的角度偏移索引都会被信号化,名义模式索引会在相关的角度偏移索引之前进行信号化。对于较小的块尺寸,即4×4、4×8和8×4,扩展内预测角度精度带来的额外编码增益通常是边缘的;因此,在这些情况下,通常只使用名义模式,不应用或信号化任何角度偏移。
    在这里插入图片描述

非方向帧内预测

除了方向性内预测模式外,还有五种非方向性内预测模式:DC_PRED、SMOOTH、SMOOTH_H、SMOOTH_V和Paeth,这些模式通常用于平滑区域的预测。

  • DC_PRED 模式:通过平均顶部和左侧邻近块的重建样本来生成当前块的预测样本。
  • SMOOTH_V 和 SMOOTH_H 模式:分别沿垂直和水平方向使用二次插值生成预测值,而SMOOTH 模式则使用沿两个方向的二次插值结果的平均值来生成预测值。用于二次插值的样本包括来自顶部和左侧邻近重建块的重建样本,以及通过顶部和左侧重建样本估计的右侧和底部边界的样本。
  • Paeth 预测模式:如第5图所示,根据其顶部(T)、左侧(L)和左上角(TL)的参考样本预测每个样本。在这些参考样本中,与(T + L – TL)的值最接近的那个值被选为预测样本。
    • Paeth模式是以人名命名的模式, 有个人在开发 PNG 图像编码时发明了Paeth预测。
      在这里插入图片描述

这些非方向性内预测模式适用于预测那些在图像中没有明显方向性纹理的区域,例如天空或肤色等平滑渐变的区域。通过使用不同的预测模式,编码器能够更灵活地适应图像内容的变化,从而提高编码效率和压缩性能。

递归帧内预测

在AV1中定义了五种递归内预测模式。每种模式指定了一组八个7-tap(7个系数的)滤波器。给定所选的递归内预测模式索引(0到4),当前块被划分为4×2子块的倍数。对于每个4×2子块,每个样本通过使用来自顶部和左侧块的七个相邻样本作为输入进行7-tap插值来预测,如图6所示。在每个4×2子块内不同坐标的样本应用不同的滤波器。这个预测过程在一个编码块内对4×2子块逐个执行,并且为每个4×2子块生成的预测样本可以用来预测下一个4×2子块。递归内预测的一个例子如图所示。

  1. 模式选择:编码器从五种递归内预测模式中选择一种,每种模式对应一组特定的7-tap滤波器系数。

  2. 块划分:当前编码块根据所选模式被划分为多个4×2像素的子块。

  3. 样本预测:对于每个4×2子块,根据所在位置,使用来自顶部和左侧的七个样本进行7-tap插值来预测子块内的每个样本。

  4. 滤波器应用:每个子块内的样本根据其在子块中的位置使用不同的滤波器。这意味着在子块的不同位置,预测使用的权重组合会有所不同。

  5. 递归预测:一旦一个4×2子块的预测样本生成,这些样本可以作为预测下一个子块的参考,从而实现递归效果。

  6. 过程重复:这个过程在编码块内对每个4×2子块重复进行,直到整个块的预测完成。
    在这里插入图片描述

递归内预测模式特别适合于预测具有明显方向性纹理的区域,例如边缘或斜线。通过递归地利用已预测的样本来预测新的样本,这种方法可以有效地捕捉和延续图像中的方向性特征。

依赖亮度的色度预测

色度从亮度(Chroma from Luma,简称CfL)是一种仅应用于色度编码块的内预测模式。CfL预测模式通过一个线性模型,使用相应的重建亮度样本来推导色度预测样本。当相应的亮度和色度分辨率不同时,例如在4:2:0和4:2:2色度子采样格式中,需要在将重建的亮度样本输入CfL模式之前进行子采样。预测块是色度直流(DC)分量和缩放的亮度交流(AC)分量之和。一个块的DC分量由块的平均值组成,而AC分量是通过从块中移除DC分量来得到的。在CfL模式中,模型参数,例如应用于亮度AC分量的缩放因子,在编码过程中计算并信号化到比特流中。CfL预测模式的流程图在图中展示。

CfL模式的工作原理:

  1. 适用性:CfL模式专门用于色度编码块,不适用于亮度块。

  2. 分辨率差异处理:如果亮度和色度的分辨率不同,需要先对亮度样本进行子采样,以匹配色度分辨率。

  3. 线性模型:CfL使用一个线性模型来预测色度样本,该模型基于对应位置的亮度样本。

  4. DC和AC分量

    • DC分量:是预测块内所有样本的平均值,代表块的直流或平均亮度水平。
    • AC分量:是亮度样本与DC分量的差值,代表块内的交流或细节信息。
  5. 预测块的计算:预测块是通过将色度的DC分量与缩放后的亮度AC分量相加得到的。

  6. 模型参数:编码过程中会计算模型参数,如亮度AC分量的缩放因子,并将其编码到比特流中,以便解码器可以正确重建色度样本。

  7. 比特流信号化:编码器在编码过程中计算出的模型参数需要通过比特流传输给解码器。

  8. 流程图:图中提供了CfL预测模式的工作流程,展示了从亮度样本到色度预测样本的转换过程。
    在这里插入图片描述
    CfL模式利用了亮度和色度之间的相关性,通过亮度信息来辅助色度的预测,从而提高编码效率,特别是在色度分辨率低于亮度分辨率的情况下。

帧内预测模式信号

对于亮度(luma)分量,内预测模式包括56个方向性内预测模式、5个非方向性预测模式和5个递归滤波模式。以下是用于信号化编码块内预测模式的过程:

  • 首先信号化语法元素y_mode,以指示应用的是八个名义上的方向性内预测模式之一还是五个非方向性内预测模式之一。
  • 如果块大小大于8×8,并且y_mode指示的是方向性内预测模式,即1到8,则进一步信号化语法元素angle_delta_y,以指示角度偏移量索引,范围在-3到+3之间。
  • 否则,如果亮度预测模式是DC_PRED,并且编码块的最大宽度和高度小于或等于32,信号化标志use_filter_intra,以指示是否应用递归内预测模式。
  • 如果use_filter_intra信号化为1,则进一步信号化filter_intra_mode,以指示应用的是五个递归内预测模式中的哪一个。

对于色度(chroma)分量,内预测模式包括56个方向性内预测模式、5个非方向性预测模式和CfL(色度从亮度)预测模式。以下是用于信号化编码块内预测模式的过程:

  • 信号化语法元素uv_mode,以指示应用的是八个名义上的方向性内预测模式之一、五个非方向性预测模式之一,还是CfL预测模式。
  • 如果块大小大于8×8,并且uv_mode指示的是方向性内预测模式,则进一步信号化语法元素angle_delta_uv,以指示角度偏移量索引,范围在-3到+3之间。
  • 否则,如果uv_mode指示CfL模式作为内预测模式,则使用缩放参数α,该参数进一步为Cb和Cr色度分量信号化。对于信号化y_mode,对于内帧和间帧的编码块应用不同的上下文。
    • 在内帧中,信号化y_mode的上下文从邻近的亮度内预测模式中派生。
    • 在间帧中,信号化y_mode的上下文从当前编码块大小中派生。
    • 对于信号化uv_mode,上下文是使用同位亮度内预测模式派生的。
      在这里插入图片描述

这个信号化过程确保了编码器能够准确地传达所需的内预测模式,以便解码器可以正确地重建编码块。通过这种方式,编码器可以根据块的内容和大小选择最合适的预测模式,从而提高编码效率和视频质量。

libaom中关于帧内预测相关代码介绍

  • av1/common/enums.h 中有关于帧内预测模式类型的相关枚举:
enum { CFL_PRED_U, CFL_PRED_V, CFL_PRED_PLANES } UENUM1BYTE(CFL_PRED_TYPE);


// Note: All directional predictors must be between V_PRED and D67_PRED (both
// inclusive).
enum {
  DC_PRED,        // Average of above and left pixels
  V_PRED,         // Vertical
  H_PRED,         // Horizontal
  D45_PRED,       // Directional 45  degree
  D135_PRED,      // Directional 135 degree
  D113_PRED,      // Directional 113 degree
  D157_PRED,      // Directional 157 degree
  D203_PRED,      // Directional 203 degree
  D67_PRED,       // Directional 67  degree
  SMOOTH_PRED,    // Combination of horizontal and vertical interpolation
  SMOOTH_V_PRED,  // Vertical interpolation
  SMOOTH_H_PRED,  // Horizontal interpolation
  PAETH_PRED,     // Predict from the direction of smallest gradient
  NEARESTMV,
  NEARMV,
  GLOBALMV,
  NEWMV,
  // Compound ref compound modes
  NEAREST_NEARESTMV,
  NEAR_NEARMV,
  NEAREST_NEWMV,
  NEW_NEARESTMV,
  NEAR_NEWMV,
  NEW_NEARMV,
  GLOBAL_GLOBALMV,
  NEW_NEWMV,
  MB_MODE_COUNT,
  PRED_MODE_INVALID = MB_MODE_COUNT,
  INTRA_MODE_START = DC_PRED,
  INTRA_MODE_END = NEARESTMV,
  DIR_MODE_START = V_PRED,
  DIR_MODE_END = D67_PRED + 1,
  INTRA_MODE_NUM = INTRA_MODE_END - INTRA_MODE_START,
  SINGLE_INTER_MODE_START = NEARESTMV,
  SINGLE_INTER_MODE_END = NEAREST_NEARESTMV,
  SINGLE_INTER_MODE_NUM = SINGLE_INTER_MODE_END - SINGLE_INTER_MODE_START,
  COMP_INTER_MODE_START = NEAREST_NEARESTMV,
  COMP_INTER_MODE_END = MB_MODE_COUNT,
  COMP_INTER_MODE_NUM = COMP_INTER_MODE_END - COMP_INTER_MODE_START,
  INTER_MODE_START = NEARESTMV,
  INTER_MODE_END = MB_MODE_COUNT,
  INTRA_MODES = PAETH_PRED + 1,  // PAETH_PRED has to be the last intra mode.
  INTRA_INVALID = MB_MODE_COUNT  // For uv_mode in inter blocks
} UENUM1BYTE(PREDICTION_MODE);

// TODO(ltrudeau) Do we really want to pack this?
// TODO(ltrudeau) Do we match with PREDICTION_MODE?
enum {
  UV_DC_PRED,        // Average of above and left pixels
  UV_V_PRED,         // Vertical
  UV_H_PRED,         // Horizontal
  UV_D45_PRED,       // Directional 45  degree
  UV_D135_PRED,      // Directional 135 degree
  UV_D113_PRED,      // Directional 113 degree
  UV_D157_PRED,      // Directional 157 degree
  UV_D203_PRED,      // Directional 203 degree
  UV_D67_PRED,       // Directional 67  degree
  UV_SMOOTH_PRED,    // Combination of horizontal and vertical interpolation
  UV_SMOOTH_V_PRED,  // Vertical interpolation
  UV_SMOOTH_H_PRED,  // Horizontal interpolation
  UV_PAETH_PRED,     // Predict from the direction of smallest gradient
  UV_CFL_PRED,       // Chroma-from-Luma
  UV_INTRA_MODES,
  UV_MODE_INVALID,  // For uv_mode in inter blocks
} UENUM1BYTE(UV_PREDICTION_MODE);

enum {
  II_DC_PRED,
  II_V_PRED,
  II_H_PRED,
  II_SMOOTH_PRED,
  INTERINTRA_MODES
} UENUM1BYTE(INTERINTRA_MODE);

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

暑假第一次作业

第一步:给R1,R2,R3,R4配IP [R1-GigabitEthernet0/0/0]ip address 192.168.1.1 24 [R1-Serial4/0/0]ip address 15.0.0.1 24 [R2-GigabitEthernet0/0/0]ip address 192.168.2.1 24 [R2-Serial4/0/0]ip address 25.0.0.1 24 [R3-GigabitEthernet0/0/0]ip address 192.…

【Mutilism用74ls192和与非门设计3进制24进制加法计数器2荔枝】2022-5-10

缘由【数电 数字逻辑】如何用74ls192和与非门设计任意进制加法计数器?-嵌入式-CSDN问答

Qt学生管理系统(付源码)

Qt学生管理系统 一、前言1.1 项目介绍1.2 项目目标 2、需求说明2.1 功能性说明2.2 非功能性说明 三、UX设计3.1 登录界面3.2 学生数据展示3.3 信息插入和更新 三、架构说明3.1 客户端结构如下3.2 数据流程图3.2.1 数据管理3.2.2 管理员登录 四、 设计说明3.1 数据库设计3.2 结构…

基于Python+Flask+MySQL的新冠疫情可视化系统

基于PythonFlaskMySQL的新冠疫情可视化系统 FlaskMySQL 基于PythonFlaskMySQL的新冠疫情可视化系统 项目主要依赖前端:layui,Echart,后端主要是Flask,系统的主要支持登录注册,Ecahrt构建可视化图,可更换主…

Qt 统计图编程

学习目标:Qt 折线图,柱形图和扇形统计图编程 学习基础 Qt QChart 曲线图表操作-CSDN博客 学习内容 Qt中绘制三种常见的图表非常方便, 主要步骤如下: 1. 折线图: - 使用QLineSeries定义折线数据,添加多个坐标点 - 使用QValueAxis创建X轴和Y轴 - 将…

数据结构——查找算法

文章目录 1. 查找算法 2. 顺序查找 2. 二分查找 1. 查找算法 查找算法是用于在数据集中定位特定元素的位置的算法。查找是计算机科学中一项基本操作,几乎在所有应用程序中都需要使用。例如,数据库查询、信息检索、字典查找等都涉及到查找操作。查找算…

【Mutilism数字电路实现32进制5线32译码器】2022-5-7

缘由3-8译码器到74HC138-编程语言-CSDN问答 2片16004非门2个组成8进制和4进制实现。 按138逻辑表把E3也接入置零,同时把E1也接入反向使得切换时138保持高电平输出,就看不到转换时第一个出现短暂低电平,是最完美的解决方案,二级反向…

分布式I/O从站的认知

为什么需要分布式I/O从站? 当PLC与控制机构距离过远时,远距离会带来信号干扰,分布式I/O从站只需要一个网络线缆连接。 ET200分布式I/O从站家族 体积紧凑、功能强大。 ET200SP ET200M ET200S ET200iSP ET200 AL ET200pro ET200 eco PN 通讯协议…

yarn底层原理详解:(第33天)

系列文章目录 一、yarn总体架构 二、yarn核心组件及功能 三、yarn资源分配与调度 四、yarn提交和执行流程 五、yarn调度算法 六、yarn安全性与容错性 文章目录 系列文章目录前言一、总体架构二、核心组件及功能1. ResourceManager(RM)2. NodeManager&am…

达梦数据库dm8安装步骤及迁移

目录 前言: 一、安装部署 1、下载 2、创建用户及安装目录 3、挂载下载的镜像 4、环境配置 5、安装 二、基本使用 1、DM工具使用 2、兼容性配置 2.1 兼容GBK字符集编码 2.2 兼容UTF-8字符集编码 3、创建用户和密码,表空间 4、整理数据库配置 5、启动脚本设置 …

13、Python之函数:简单的参数默认值其实并不简单

目录 引言 日志打印的问题 返回参数默认值的问题 问题产生的原因 关于参数默认值的最佳实践 总结 引言 在前一篇关于Python函数的文章中,我们介绍了函数的基本使用、函数的默认参数、lambda函数的用法,相当于对Python中的函数有了一个入门的介绍。…

动态规划之数字三角形模型+最长上升子序列模型

首先,我们从集合角度重新看待DP: 直接看题:https://www.acwing.com/problem/content/1029/ 就是取纸条的原题,我们令f[i1,j1,i2,j2]表示从(1,1),(1,1)分别走到(i1,j1),(i2,j2)的路径的max i1j1i2j2,于是我们可以把状…

ESP32的芯片有几种

ESP32系列 ESP32芯片截止到24年7月有5个系列: ESP32-C3 ESP32由ESP32-P 系列、ESP32-S 系列、ESP32-C 系列、ESP32-H 系列、ESP32 系列构成。其中ESP32-S分为S3和S2两个小系列;ESP32-C系列分为C6、C5、C3、C2四个小系列,具体如下。 说明&am…

合宙 Air780E模块 AT 指令 MQTT连接

固件说明 重启模块 //tx ATRESET//rx ATRESETOK ^boot.romv!\n RDY^MODE: 17,17E_UTRAN ServiceCGEV: ME PDN ACT 1NITZ: 2024/07/10,08:33:440,0查询模块版本信息 //tx ATCGMR//rx ATCGMRCGMR: "AirM2M_780E_V1161_LTE_AT"OK基本流程 4G模块支持MQTT和MQTT SSl协…

5 MySql

5 MySql 一、简介二、SQL语言2.1 导入外部SQL文件2.2 显示表结构2.3 与创建数据库相关的语句2.4 与表相关的语句2.5 操作表中的数据2.6 7种基本的sql查询 三、SQL的注意点3.1 与集合函数相关3.2 SQL语句的书写与执行过程 四、约束 constraint4.1 作用4.2 功能分类4.3 自增 五、…

读人工智能全传10深度思维

1. 深度思维 1.1. DeepMind 1.1.1. 深度思维 1.1.2. 2014年的员工不足25人 1.1.3. 深度思维公司公开宣称其任务是解决智能问题 1.1.4. 2014年谷歌收购DeepMind,人工智能突然成了新闻热点,以及商业热点 1.1.4.1. 收购报价高达4亿英镑 1.1.4.2. 深度…

差分约束——AcWing 362. 区间

差分约束 定义 差分约束系统是一种在计算机科学和运筹学中用于解决特定类型优化问题的工具。它主要用于处理一类线性不等式组,这些不等式描述了变量之间的相对大小关系,而不是直接的绝对值大小。差分约束系统通常用于路径寻找、调度、资源分配等问题。…

maven私有镜像仓库nexus部署使用

maven私有镜像仓库nexus部署使用 1、Nexus部署 #查找镜像 docker search sonatype/nexus3 #拉取镜像 docker pull sonatype/nexus3 #持久化目录 mkdir -p /data/nexus/data chmod 777 -R /data/nexus/data #启动服务 docker run -d --name nexus3 -p 8081:8081 --restart alw…

javaweb基础知识入门

javaweb 1.基本概念 1.1前言 web开发: web,网页的意思,www.baidu.com 静态web html,css 提供给所有人看的数据始终不会发生变化! 动态web 淘宝...等几乎是所有的网站 提供给所有人看的数据始终会发生变化&#…

mac生成.dmg压缩镜像文件

mac生成.dmg压缩镜像文件 背景准备内容步骤1,找一个文件夹2,制作application替身1,终端方式2,黄金右手方式 3,.app文件放入文件夹4,制作.dmg压缩镜像文件5,安装.dmg 总结 背景 为绕开App Store…