AV1 编码标准熵编码技术概述

AV1熵编码

  • AV1编码技术是一种开源的视频编解码标准,由开放媒体联盟(AOMedia)开发,旨在提供高效的视频压缩,同时避免复杂的专利授权问题。在熵编码方面,AV1采用了一种多符号上下文自适应算术编码技术,这与 H.265/H.266 中使用的二进制算术编码(CABAC)有所不同。

  • AV1 的熵编码技术通过两个主要处理过程来压缩输入的符号序列:累积分布函数(CDF)和布尔操作。CDF 允许使用包含 2 到 16 个符号的字母表,并且符号的概率是自适应的,而布尔操作则使用固定的两个符号字母表和不变的符号概率。这种多符号算术编码技术可以更有效地利用待编码符号序列的高层次结构相似性,从而提高压缩效率。

  • AV1 的熵编码器在编码过程中,输入由 M 种符号组成的序列及其概率上下文。编码器的输出是一个比特流,其中语法元素与包含 M 个符号的字母表相关联,M 的值可以在 2 到 16 之间变化。在编码或解码每个语法元素后,15 位的 CDF 概率值会被更新,以反映编码过程中的概率变化。

  • AV1 的熵编码技术还包括预计算、范围变量更新、低位更新和产生比特流的四个阶段。这种设计允许 AV1
    在保持视频质量的同时,实现更高的压缩比率,从而在视频传输和存储方面具有优势。

  • 此外,AV1 编码技术还包括其他高级特性,如运动估计、空间预测、变换、环路滤波等,这些技术共同作用,实现了高效的视频压缩。AV1 的应用领域非常广泛,包括在线视频传输、流媒体服务、视频监控和虚拟现实等。

  • 随着技术的发展,AV1 编码技术预计将进一步优化其核心算法,并与其他技术如人工智能和深度学习相结合,以适应更复杂和多样化的应用场景。随着新一代通信技术如 5G的普及,AV1 编码技术在超高清视频传输和实时通信等领域的应用前景将更加广阔。

多符号算术编码引擎

  • 在 AV1 编码技术中,M-ary 算术编码引擎用于熵编码语法元素。每个语法元素与一个包含 M 个元素的字母表相关联,其中 M 的值可以是 2 到 16 之间的任何整数。编码的输入是一个 M-ary 符号,上下文由一组 M
    个概率组成。编码或解析每个语法元素后,这些概率会更新,并且概率以 15 位累积分布函数(CDF)的形式表示。

  • CDF 是一个 M 个 15 位整数的数组,定义如下: C = [c0, c1, … , cM-2, 215] 其中 ( cn / 32768 ) 是符号小于或等于 n 的概率。

  • 概率更新使用以下方程进行:
    在这里插入图片描述
    其中 α 是基于符号解码次数的概率更新率(最多 32 次), m 是 CDF 中的元素索引。α 的自适应允许在编码/解析语法元素的开始阶段进行更快的概率更新。

  • M-ary 算术编码过程遵循传统的算术编码引擎设计;然而,只有最高的 9 位输入到算术编码器/解码器。这意味着实际用于编码过程的概率值是 CDF 数组中每个元素的高 9 位,这有助于减少计算复杂度,同时保持编码的精度。

  • 这种设计允许 AV1 编码器在编码过程中动态调整概率模型,以适应输入数据的统计特性。随着编码过程的进行,随着对符号出现频率的更好理解,概率模型会逐渐细化,从而提高编码效率。通过这种方式,AV1编码器能够实现更高的压缩比,同时保持或提高视频质量。

