H266/VVC帧内预测编码技术概述

预测编码技术

预测编码(Prediction Coding)是指利用已编码的一个或多个样本值,根据某种模型或方法,对当前的样本值进行预测,并对样本真实值和预测值之间的差值进行编码。

视频中的每个像素看成一个信源符号,它通常与空域上或时域上邻近的像素具有较强的相关性,因此视频是一种有记忆信源
预测编码技术通过预测模型消除像素间的相关性,得到的差值信号可以认为没有相关性,或者相关性很小,因此可以作为无记忆信源进行编码。

视频预测编码的主要思想是通过预测来消除像素间的相关性;主要分为帧内预测帧间预测
帧内预测:利用当前图像内已编码像素生成预测值。
帧间预测:利用当前图像之前已编码图像的重建像素生成预测值。

H266/VVC帧内预测编码过程

参考像素获取

参考像素值获取模块对当前CU相邻参考像素是否可用进行判断。H266沿用大范围边界像素作为当前CU的参考,当参考像素不可用或不存在时使用默认值填充的方式得等到参考像素值。
H266引用多参考行内预测(Multiple Reference Line Intra Prediction, MRLP)技术,领域像素可选范围扩展到当前CU上侧三行和左侧三列。
得到邻域像素后,进行平滑滤波或差值滤波,引入模式依赖的帧内平滑(Mode Dependent Smoothing,MDIS)技术,根据预测模式和CU尺寸进行不同的滤波处理。
在这里插入图片描述

参考像素范围

单参考行像素:
当参考像素不存在或者不可用时(比如图像边界、Slice边界、Tile边界或尚未编码块),H266使用最邻近的像素进行填充,比如下图A的参考像素不存在,则A所有像素都用B的最下方的像素进行填充。
在这里插入图片描述
如果所有区域参考像素都不可用,则用固定值填充;公式Mid=1<<(bitdepth-1);如果像素比特深度是8,则固定值是128,如果是10,则固定值是512;比如第一个CU的参考像素就是用固定值填充。

多参考行像素:
MRLP技术允许使用邻近的3行(列)参考像素,选择其中的1行(列)生成预测值,对于不存在或者不可用的像素,采用于单行相同的填充方式。
为了平衡性能,仅允许MPM列表中的模式使用MRLP技术。
在这里插入图片描述

参考像素滤波

MDIS 包含3种滤波器。满足条件下的整数平滑滤波非整像素下的三次插值滤波器非整像素的高斯插值滤波器
整数平滑滤波:
是否对参考像素进行滤波由当前CU的大小、预测模式等条件,需要同时满足如下表格中的五个条件才能使用平滑滤波。

序号条件
1参考行限制:预测过程使用单参考行像素
2大小限制:当前CU包含像素的个数大于32
3仅对亮度分量使用
4不使用ISP模式
5模式限制:当前CU选择的模式属于Planar模式或者对角模式

滤波方法为3抽头滤波器,抽头系数为[0.25, 0.5, 0.25]

三次插值滤波器:
在非整像素可以保留更多的细节纹理,满如条件中(使用了MRLP技术或ISP技术、使用了Planar模式或对角模式Dist~min~ <=Thr[n])其中一个即可使用。

高斯插值滤波器:
滤波效果更加平滑,应用更加广泛,不满足三次插值滤波器时使用。

预测值计算

根据参考像素值,采用特定的预测模式计算待编码CU每个像素的预测值。H266将角度预测模式扩展到了65种,加上DC模式和Planar模式一共67种模式称为传统预测模式。
针对宽高不等的方形CU,宽角度帧内预测(Wide Angle Intra Prediction,WAIP)技术表达了更多的预测方向,模式编码扩展[-14, 80]
H266还引入了基于矩阵的帧内预测(Matrix-based Intra Prediction,MIP)技术,借助神经网络离线训练得到的多个权重矩阵生成预测值,对传统预测模式有效补充。
在这里插入图片描述
Planar模式:
编号0,适用于像素值缓慢变化的区域,其预测像素可以看成是水平、垂直两个方向预测值的平均值。

