AV1 编码标准中帧内预测技术概述

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 pixelsV_PRED,         // VerticalH_PRED,         // HorizontalD45_PRED,       // Directional 45  degreeD135_PRED,      // Directional 135 degreeD113_PRED,      // Directional 113 degreeD157_PRED,      // Directional 157 degreeD203_PRED,      // Directional 203 degreeD67_PRED,       // Directional 67  degreeSMOOTH_PRED,    // Combination of horizontal and vertical interpolationSMOOTH_V_PRED,  // Vertical interpolationSMOOTH_H_PRED,  // Horizontal interpolationPAETH_PRED,     // Predict from the direction of smallest gradientNEARESTMV,NEARMV,GLOBALMV,NEWMV,// Compound ref compound modesNEAREST_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 pixelsUV_V_PRED,         // VerticalUV_H_PRED,         // HorizontalUV_D45_PRED,       // Directional 45  degreeUV_D135_PRED,      // Directional 135 degreeUV_D113_PRED,      // Directional 113 degreeUV_D157_PRED,      // Directional 157 degreeUV_D203_PRED,      // Directional 203 degreeUV_D67_PRED,       // Directional 67  degreeUV_SMOOTH_PRED,    // Combination of horizontal and vertical interpolationUV_SMOOTH_V_PRED,  // Vertical interpolationUV_SMOOTH_H_PRED,  // Horizontal interpolationUV_PAETH_PRED,     // Predict from the direction of smallest gradientUV_CFL_PRED,       // Chroma-from-LumaUV_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.mzph.cn/pingmian/46507.shtml

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

相关文章

EMR 集群时钟同步问题及解决方案An error occurred (InvalidSignatureException)

目录 1. 问题描述2. 问题原因3. 解决过程4. 时钟同步的重要性5. Linux 系统中的时钟同步方式6. 检查 Linux 系统时钟同步状态7. EMR 集群中的时钟同步配置8. 时钟同步对大数据组件的影响9. 监控和告警策略10. 故障排除和最佳实践11. 自动化时钟同步管理12. 时钟同步与数据一致性…

C++20中的constinit说明符

constinit说明符断言(assert)变量具有静态初始化,即零初始化和常量初始化(zero initialization and constant initialization),否则程序格式不正确(program is ill-formed)。 constinit说明符声明具有静态或线程存储持续时间(thread storage duration)的…

机器人及其相关工科专业课程体系

机器人及其相关工科专业课程体系 前言传统工科专业机械工程自动化/控制工程计算机科学与技术 新兴工科专业智能制造人工智能机器人工程 总结Reference: 前言 机器人工程专业是一个多领域交叉的前沿学科,涉及自然科学、工程技术、社会科学、人文科学等相关学科的理论…

ozon俄罗斯ceo丨ozon平台数据分析选品神器

ozon俄罗斯ceo是玛依妮加文特。‌作为俄罗斯最大的电子商务公司Ozon Holdings的女首席执行官,‌玛依妮加文特被称为俄罗斯的杰夫贝索斯(‌亚马逊CEO)‌。‌她在公司中发挥着重要作用,‌不仅负责公司的日常运营和管理,‌…

修改表格颜色

el-table修改表头、列的背景颜色、字体样式_el-table-column背景颜色-CSDN博客 设置表头背景颜色&#xff0c;字体 <el-table :header-cell-style"rowClass" border :data"tableDataTwo" style"width: 100%"><el-table-column width&q…

2. 白盒测试

白盒测试 1. 白盒测试定义 测试软件的内部编码和基础设施&#xff0c;重点是根据预期和期望的输出检查预定义的输入。它基于应用程序的内部工作方式&#xff0c;并围绕内部结构测试。在这种类型的测试中&#xff0c;编程测试用例需要编程技巧。白盒测试的主要目标是通过软件关…

秒懂设计模式--学习笔记(9)【结构型-装饰器模式】

目录 8、装饰器模式8.1 装饰器模式&#xff08;Decorator&#xff09;8.2 装修&#xff08;举例&#xff09;8.3 化妆&#xff08;示例&#xff09;8.4 化妆品的多样化8.5 装饰器8.6 自由嵌套8.7 装饰器模式的各角色定义8.8 装饰器模式 8、装饰器模式 8.1 装饰器模式&#xff…

红色文化3D虚拟数字展馆搭建意义深远

在房地产与土地市场的浪潮中&#xff0c;无论是新城规划、乡村振兴&#xff0c;还是商圈建设&#xff0c;借助VR全景制作、虚拟现实和web3d开发技术打造的全链条无缝VR看房新体验。不仅极大提升了带看与成交的转化率&#xff0c;更让购房者足不出户&#xff0c;即可享受身临其境…

能把进程和线程讲的这么透彻的,没有20年功夫还真不行【0基础也能看懂】

