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

2023-12-26 00:04

本文主要是介绍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:原理、标准与实现》的学习笔记。

这篇关于H266/VVC帧内预测编码技术概述的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/537437

相关文章

Java中的Schema校验技术与实践示例详解

《Java中的Schema校验技术与实践示例详解》本主题详细介绍了在Java环境下进行XMLSchema和JSONSchema校验的方法,包括使用JAXP、JAXB以及专门的JSON校验库等技术,本文... 目录1. XML和jsON的Schema校验概念1.1 XML和JSON校验的必要性1.2 Sche

Python动态处理文件编码的完整指南

《Python动态处理文件编码的完整指南》在Python文件处理的高级应用中,我们经常会遇到需要动态处理文件编码的场景,本文将深入探讨Python中动态处理文件编码的技术,有需要的小伙伴可以了解下... 目录引言一、理解python的文件编码体系1.1 Python的IO层次结构1.2 编码问题的常见场景二

Java中最全最基础的IO流概述和简介案例分析

《Java中最全最基础的IO流概述和简介案例分析》JavaIO流用于程序与外部设备的数据交互,分为字节流(InputStream/OutputStream)和字符流(Reader/Writer),处理... 目录IO流简介IO是什么应用场景IO流的分类流的超类类型字节文件流应用简介核心API文件输出流应用文

Java中字符编码问题的解决方法详解

《Java中字符编码问题的解决方法详解》在日常Java开发中,字符编码问题是一个非常常见却又特别容易踩坑的地方,这篇文章就带你一步一步看清楚字符编码的来龙去脉,并结合可运行的代码,看看如何在Java项... 目录前言背景:为什么会出现编码问题常见场景分析控制台输出乱码文件读写乱码数据库存取乱码解决方案统一使

Python的Darts库实现时间序列预测

《Python的Darts库实现时间序列预测》Darts一个集统计、机器学习与深度学习模型于一体的Python时间序列预测库,本文主要介绍了Python的Darts库实现时间序列预测,感兴趣的可以了解... 目录目录一、什么是 Darts?二、安装与基本配置安装 Darts导入基础模块三、时间序列数据结构与

Java实现字节字符转bcd编码

《Java实现字节字符转bcd编码》BCD是一种将十进制数字编码为二进制的表示方式,常用于数字显示和存储,本文将介绍如何在Java中实现字节字符转BCD码的过程,需要的小伙伴可以了解下... 目录前言BCD码是什么Java实现字节转bcd编码方法补充总结前言BCD码(Binary-Coded Decima

Java 中编码与解码的具体实现方法

《Java中编码与解码的具体实现方法》在Java中,字符编码与解码是处理数据的重要组成部分,正确的编码和解码可以确保字符数据在存储、传输、读取时不会出现乱码,本文将详细介绍Java中字符编码与解码的... 目录Java 中编码与解码的实现详解1. 什么是字符编码与解码?1.1 字符编码(Encoding)1

Python中高级文本模式匹配与查找技术指南

《Python中高级文本模式匹配与查找技术指南》文本处理是编程世界的永恒主题,而模式匹配则是文本处理的基石,本文将深度剖析PythonCookbook中的核心匹配技术,并结合实际工程案例展示其应用,希... 目录引言一、基础工具:字符串方法与序列匹配二、正则表达式:模式匹配的瑞士军刀2.1 re模块核心AP

springboot自定义注解RateLimiter限流注解技术文档详解

《springboot自定义注解RateLimiter限流注解技术文档详解》文章介绍了限流技术的概念、作用及实现方式,通过SpringAOP拦截方法、缓存存储计数器,结合注解、枚举、异常类等核心组件,... 目录什么是限流系统架构核心组件详解1. 限流注解 (@RateLimiter)2. 限流类型枚举 (

Python实现PDF按页分割的技术指南

《Python实现PDF按页分割的技术指南》PDF文件处理是日常工作中的常见需求,特别是当我们需要将大型PDF文档拆分为多个部分时,下面我们就来看看如何使用Python创建一个灵活的PDF分割工具吧... 目录需求分析技术方案工具选择安装依赖完整代码实现使用说明基本用法示例命令输出示例技术亮点实际应用场景扩