DC模式:
编号1,适用于大面积平坦区域,DC模式需要计算出当前CU左侧及上方参考像素的平均值。

传统角度模式:
位于-135°~45°内,水平类模式编号为2 ~ 33,垂直类编号34 ~ 66;每种角度预测模式都相当于在水平或垂直方向做了角度偏移,如下表。
在这里插入图片描述
宽角度预测模式:
在H266中,二叉树划分和三叉树划分都会导致非方形CU的出现,传统的角度模式范围可能会限制非方形CU对参考像素的选择。相应的角度偏移如下表。
针对非方形CU,增加宽角度预测模式后,仍使用65重候选角度预测模式,即增加的宽角度预测模式替换了部分传统角度预测模式;一般会根据宽高比来替换不同的传统角度编号。
在这里插入图片描述
基于矩阵的预测模式:
传统预测模式及宽角度预测模式都是以像素映射或线性渐变方式计算预测值,无法对不规则纹理做出有效的预测。H266标准使用了MIP技术,采用离线训练神经网络的方法,得到多个固定的权重矩阵,进而利用权重矩阵计算预测值。
参考像素经过处理后得到输入向量,输入向量与权重矩阵相乘得到输出向量,经过进一步排列和上采样得到待编码CU的预测值,如下图流程。
在这里插入图片描述

预测值修正

基于像素距离对部分帧内预测模式的预测值进行修正,H266/VVC使用了位置相关的帧内预测组合(Position Dependent Intra Prediction Combination,PDPC)技术,借助不同位置的参考像素值修正预测值。

该技术将参考像素与预测像素之间的距离作为权重计算修正值,再与预测值加权计算的得到最终的预测值,该过程称为预测值修正

PDPC技术仅对部分预测模式进行修正,具体包括Planar模式DC模式编号[2, 18]编号[50, 66]内的角度预测模式。

帧内子区域划分(Intra Sub-Partitions, ISP)技术

ISP技术旨在充分利用与待预测像素距离相近的参考像素进行预测。根据编码块得到大小,将亮度帧内预测块垂直划分或水平划分为若干个子区域,并按照从左到右、从上到下的额顺序依次进行编码及重建。
ISP技术使得帧内预测编码可以基于CU子区域进行,前一个子区域编码之后的重建像素为下一个子区域提供参考,各子区域共用同一种帧内预测模式。
在这里插入图片描述

分量间线性模型预测(Cross-Component Linear Model Prediction, CCLM)技术

在H266中,CU色度分量进行预测编码前,亮度分量已经完成编码获得亮度重建值,因此亮度分量可以作为色度分量预测的参考信息。CCLM技术通过参考像素的亮度重建值和色度重建值建立分量间线性关系,根据待预测像素的亮度重建值计算色度预测值,过程如下图。
在这里插入图片描述

亮度分量的最可能模式(Most Probable Mode,MPM)技术

MPM技术充分利用相邻块预测模式之间的相关性,来进行亮度预测模式的编码。

色度分量亮度派生模式(Derived Mode,DM)技术

针对色度预测模式编码,H266使用了DM模式,即直接使用对应位置的亮度预测查模式信息。

H266/VVC帧内预测编码工具使用限制条件

帧内编码工具使用限制说明
MRLP仅在MPM模式中使用、禁用PDPC技术、ISP技术不应用
MDIS仅应用于亮度分量、仅部分模式应用、MIP技术不应用、CCLM技术不应用
WAIPCU宽高比不为1时可以应用
MIP色度分量受限使用、禁用MDIS技术、禁用MRLP技术、禁用PDPC技术、ISP技术不应用
PDPC仅部分模式应用、ISP技术受限应用、MRLP技术不应用、MIP模式不应用
ISP仅应用于亮度分量、禁用MRLP技术、禁用MIP技术、PDPC技术受限应用
CCLM仅应用于色度分量、禁用MDIS技术、禁用MRLP技术、禁用PDPC技术
MPM仅应用于亮度编码过程
DM仅应用于色度编码过程

