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:原理、标准与实现》的学习笔记。

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

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

相关文章

动态规划05-等和子集

题目描述 给定一个只包含正整数的非空数组。是否可以将这个数组分割成两个子集&#xff0c;使得两个子集的元素和相等。 注意: 每个数组中的元素不会超过 100 数组的大小不会超过 200 思路分析 将题目信息翻译一下&#xff0c;就是从原集合中选取数据元素&#xff0c;使得和…

关于Dark Frost 僵尸网络对游戏行业进行DDoS攻击的动态情报

一、基本内容 近期&#xff0c;一种名为Dark Frost 的新型僵尸网络被发现正在对游戏行业发起分布式拒绝服务攻击&#xff08;DDoS)。目标包括游戏公司、游戏服务器托管提供商、在线流媒体甚至和网络信息安全攻击者直接交互的其他游戏社区成员。截至2023年2月&#xff0c;僵尸网…

GD32移植STM32工程(因为懒,所以移植)

文章目录 一、前言二、差异性三、软件移植部分1.前期准备1.1 安装GD32固件库1.2 选择所用芯片 2.修改程序2.1 启动时间&#xff08;内部时钟可不改&#xff09;2.2 主频2.2.1 系统时钟配置2.2.2 108MHz宏定义第一处第二处第三处第四处第五处 2.2.3 串口2.2.4 FLASH 四、总结 一…

等级保护的网络安全技术措施

目录 结构安全 访问控制 ​编辑 安全审计 边界完整性检查 入侵防范 恶意代码防范 网络设备防护 结构安全 访问控制 安全审计 边界完整性检查 入侵防范 恶意代码防范 网络设备防护 ~over~

高频算法面试总结

★★★ 冒泡排序 从开始位置两两比较&#xff0c;持续n轮 基础版 function bubbleSort (arr) { // 执行第 i 1 轮 for (let i 0; i < arr.length; i) {for (let j 0; j < arr.length - 1; j) {// 前一个与后一个两两比较if (arr[j] > arr[j 1]) {// 交换两个变量值…

date-fns v3 发布——这个由 200 个函数组成的 JavaScript 日期处理套件

date-fns v3 发布——这个由 200 个函数组成的 JavaScript 日期处理套件已经在 TypeScript 中重写&#xff0c;重新引入了 String 日期参数&#xff0c;在 Node 上支持 ESM&#xff0c;并且所有函数现在都可以通过命名导出导出。 经过几个月的开发&#xff0c;v3 终于出来了&a…

力扣经典面试题——搜索旋转排序数组及最小值(二分搜索旋转数组系列一次搞定)

我们先来看看一个常规的二分搜索是如何进行的&#xff1f; 例如要找一个有序数组的某个数 【1&#xff0c;2&#xff0c;4&#xff0c;5&#xff0c;9&#xff0c;11&#xff0c;15&#xff0c;19】 我们要找11&#xff0c;每次我们分割半边判断然后看到底在哪一边。 这里为什么…

Neovim+ctag浏览、编辑源代码

Neovimctag浏览、编辑源代码 一 配置安装vim及 ctags vim应该可以不用装&#xff0c;直接装neovim&#xff0c;这里我是先装了vim再装的neovim Ctags必须装&#xff0c;后面用neovim telescope索引函数时才有效 vim复制系统粘贴板&#xff1a;vim输入模式下&#xff0c;按shi…

【C++PCL】点云处理最小三维圆拟合

作者:迅卓科技 简介:本人从事过多项点云项目,并且负责的项目均已得到好评! 公众号:迅卓科技,一个可以让您可以学习点云的好地方 目录 1.原理介绍 2.代码效果 3.源码展示 4.参数调试

date工具类

