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]

预测值计算

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

预测值修正

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

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

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

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

色度分量亮度派生模式(Derived Mode,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:原理、标准与实现》的学习笔记。

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

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

相关文章

python3 数据分析项目案例,用python做数据分析案例

本篇文章给大家谈谈python3 数据分析项目案例&#xff0c;以及用python做数据分析案例&#xff0c;希望对各位有所帮助&#xff0c;不要忘了收藏本站喔。 目录 一丶可视化绘图案例 1.曲线图 2.柱形图 3.点线图 4.3D散点图 5. 绘制漏斗图 6. 绘制词云图 二丶包/模块使用示例 (1)…

高通切换到Emergency Download:adb reboot edl

刷机 开机下adb reboot edl 切到QDloader 9008 点下载。 The command “adb reboot edl” is used to reboot an Android device into EDL (Emergency Download) mode using the Android Debug Bridge (ADB) tool. EDL mode is primarily used for low-level firmware flashing…

数据结构---算法的空间复杂度

文章目录 空间复杂度概念实例 空间复杂度 概念 空间复杂度也是一个数学表达式&#xff0c;是对一个算法在运行过程中临时占用存储空间大小的量度 。 空间复杂度不是程序占用了多少bytes的空间&#xff0c;因为这个也没太大意义&#xff0c;所以空间复杂度算的是变量的个数。…

LLM之RAG实战(八)| 使用Neo4j和LlamaIndex实现多模态RAG

人工智能和大型语言模型领域正在迅速发展。一年前&#xff0c;没有人使用LLM来提高生产力。时至今日&#xff0c;很难想象我们大多数人或多或少都在使用LLM提供服务&#xff0c;从个人助手到文生图场景。由于大量的研究和兴趣&#xff0c;LLM每天都在变得越来越好、越来越聪明。…

[node]Node.js 模块系统

[node]模块系统 Node.js中的模块系统模块的使用模块的导入模块的导出导出多个值导出默认值导出可传参的函数 文件查找策略从文件模块缓存中加载从原生模块加载从文件加载 Node.js中的模块系统 为了让Node.js的文件可以相互调用&#xff0c;Node.js提供了一个简单的模块系统。 …

【第七在线】数据分析与人工智能在商品计划中的应用

随着技术的不断进步&#xff0c;数据分析和人工智能&#xff08;AI&#xff09;已经成为了现代商品计划的关键组成部分。在服装行业&#xff0c;这两项技术正在帮助企业更好地理解市场需求、优化库存管理、提高生产效率和提供更好的客户体验。本文将深入探讨数据分析和人工智能…

华为---登录USG6000V防火墙---console、web、telnet、ssh方式登录

目录 一、环境搭建 二、第一次登录USG6000V防火墙&#xff0c;即通过console方式登录 三、用户配置 四、web登录USG6000V防火墙 1. 用web创建的用户通过web方式登录USG6000V防火墙 2. 命令行创建的用户通过web方式登录USG6000V防火墙 五、ssh方式登录USG6000V防火墙 1. 用…

从CTF中学习自增构造webshell

FLAG&#xff1a;那天晚上和你聊了很久&#xff0c;手机烫的和心脏一样 专研方向: 代码审计&#xff0c;Crypto 每日emo&#xff1a;天一亮&#xff0c;时间就不属于我了 从CTF中学习自增构造webshell 前言1.异或2.自增3.取反青少年CTF之ezbypass 前言 今天写了几道代码审计的…

Android MVI架构之UI状态的持有与保存

Android MVI架构之UI状态的持有与保存 我们将介绍状态持有者和其他与 UI 层相关的主题&#xff0c;例如在 Android 上提升状态和保存 UI 状态的位置。 状态持有者 状态持有者通过处理逻辑和/或公开 UI 状态来简化 UI。在本节中&#xff0c;我们将看到如何实现状态持有者以及…

Deepin更换仿Mac主题

上一篇博客说了要写一篇deepin系统的美化教程 先看效果图&#xff1a; 准备工作&#xff1a; 1.你自己 嘻嘻嘻 2.能上网的deepin15.11电脑 首先去下载主题 本次需要系统美化3部分&#xff1a;1.图标 2.光标 3.壁纸 开始之前&#xff0c;请先把你的窗口特效打开&#xff0c;…

深度解析LinkedList

LinkedList是Java集合框架中List接口的实现之一&#xff0c;它以双向链表的形式存储元素。与传统的数组相比&#xff0c;链表具有更高的灵活性&#xff0c;特别适用于频繁的插入和删除操作。让我们从底层实现开始深入了解这个强大的数据结构。 底层数据结构 LinkedList的底层数…

天猫数据分析(软件工具)-2023年11月天猫保健品行业分析报告:市场需求扩容,年轻人是主流群体

近年来&#xff0c;随着健康经济、颜值经济的兴起&#xff0c;越来越多的年轻人加入养生大军&#xff0c;成为保健食品市场上的一股新力量&#xff0c;带动市场扩容。根据鲸参谋电商数据分析平台的相关数据显示&#xff0c;今年11月份&#xff0c;天猫平台上保健食品的销量为24…

YOLOv8改进 | 主干篇 | 利用MobileNetV3替换Backbone(轻量化网络结构)

一、本文介绍 本文给大家带来的改进机制是MobileNetV3&#xff0c;其主要改进思想集中在结合硬件感知的网络架构搜索&#xff08;NAS&#xff09;和NetAdapt算法&#xff0c;以优化移动设备CPU上的性能。它采用了新颖的架构设计&#xff0c;包括反转残差结构和线性瓶颈层&…

Unity | HybridCLR 热更新(Windows端)

目录 一、准备工作 1.环境相关 2.Unity中配置 二、热更新 1.创建 HotUpdate 热更新模块 2.安装和配置HybridCLR 3.配置PlayerSettings 4.创建热更新相关脚本 5.打包dll 6.测试热更新 一、准备工作 1.环境相关 安装git环境。Win下需要安装visual studio 2019或更高版…

使用Aspose.Slides 控件,在线将 ODP 转换为 PPT

OpenOffice 等开源生产力工具有其用途。但如果您希望在线将 ODP 转换为 PPT&#xff0c;您很可能已经确定 Microsoft PowerPoint 的专有 PPT 格式和平台比 OpenOffice ODP 更适合您的需求。 本文的第一部分重点介绍在线将 ODP 转换为 PPT 的快速方法。第二部分探讨涉及C#应用程…

R语言中使用ggplot2绘制散点图箱线图,附加显著性检验

散点图可以直观反映数据的分布&#xff0c;箱线图可以展示均值等关键统计量&#xff0c;二者结合能够清晰呈现数据蕴含的信息。 本篇笔记主要内容&#xff1a;介绍R语言中绘制箱线图和散点图的方法&#xff0c;以及二者结合展示教程&#xff0c;添加差异比较显著性分析&#xf…

27.Java程序设计-基于Springboot的在线考试系统小程序设计与实现

1. 引言 随着数字化教育的发展&#xff0c;在线考试系统成为教育领域的一项重要工具。本论文旨在介绍一个基于Spring Boot框架的在线考试系统小程序的设计与实现。在线考试系统的开发旨在提高考试的效率&#xff0c;简化管理流程&#xff0c;并提供更好的用户体验。 2. 系统设…

UG阵列特征

阵列特征&#xff1a;将一个或多个特征&#xff0c;沿线性方向阵列复制图形 实体建模时建议草图尽可能简单&#xff0c;能特征阵列的别草图阵列 阵列特征命令在如下位置&#xff1a;菜单-插入-关联复制-阵列特征 当我们只需要选中的特征沿着一个或两个方向进行阵列的时候&…

Day68力扣打卡

打卡记录 得到山形数组的最少删除次数&#xff08;线性DP 前后缀分解&#xff09; 链接 class Solution:def minimumMountainRemovals(self, nums: List[int]) -> int:n len(nums)pre, suf [1] * n, [1] * nfor i in range(n):for j in range(i):if nums[j] < nums[…

Go 随机密码

一.Go实现随机密码 随机密码 package mainimport ("fmt""math/rand""os""strconv""time" )func RandomPassword(num int) {length : numif len(os.Args) > 1 {arg : os.Args[1]i, err : strconv.ParseInt(arg, 10, 6…