AV1技术学习:Intra Prediction

对于帧内预测模式编码块,亮度分量的预测模式和色度分量的预测模式在比特流中分别发出信号。亮度预测模式是基于相邻左侧和上侧两个编码块预测上下文的概率模型进行熵编码的。色度预测模式的熵编码取决于色度预测模式的状态。帧内预测以变换块为单位,并使用先前解码的边界像素作为参考像素。

一、Directional Intraprediction

AV1扩展了VP9中的定向帧内预测模式,以支持更高的粒度。VP9中原有的8个方向模式作为 AV1 的基础角度,并加入补充信号对预测角度进行微调:包括顺时针和逆时针的三个偏移角度(以3度为单位调整)如下图所示。

当定向预测指向亚像素位置时,使用双抽头双线性滤波器对参考像素进行插值。对于小于8 × 8的编码块大小,只允许使用8个基本方向模式。

 二、Nondirectional Smooth Intraprediction

VP9具有两种非定向平滑内预测模式:dc_PRED和TM_PRED。AV1 增加了三种新的平滑预测模式,即 SMOOTH_V_PRED, SMOOTH_H_PRED 和 SMOOTH_PRED,它们使用距离加权线性组合来预测像素。它们使用左下(BL)和右上(TR)参考像素填充最右列和最底行,从而形成插值的闭环边界条件。

以上图为例:

 其中,w(x)表示基于距离边界x的权重,其值是预设的。

AV1使用 PAETH_PRED模式取代了TM_PRED模式,其计算如下:

PAETH_PRED 模式中的非线性允许预测引导参考角度与最高相关性的方向对齐。

三、Recursive Intraprediction

像素间相关被建模为二维一阶马尔可夫场。设X(i, j)表示位置(i, j)的一个像素,其预测由

其中,右边的X' 是相邻可用重建像素,或者是上侧和左侧的预测像素。系数集{α, β, γ}形成基于空间相关性的线性预测器。AV1共定义了五组不同的线性预测因子;每个代表不同的空间相关模式。

为了提高硬件吞吐量,AV1不是递归地预测每个像素,而是从相邻的像素patch中预测一个4×2像素patch,例如下图中蓝色patch x0−x7的p0−p6,其系数{α, β, γ}可以直接通过展开递归,这种扩展避免了4×2 patch 中的像素间依赖,从而允许硬件解码器并行处理预测。

四、 Chroma From Luma Prediction

色度预测像素通过亮度重建像素的线性模型计算得到,如下图所示,将亮度重建像素进行下采样并去除平均像素(剩下AC),并进行传输得到的缩放因子进行缩放,最后将色度块的 DC 添加作为最终的预测像素。

五、Intrablock Copy

 AV1允许帧内运动补偿预测,它使用同一帧已经编码的像素,即块内复制(IntraBC)。使用整像素运动矢量,这可能意味着色度分量可能使用的半像素精度运动位移,在这种情况下,使用双线性滤波器进行亚像素插值。IntraBC模式仅适用于 intracoding 帧,可以通过帧头信息打开和关闭。

典型的硬件解码器将像素重建和后处理滤波阶段流水线化,使得后处理滤波应用于解码的superblocks,同时对同一帧中的后续 superblocks 进行解码。因此,经过后处理滤波后,从像素中检索IntraBC参考块。

相比之下,典型的编码器将处理帧内的所有编码块,然后决定将重构误差最小化的后处理滤波参数。因此,IntraBC模式有可能在进行速率失真优化的后处理过滤器之前访问编码像素。这种差异影响了IntraBC模式的效率。为了避免这个问题,如果一个intra-only coded帧允许使用IntraBC模式,所有的后处理滤波模式被禁用。

在实践中,IntraBC模式最有可能用于包含大量文本内容或类似重复模式的图像,在这种情况下,后处理滤波模式的效果较差。对于像素主要形成自回归(AR)模型的自然图像,编码器在使用IntraBC模式时需要谨慎,因为缺乏后处理滤波模式可能会在粗量化时出现视觉伪影。

六、 Color Palette