参考

JVET输出文档: https://www.itu.int/wftp3/av-arch/jvet-site/
书籍: 新一代通用视频编码H266/VVC:原理、标准与实现[万帅 霍俊彦 马彦卓 杨付正/著]

备注

本系列博客主要是对《新一代通用视频编码H266/VVC:原理、标准与实现》的学习笔记。

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

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

相关文章

Java并发(二十一)----wait notify介绍

1、小故事 - 为什么需要 wait 由于条件不满足&#xff08;没烟干不了活啊&#xff0c;等小M把烟送过来&#xff09;&#xff0c;小南不能继续进行计算 但小南如果一直占用着锁&#xff0c;其它人就得一直阻塞&#xff0c;效率太低 于是老王单开了一间休息室&#xff08;调…

时间Date

你有没有思考过时间问题&#xff1a; 前端为什么可以直接看见时间格式的数据 后端怎么接受的数据&#xff0c;怎么处理的 一般来说&#xff1a;前端传输来数据都是时间格式的字符串&#xff0c;那么后端需要能够解析时间格式的字符串&#xff0c;归功于JSONFormat ,可以解析…

node封装一个图片拼接插件

说在前面 平时我们拼接图片的时候一般都要通过ps或者其他图片处理工具来进行处理合成&#xff0c;这次有个需求就需要进行图片拼接&#xff0c;而且我希望是可以直接使用代码进行拼接&#xff0c;于是就有了这么一个工具包。 插件效果 通过该插件&#xff0c;我们可以将图片进…

SUS-Chat-34B领先一步:高效双语AI模型的突破

引言 在人工智能领域&#xff0c;模型的规模和效能一直是衡量其先进性的关键指标。南方科技大学联合IDEA研究院CCNL团队最新开源的SUS-Chat-34B模型&#xff0c;以其340亿参数的庞大规模和卓越的双语处理能力&#xff0c;在AI界引起了广泛关注。 模型概述 SUS-Chat-34B是基于…

07 Vue3框架简介

文章目录 一、Vue3简介1. 简介2. 相关网站3. 前端技术对比4. JS前端框架5. Vue核心内容6. 使用方式 二、基础概念1. 创建一个应用2. 变量双向绑定&#xff08;v-model&#xff09;3. 条件控制&#xff08;v-if&#xff09;4. 数组遍历&#xff08;v-for&#xff09;5. 绑定事件…

Vue核心语法、脚手架与组件化开发、VueRouterVuex、综合案例(待办事项工具)

学习源码可以看我的个人前端学习笔记 (github.com):qdxzw/frontlearningNotes 觉得有帮助的同学&#xff0c;可以点心心支持一下哈 一、Vue核心语法 <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><meta name…

leetcode2两数加和问题(链表)

题目思路&#xff1a; ①创建一个int类型的局部变量&#xff0c;用来存储两个结点的Val值。 ②判断该Val值与10求余(mod)后是否大于0,如果大于0, 则需要在下一个结点进位。 ③最关键的步骤&#xff1a;实现l1&#xff0c;l2结点数值相加后构建新的存储求和后的结点&#xff0…

嵌入式——下载仿真调试

仿真器 ARM仿真器是用于模拟ARM架构微处理器或微控制器的工具,以便开发和测试嵌入式系统软件。这些仿真器允许开发人员在计算机上模拟ARM处理器的执行,而无需实际的硬件设备。ARM仿真器通常包含以下特点: 指令级仿真: 提供对ARM指令级别的仿真,使开发人员能够逐步执行和调…

C++11特性:线程同步之条件变量

条件变量是C11提供的另外一种用于等待的同步机制&#xff0c;它能阻塞一个或多个线程&#xff0c;直到收到另外一个线程发出的通知或者超时时&#xff0c;才会唤醒当前阻塞的线程。条件变量需要和互斥量配合起来使用&#xff0c;C11提供了两种条件变量&#xff1a; 1. conditi…