package com.hasity.stock.utils;import org.joda.time.DateTime; import org.joda.time.format.DateTimeFormat;/*** author by hasity* Date 2021/12/31* Description 日期时间工具类*/ public class DateTimeUtil {/*** 获取指定日期下股票的上一个有效交易日时间* return*/…

linux 内核死锁检测

lockdep是内核提供协助发现死锁问题的功能。 本文首先介绍何为lockdep&#xff0c;然后如何在内核使能lockdep&#xff0c;并简单分析内核lockdep相关代码。 最后构造不同死锁用例&#xff0c;并分析如何根据lockdep输出发现问题根源。 Lockdep介绍 死锁是指两个或多个进程因…

Ubuntu离线安装Docker

一、安装 docker 下载docker离线包 去官网下载docker 安装二进制包&#xff0c;选择适合自己的版本&#xff08;Docker version 20.10.8&#xff09;。 下载地址&#xff1a;https://download.docker.com/linux/static/stable/x86_64/文档名&#xff1a;docker-20.10.8.tgz用…

【Python】Python AI 绘画

本文我们将为大家介绍如何基于一些开源的库来搭建一套自己的 AI 作图工具。 需要使用的开源库为 Stable Diffusion web UI,它是基于 Gradio 库的 Stable Diffusion 浏览器界面 Stable Diffusion web UI GitHub 地址:GitHub - AUTOMATIC1111/stable-diffusion-webui: Stable…

网络编程 day3

TCP多进程并发服务器 #include <stdio.h> #include "/home/ubuntu/head.h"#define IP "192.168.124.85" #define PORT 8888void handler(int sig) {while(waitpid(-1,NULL,WNOHANG)>0); }int main(int argc, const char *argv[]) {//回收僵尸进程…

[kubernetes]Kube-APIServer

API Server API Server是什么 提供集群管理的REST API接口&#xff0c;包括认证授权、数据校验以及集群状态变更等提供其他模块之间的数据交互和通信的枢纽&#xff08;其他模块通过API Server查询或修改数据&#xff0c;只有API Server才直接操作etcd&#xff09; 访问控制…

开源自托管导航页配置服务Dashy本地搭建结合内网穿透远程访问

开源自托管导航页配置服务Dashy本地搭建结合内网穿透远程访问 简介1. 安装Dashy2. 安装cpolar3.配置公网访问地址4. 固定域名访问 简介 Dashy 是一个开源的自托管的导航页配置服务&#xff0c;具有易于使用的可视化编辑器、状态检查、小工具和主题等功能。你可以将自己常用的一…

Mongodb基础介绍与应用场景

NoSql 解决方案第二种 Mongodb MongoDB 是一款开源 高性能 无模式的文档型数据库 当然 它是NoSql数据库中的一种 是最像关系型数据库的 非关系型数据库 首先 最需要注意的是 无模式的文档型数据库 这个需要后面我们看到它的数据才能明白 其次是 最像关系型数据库的非关系型数据…

RK3588平台开发系列讲解(AI 篇)RKNN 数据结构详解

文章目录 一、rknn_sdk_version二、rknn_input_output_num三、rknn_tensor_attr四、rknn_perf_detail五、rknn_perf_run六、rknn_mem_size七、rknn_tensor_mem八、rknn_input九、rknn_output沉淀、分享、成长,让自己和他人都能有所收获!😄 📢本篇章主要讲解 RKNN 相关的数…

Autosar CAN开发02(入门Autosar)

Autosar架构 想起当时刚毕业进入公司之后&#xff0c;我的岗位是Autosar Bsw软件工程师。 看着这个什么“Autosar”&#xff0c;真的是一脸懵。 后来才知道&#xff0c;按照我的理解&#xff1a;Autosar就是一个软件架构。它分为ASW和BSW。ASW负责实现应用层功能&#xff08…

“React学习之旅:从入门到精通的点滴感悟“

在探索和学习React的过程中&#xff0c;我逐渐领悟到了前端开发的魅力与挑战。React&#xff0c;作为Facebook推出的开源JavaScript库&#xff0c;以其独特的思维方式和强大的功能&#xff0c;引领着前端开发的潮流。在这篇文章中&#xff0c;我将分享我的React学习心得&#x…