本篇会加入个人的所谓鱼式疯言 ❤️❤️❤️鱼式疯言:❤️❤️❤️此疯言非彼疯言 而是理解过并总结出来通俗易懂的大白话, 小编会尽可能的在每个概念后插入鱼式疯言,帮助大家理解的. &#x1f92d;&#x1f92d;&#x1f92d;可能说的不是那么严谨.但小编初心是能让更多人…

SQL Server 创建用户并授权

创建用户前需要有一个数据库&#xff0c;创建数据库命令如下&#xff1a; CREATE DATABASE [数据库名称]; CREATE DATABASE database1; 一、创建登录用户 方式1&#xff1a;SQL命令 命令格式&#xff1a;CREATE LOGIN [用户名] WITH PASSWORD 密码; 例如&#xff0c;创建…

FlinkErr:org/apache/hadoop/hive/ql/parse/SemanticException

在flink项目中跑 上面这段代码出现如下这个异常&#xff0c; java.lang.NoClassDefFoundError: org/apache/thrift/TException 加上下面这个依赖后不报错 <dependency> <groupId>org.apache.thrift</groupId> <artifactId>libthrift</artifactId…

Python绘制相关系数热力图

相关系数热力图是一种可视化工具&#xff0c;用于展示变量之间的相关性。它在数据分析和统计中非常有用&#xff0c;尤其是在探索数据集的内在关系时。本文将介绍如何使用Python绘制相关系数热力图。 一、准备——导入库 使用Pandas来处理数据&#xff0c;Matplotlib和Seabor…

redis笔记2

redis是用c语言写的,放不频繁更新的数据&#xff08;用户数据。课程数据&#xff09; Redis 中&#xff0c;"穿透"通常指的是缓存穿透&#xff08;Cache Penetration&#xff09;问题&#xff0c;这是指一种恶意或非法请求直接绕过缓存层&#xff0c;直接访问数据库或…

Qt | 绘制椭圆、弧、弦、扇形、圆角矩形

点击上方"蓝字"关注我们 01、简介 1、需要使用到的 QPainter 类中的函数 2、绘制椭圆的方法有 绘制给定矩形的内接椭圆和根据中心点与椭圆 x 方向和 y 方向的半径绘制,原理见下图 3、绘制弧、弦、扇形的原理: 1)、弧是椭圆上的一段曲线,因此其绘制方法就是首先…

STM32之八:IIC通信协议

目录 1. IIC协议简介 1.1 主从模式 1.2 2根通信线 2. IIC协议时序 2.1 起始条件和终止条件 2.2 发送一个字节 2.3 接收一个字节 2.4 应答信号 1. IIC协议简介 IIC协议是一个半双工、同步、一主多从、多主多从的串行通用数据总线。该通信模式需要2根线&#xff1a;SCL、…

ubuntu22.04安装SecureCRT8.7.3,完成顺利使用

材料准备 scrt-sfx安装包 &#xff0c; securecrt_linux_crack.pl 补丁脚本&#xff0c;和两个依赖库 其中securecrt_linux_crack.pl是找的专门适合 8.7.3版本的&#xff0c;网上很多版本的crack.pl只能打补丁以前的老版本。 而更老版本的SecureCRT对ubuntu22支持更不好&#…

【低照度图像增强系列(8)】URetinex-Net算法详解与代码实现(2022|CVPR)

前言 ☀️ 在低照度场景下进行目标检测任务&#xff0c;常存在图像RGB特征信息少、提取特征困难、目标识别和定位精度低等问题&#xff0c;给检测带来一定的难度。 &#x1f33b;使用图像增强模块对原始图像进行画质提升&#xff0c;恢复各类图像信息&#xff0c;再使用目标检…

hmallox勒索病毒科普:了解其威胁与防御策略

hmallox勒索病毒科普&#xff1a;了解其威胁与防御策略 一、引言 在数字化时代&#xff0c;网络安全威胁日益严峻&#xff0c;勒索病毒作为其中的一类恶意软件&#xff0c;给个人和企业带来了巨大损失。hmallox勒索病毒作为Mallox勒索软件家族的新变种&#xff0c;以其高度的…

求职学习笔记day1

自己一直算是一个内耗拖延的人&#xff0c;内耗着考了研&#xff0c;内耗着拖着不找工作&#xff0c;一直拖到了毕业。研究生没考上&#xff0c;工作没有&#xff0c;也羡慕着别人成功的生活&#xff0c;最后毕业的也不太开心。 一、最近总结 游戏 高考结束以来和大学期间作息…

数据结构之初始二叉树(2)

找往期文章包括但不限于本期文章中不懂的知识点&#xff1a; 个人主页&#xff1a;我要学编程(ಥ_ಥ)-CSDN博客 所属专栏&#xff1a;数据结构&#xff08;Java版&#xff09; 二叉树的前置知识&#xff08;概念、性质、、遍历&#xff09; 通过上篇文章的学习&#xff0c;我们…