在这种模式下,为每个亮度/色度平面构建一个介于2到8个基色(即像素值)之间的调色板,其中每个像素被分配一个颜色索引。基色的数量是编码器决定的,它决定了保真度和紧凑度之间的权衡。基色在比特流中使用相邻块的基色作为参考进行预测编码。使用以先前编码的颜色索引为条件的概率模型对颜色索引逐像素进行编码。亮度和色度通道可以独立决定是否使用调色板模式。此模式特别适用于包含有限像素变化的像素块。

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

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

相关文章

Linux下文件I/O操作

读取 time.txt 文件&#xff0c;写入到time_2.txt 一、函数 1.1、open() 函数 #include <sys/types.h> #include <sys/stat.h> #include <fcntl.h> int open(const char *pathname, int flags); int open(const char *pathname, int flags, mode_t mode);…

RDMA 高性能架构基本原理与设计方案

在进行本文的学习学习之前&#xff0c;我们先对RDMA是什么做一个简单的科普与认识&#xff1a;一文带你了解什么是RDMA-CSDN博客 目录&#xff1a; 目录&#xff1a; 一、RDMA和传统网络方案的比较 1.1 传统网络方案&#xff1a; 1.1.1 缺点一&#xff1a;以太网卡&#xff0…

debian 更新源

前言 实现一键替换在线源 一键更新源 Debian 全球镜像站以下支持现有debian 11 12 echo "Delete the default source" rm -rf /etc/apt/sources.listecho "Build a new source" cat <<EOF>>/etc/apt/sources.list.d/debian.sources Types:…

Tensorflow入门实战 T09进行猫狗识别2

目录 1、前言 2、代码 3、运行结果 4、反思 本文为&#x1f517;365天深度学习训练营 中的学习记录博客&#x1f356; 原作者&#xff1a;K同学啊 | 接辅导、项目定制 1、前言 本周学习内容为&#xff0c;采用自己设置的vgg-16网络进行猫狗识别&#xff0c;使用的模型是YO…

NC65 设置下拉列表框值

NC65 设置下拉列表框值&#xff0c;如人员任职信息的异动事件&#xff1a; // 只有在入职登记时&#xff0c;才为异动事件下拉框过滤掉【离职】和【离职后变动】两个item DefaultConstEnum[] enumItems initTransevent(); BillItem item getBillCardPanel().getHeadItem(Psn…

自动驾驶三维车道线检测系列—LATR: 3D Lane Detection from Monocular Images with Transformer

文章目录 1. 概述2. 背景介绍3. 方法3.1 整体结构3.2 车道感知查询生成器3.3 动态3D地面位置嵌入3.4 预测头和损失 4. 实验评测4.1 数据集和评估指标4.2 实验设置4.3 主要结果 5. 讨论和总结 1. 概述 3D 车道线检测是自动驾驶中的一个基础但具有挑战性的任务。最近的进展主要依…

POST请求查询参数神奇失效的一次神奇bug之旅

出现场景&#xff1a; 某日我看着GET请求的参数逐渐变多&#xff0c;想个改成POST请求得了&#xff0c;这样body传参美观又方便&#xff0c;于是接口从GET变成了POST&#xff0c;然后查询参数就莫名其妙的就全部失效了&#xff0c;接口也没有报错&#xff0c;就参数失效了&…

vscode搭建PyQt + Quick开发环境

VScode搭建PyQt Quick开发环境 目录 环境准备 &#x1f514;安装必要的Python包 &#x1f514;&#x1f50e; PyQt5和PySide2的区别&#x1f4be; 安装PyQt5&#x1f4be; 安装PySide2 配置VScode &#x1f514;&#x1f4bb; 安装扩展 代码示例 &#x1f514;✔ Python调用Qt…

【Django】django自带后台管理系统样式错乱,uwsgi启动css格式消失的问题

正常情况&#xff1a; ERROR&#xff1a;&#xff08;css、js文件加载失败&#xff09; 问题&#xff1a;CSS加载的样式没有了&#xff0c;原因&#xff1a;使用了django自带的admin&#xff0c;在使用 python manage.py runserver启动 的时候&#xff0c;可以加载到admin的文…

如何学习Spark:糙快猛的大数据之旅