系数编码

  • 在 AV1 编码技术中,变换块(transform block)的系数编码开始于一个 all_zero 标志的编码,该标志指示变换块是否仅包含零残差。如果 all_zero 标志被编码为 0,则表示变换块中存在非零系数,随后需要编码主变换核类型(primary transform kernel type)和块结束(end-of-block, EOB)位置。

  • 系数的编码流程如下:

    1. all_zero 标志:首先编码all_zero标志,如果变换块内所有系数都是零,则此标志为 1;否则为 0。

    2. 主变换核类型和 EOB 位置:如果 all_zero 标志为 0,则需要编码主变换核类型和 EOB 位置。EOB 位置指示非零系数的最后一个位置。

    3. 系数值编码:系数值通过多个级别的映射(level maps)以及符号值进行编码。存在三个级别的平面:低级别(lower-level)、中级别(middle-level)和高级别(higher-level),分别对应不同的系数幅度范围(0–2, 3–14, 15 及以上)。

    4. 三个级别平面的编码

      • 低级别和中级别平面:在编码 EOB 值之后,低级别和中级别平面以反向扫描顺序(zig-zag scan)编码在一起。
      • 符号平面和高级别平面:然后,符号平面和高级别平面以正向扫描顺序编码在一起。
    5. 剩余值的熵编码:高级别平面编码后,使用指数-哥伦布(Exp-Golomb)编码对剩余值(系数幅度减去 14)进行熵编码。

    6. 上下文模型的应用

      • 低级别平面:上下文模型取决于主变换方向(双向、水平、垂直)、变换块大小,以及变换域中最多五个邻近变换系数。
      • 中级别平面:使用类似的上下文模型,但上下文邻近系数的数量从 5 减少到 2。
      • 高级别平面:不使用上下文建模,直接使用 Exp-Golomb 编码进行编码。
    7. 符号平面的编码:除了直流(DC)符号使用邻近变换单元的 DC 符号进行编码外,所有其他系数的符号值直接编码,不使用上下文建模。

  • 这种编码方式允许 AV1 编码器有效地表示变换系数,通过利用系数的统计特性和上下文信息来提高编码效率。通过区分不同级别的系数幅度并应用不同的上下文模型和编码策略,AV1 能够在保持视频质量的同时实现更高的压缩比。

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

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

相关文章

在 PostgreSQL 里如何实现数据的实时监控和性能瓶颈的快速定位?

🍅关注博主🎗️ 带你畅游技术世界,不错过每一次成长机会!📚领书:PostgreSQL 入门到精通.pdf 文章目录 在 PostgreSQL 里如何实现数据的实时监控和性能瓶颈的快速定位一、数据实时监控的重要性二、PostgreSQ…

数据库:基本操作

SQL struct query language 关系型数据库 非关系 芒果db ddl data defination language 建表 dml 新增 修改 删除一行 data modifty dql 查询 data query language 查询 select 数据库 sun solaris gnu 1、分类: 大型 中型 …

MySQL学习记录 —— 이십 常用工具包

文章目录 1、总览2、mysqlcheck - 表维护程序1、作用2、注意事项3、语法4、命令选项下面每块都大致有这四个部分 3、Mysqldump - 数据库备份程序4、mysqladmin - MySQL 服务器管理程序5、mysqlshow - 显示数据库、表和列信息6、mysqldumpslow - 总结慢查询日志文件7、mysqlbinl…

内存ECC基础纠错算法有哪些?

3.1 基础纠错算法 3.1.1 SECDED纠错算法 SECDED(Single Error Correction Double Error Detection)是一种经典的ECC方案,能够纠正单比特错误并检测出双比特错误。在图4(a)中,展示了SECDED的编码过程。在这个过程中,使…

STM32之八:IIC通信协议

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

mysql(5.5)启动服务和环境配置

正常启动 参考:Javaweb基础之mysql回溯笔记(一) 总的来说就是在mysql的安装目录下,找到bin下面的msyqld.exe,双击即启动了mysql服务; 启动方式二 也可以直接找到windows的服务项进行启动,操作如下: 打开…

opencascade AIS_InteractiveContext源码学习8 trihedron display attributes

AIS_InteractiveContext 前言 交互上下文(Interactive Context)允许您在一个或多个视图器中管理交互对象的图形行为和选择。类方法使这一操作非常透明。需要记住的是,对于已经被交互上下文识别的交互对象,必须使用上下文方法进行…

MySQL集群、Redis集群、RabbitMQ集群

一、MySQL集群 1、集群原理 MySQL-MMM 是 Master-Master Replication Manager for MySQL(mysql 主主复制管理器)的简称。脚本)。MMM 基于 MySQL Replication 做的扩展架构,主要用来监控 mysql 主主复制并做失败转移。其原理是将真…