基于Python的新能源汽车销量分析与预测系统

温馨提示&#xff1a;文末有 CSDN 平台官方提供的学长 QQ 名片 :) 1. 项目简介 基于Python的新能源汽车销量分析与预测系统是一个使用Python编程语言和Flask框架开发的系统。它可以帮助用户分析和预测新能源汽车的销量情况。该系统使用了关系数据库进行数据存储&#xff0c;并…

AcWing算法进阶课-1.17.1费用流

算法进阶课整理 CSDN个人主页&#xff1a;更好的阅读体验 原题链接 题目描述 给定一个包含 n n n 个点 m m m 条边的有向图&#xff0c;并给定每条边的容量和费用&#xff0c;边的容量非负。 图中可能存在重边和自环&#xff0c;保证费用不会存在负环。 求从 S S S 到 …

Shell三剑客:awk(awk编辑编程)二

一、IF 语句 IF 条件语句语法格式 #方式一&#xff1a; if (condition)action #方式二&#xff1a;使用花括号语法格式 if (condition) {action1;action2; ... } {if(表达式)&#xff5b;语句1;语句2;...&#xff5d;} IF 语句实例 #判断数字是奇数还是偶数 [rootlocalhost ~…

UG图层的使用

在绘图过程中&#xff0c;我们可能会有点、线、面、基准等&#xff0c;要管理好这些图素&#xff0c;就要运用到图层 图层的作用 1、规范化 不同图素放置在规定的图层达到统一标准 2、方便绘图与审阅 可单独控制每个图层的显示与隐藏 3、其他模块需要 工程图、装配、加…

Postman接口测试(超详细整理)

常用的接口测试工具主要有以下几种 Postman&#xff1a;简单方便的接口调试工具&#xff0c;便于分享和协作。具有接口调试&#xff0c;接口集管理&#xff0c;环境配置&#xff0c;参数化&#xff0c;断言&#xff0c;批量执行&#xff0c;录制接口&#xff0c;Mock Server, …

[SWPUCTF 2021 新生赛]jicao

首先打开环境 代码审计&#xff0c;他这儿需要进行GET传参和POST传参&#xff0c;需要进行POST请求 变量idwllmNB&#xff0c;进行GET请求变量json里需要含参数x以及jsonwllm 构造 得到flag

在linux操作系统Centos上安装服务器相关软件

如果您的服务器没有图形界面(GUI),您可以通过命令行(终端)来安装和配置Tomcat、JDK和MySQL等软件。以下是在没有图形界面GHome的 Linux 系统上安装这些软件的基本步骤: 对于CentOS Stream 9,您可以按照以下步骤在命令行上安装Tomcat、JDK 和 MySQL 数据库: 1. 安装JD…

Nginx优化(重点)与防盗链(新版)

Nginx优化(重点)与防盗链 Nginx优化(重点)与防盗链一、隐藏Nginx版本号1、修改配置文件2、修改源代码 二、修改Nginx用户与组1、编译安装时指定用户与组2、修改配置文件指定用户与组 三、配置Nginx网页的缓存时间四、实现Nginx的日志切割1、data的用法2、编写脚本进行日志切割的…

异常和智能指针

智能指针的认识 智能指针是一种C语言中用于管理动态内存的工具&#xff0c;它们可以自动管理内存的分配和释放&#xff0c;从而避免内存泄漏和悬空指针等问题。智能指针可以跟踪指向的对象的引用次数&#xff0c;并在需要时自动释放被引用的内存&#xff0c;这极大地提高了内存…

基于SSM+Vue的教材信息管理系统(Java毕业设计)

点击咨询源码 大家好&#xff0c;我是DeBug&#xff0c;很高兴你能来阅读&#xff01;作为一名热爱编程的程序员&#xff0c;我希望通过这些教学笔记与大家分享我的编程经验和知识。在这里&#xff0c;我将会结合实际项目经验&#xff0c;分享编程技巧、最佳实践以及解决问题的…