作为一名大数据开发者,我深知学习Spark的重要性。今天,我想和大家分享一下我的Spark学习心得,希望能够帮助到正在学习或准备学习Spark的朋友们。 目录 Spark是什么?学习Spark的"糙快猛"之道1. 不要追求完美,在实践中学习2. 利用大模型作为24小时助教3. 根据自己的节…

golang实现的ab测试http代理工具

压测工具ab不能统计http请求的错误情况&#xff0c;包括http状态码错误和响应正文的错误关键字。 所以加层代理用于统计http错误情况&#xff0c;重在统计错误情况&#xff0c;而不是代理的性能&#xff0c;主要用于功能接口的测试&#xff0c;比如测试一下请求多少次接口会返…

无人机的发展前景大吗?

随着科技的飞速发展&#xff0c;无人机&#xff08;Unmanned Aerial Vehicle, UAV&#xff09;作为一种新兴的航空器&#xff0c;已逐渐从军事领域渗透到民用领域。无人机的应用广泛&#xff0c;包括但不限于航拍、物流配送、环境监测、农业植保、应急救援等多个领域。本文旨在…

pip如何获取项目有关的所有whl文件并批量进行安装

获取项目所需 whl 导出项目的依赖列表&#xff1a; 首先&#xff0c;需要导出项目所需的依赖列表。可以使用 pip 的 freeze 命令来实现这一点。 pip freeze > requirements.txt这会将当前环境中所有已安装的包及其版本信息导出到 requirements.txt 文件中。 下载 .whl 文件…

Chromium CI/CD 之Jenkins实用指南2024-在Windows节点上创建任务(九)

1. 引言 在现代软件开发流程中&#xff0c;持续集成&#xff08;CI&#xff09;和持续交付&#xff08;CD&#xff09;已成为确保代码质量和加速发布周期的关键实践。Jenkins作为一款广泛应用的开源自动化服务器&#xff0c;通过其强大的插件生态系统和灵活的配置选项&#xf…

十七、【机器学习】【非监督学习】- K-均值 (K-Means)

系列文章目录 第一章 【机器学习】初识机器学习 第二章 【机器学习】【监督学习】- 逻辑回归算法 (Logistic Regression) 第三章 【机器学习】【监督学习】- 支持向量机 (SVM) 第四章【机器学习】【监督学习】- K-近邻算法 (K-NN) 第五章【机器学习】【监督学习】- 决策树…

opencv 使用XML和YAML格式来输入输出文件

源码 链接 link #include <opencv2/core.hpp> #include <iostream> #include <string>using namespace cv; using namespace std;// 帮助信息函数 static void help(char** av) {cout << endl<< av[0] << " shows the usage of the…

Java 新手学习线路,Java 学习路线是怎样的?

学习Java是一条漫长但有趣的道路。作为一门面向对象编程语言&#xff0c;Java不仅在企业级开发中占据重要地位&#xff0c;还在移动开发、大数据、人工智能等领域有着广泛应用。下面&#xff0c;我将从基础到高级&#xff0c;详细介绍Java学习线路图&#xff0c;帮助新手一步步…

静态代理与动态代理的区别与选择

在当今软件开发领域&#xff0c;代理模式作为一种重要的设计模式&#xff0c;广泛应用于增强现有对象功能、控制访问权限以及实现远程调用等场景。本文旨在深入探讨静态代理与动态代理之间的核心区别&#xff0c;帮助开发者理解两者在实现机制、灵活性、性能表现及适用场景上的…

Filebeat k8s 部署(Deployment)采集 PVC 日志发送至 Kafka——日志处理(二)

文章目录 前言Filebeat Configmap 配置Filebeat Deployment验证总结 前言 在上篇文章中总结了 Django 日志控制台输出、文件写入按天拆分文件&#xff0c;自定义 Filter 增加 trace_id 以及过滤——日志处理&#xff08;一)&#xff0c;将日志以 JSON 格式写入日志文件。我们的…

无人机侦察:二维机扫雷达探测设备技术详解

二维机扫雷达探测设备采用机械扫描方式&#xff0c;通过天线在水平方向和垂直方向上的转动&#xff0c;实现对目标空域的全方位扫描。雷达发射机发射电磁波信号&#xff0c;遇到目标后产生反射&#xff0c;反射信号被雷达接收机接收并处理&#xff0c;进而得到目标的位置、速度…