linux高级编程(网络)(www,http,URL)

数据的封包和拆包 封包: 应用层数据(例如HTTP请求)被传递给传输层。传输层(TCP)在数据前添加TCP头部(包含端口号、序列号等)。网络层(IP)在TCP段前添加IP头部&#xff…

解读InnoDB数据库索引页与数据行的紧密关联

目录 一、快速走进索引页结构 (一)整体展示说明 (二)内容说明 File Header(文件头部) Page Header(页面头部) Infimum Supremum(最小记录和最大记录) …

多模态大模型 - MM1

1. 摘要 本文主要通过分析模型结构和数据选择讨论如何构建一个好的多模态大模型(MLLM),并同时提出了MM1模型,包括30B dense版本和64B的MoE版本。 具体贡献: 模型层面:影响效果的重要性排序为:…

昇思25天学习打卡营第10天|NLP-RNN实现情感分类

打卡 目录 打卡 任务说明 流程 数据准备与加载 加载预训练词向量(分词) 数据集预处理 模型构建 Embedding RNN(循环神经网络) LSTM 全连接层 损失函数与优化器 训练逻辑 评估指标和逻辑 模型训练与保存 模型加载与测试 自定义输入测试 …

周报(1)<仅供自己学习>

文章目录 一.pytorch学习1.配置GPU2.数据读取问题1(已解决问题2(已解决 3.卷积的学习 二.NeRF学习1.介绍部分问题1(已解决 2.神经辐射场表示问题2(已解决问题3(已解决问题4(已解决问题5:什么是视…

1-5岁幼儿胼胝体的表面形态测量

摘要 胼胝体(CC)是大脑中的一个大型白质纤维束,它参与各种认知、感觉和运动过程。尽管CC与多种发育和精神疾病有关,但关于这一结构的正常发育(特别是在幼儿阶段)还有很多待解开的谜团。虽然早期文献中报道了性别二态性,但这些研究的观察结果…

Armv8-R内存模型详解

目录 1.内存模型的必要性 2.Armv8-R内存模型分类 2.1 Normal memory 2.2 Device Memory 2.2.1 Gathering 2.2.2 Reordering 2.2.3 Early Write Acknowledgement 3.小结 大家好,今天是悲伤的肌肉。 在调研区域控制器芯片时,发现了S32Z、Stellar …

从Centos7升级到Rocky linux 9后,网卡连接显示‘Wired connection 1‘问题解决方法

问题描述 从Centos7升级到Rocky9后, 发现网卡eth0的IP不正确。通过nmcli查看网卡连接,找不到name为eth0的连接,只显示’Wired connection 1’ 查看/etc/NetworkManager/system-connections/,发现找不到网卡配置文件。 原因分析 centos7使…

git取消合并:--hard 或 --merge

第一步:查了git日志 git reflog如下,运行上述命令后,可以看见所有的提交哈希(id) 第二步 查看到上述所有的提交记录后,有如下方法去回退 方法1:--hard 确定上一次提交的哈希值 git reset…

RK3568笔记三十八:DS18B20驱动开发测试

若该文为原创文章,转载请注明原文出处。 DS18B20驱动参考的是讯为电子的单总线驱动第十四期 | 单总线_北京迅为的博客-CSDN博客 博客很详细,具体不描述。 只是记录测试下DS18B20读取温度。 一、介绍 流程基本和按键驱动差不多,主要功能是…

内存RAS技术介绍:内存故障预测

故障预测是内存可靠性、可用性和服务性(RAS)领域中的一个重要方面,旨在提前识别潜在的不可纠正错误(UE),以防止系统崩溃或数据丢失。 4.1 错误日志记录与预测基础 错误一般通过Linux内核模块Mcelog记录到…

Matlab 判断直线上一点

文章目录 一、简介二、实现代码三、实现效果参考资料一、简介 判断一个点是否位于一直线上有很多方法,这里使用一种很有趣的坐标:Plucker线坐标,它的定义如下所示: 这个坐标有个很有趣的性质,我们可以使用Plucker坐标矢量构建一个Plucker矩阵: 则它与位于对应线上的齐次点…