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

帧间预测编码简述

  • 帧间预测利用视频时间域的相关性,使用邻近已编码图像像素值预测当前图像的像素值,能有效去除视频时域冗余。

  • 目前主要的视频编码标准中,帧间预测都采用基于块的运动补偿技术,不同的编码标准有不同的分块方式。

  • 为当前图像的每个像素块在之前已编码图像找到一个最佳匹配块,这个寻找过程就称为运动估计(Motion Estimation,ME)

  • 用于预测的图像被称为参考图像或参考帧(Reference Picture)

  • 最佳匹配块到当前块的位移被称为运动矢量(Motion Vector,MV)

  • 当前块与参考块的像素差值被称为预测残差(Prediction Residual)

  • MV预测残差信息会编入码流并传递到解码端。

  • 为当前块在参考图像中寻找一个最佳匹配块,需要一个准则来判定两个块的匹配程度,这个准则就称为运动估计准则;常见有最小均方误差MSE、最小平均绝对误差MAD、最大匹配像素数MPC、绝对误差和SAD等。

  • 运动估计搜索是根据匹配准则寻找最优匹配块,并获得最优MV的过程;常见搜索算法有全搜法对数搜索法三步搜索法UMHexagonS算法TZSearch算法等等。

  • 在解码端,从码流中解析出运动信息后,将根据MV得到的参考块作为当前块预测值的过程称为运动补偿(Motion Compensation,MC),MC得到的预测值加上传输到解码端的预测残差,就得到了最终的重建值

  • 编解码端需要确保参考信息的一致,即使用重建后的已编码图像作为参考图像,因此MC和重建图像过程是编解码端都会实施的步骤。

  • 相邻图像间物体的运动不一定是以整像素为基本单位的,因此将运动估计的精度提升到亚像素级别,可以提高运动估计的精确度,因此亚像素精度运动估计需要对参考像素进行插值操作。

H266/VVC帧间预测编码关键技术

概述

MV的预测及获取新增加的技术

基于历史MV预测(History-based MV Mrediction,HMVP)的候选、联合帧内帧间预测技术(Combined Inter and Intra Prediction,CIIP)、带有运动矢量差的Merge技术(Merge-Mode with MVD,MMVD )、几何划分帧间预测技术(Geometric Partitioning Mode,GPM)、对称运动矢量差分编码(Symmetric MVD Coding,SMVD)、CU级的自适应运动矢量精度(Adaptive Motion Vector Resolution,AMVR)、基于子块的时域MV预测(Sub-block Temporal Motion Vector Prediction,SuTMVP) 、仿射运动补偿预测(Affine Motion Compensated Prediction,AMCP)、解码端运动矢量细化(Decoder Side Motion Vector Refinement,DMVR)等等。

运动补偿新增加的技术

片级加权运动补偿(WP)、CU级权重的加权补偿(Bi-Prediction with CU-Level Weight,BCW)、双向光流(Bi-Directional optical Flow, BDOF)、光流预测细化(Prediction Refinement with Optical Flow,PROF)等等。

帧间编码信息的存储

参考像素MV存储以8x8的尺寸粒度实施,通过类似科学技术法的方式对MV进行压缩存储(18比特降低到10比特表示)。

亚像素插值

H266/VVC采用双线性插值方法,插值滤波器为一维滤波器,按照先水平方向后垂直方向的顺序完成二维亚像素插值。

亮度分量最高支持1/16像素精度插值,统一为8抽头滤波器,由基于离散余弦变换的滤波器生成。
色度分量最高支持1/32像素精度插值,统一使用4抽头滤波器,水平、垂直滤波器系数分别由水平、垂直方向的缩放因子决定。

Merge模式

Merge模式不需要传输MVD和参考帧索引,是一种高效的MV编码方法。H266保留了常规Merge模式的同时,还引入了CIIPMMVDGPMSbTMVP仿射Merge等技术。

常规Merge模式

常规Merge模式: 直接将MVP运动矢量信息(参考图像索引、运动矢量)作为当前CU运动矢量信息的帧间编码方式。

Skip模式

Skip模式: 是Merge模式的特例,直接使用MVP信息作为当前CU的运动矢量,不编码MVD信息和预测残差信息。

CIIP

CIIP:联合帧内帧间预测模式(Combined Inter and Intra Prediction, CIIP)是联合帧内预测和帧间预测,利用帧内预测值和帧间预测值的加权平均值得到当前CU预测值的技术。

MMVD

MMVD: Merge模式直接利用MVP作为当前CU的运动矢量信息,是运动矢量的高效编码方式。然而,视频相邻(空域、时域)区域CU也会有不同的运动特性,常规Merge模式降低了MV的编码比特数,但也可能因为不准确的MV造成更大的预测残差。为了权衡运动矢量的准确性和编码比特数,H266引入了一种带有运动矢量差的Merge技术MMVD

GPM

GPM: 实际视频内容多种多样,当运动物体具有非水平或垂直边缘时,常规矩形CU并不能有效匹配,预测表达不够高效。针对此问题,H266引入几何划分帧间预测模式(Gemetric Partitioning Mode,GPM),允许使用非水平或垂直直线对矩形CU进行划分,每个子区域可以使用不同的运动信息进行运动补偿,从而提高了预测准确度。
在H266中,GPM的运动信息采用Merge方式编码,因此也归类为Merge扩展模式。

AMVP

常规AMVP

常规AMVP: 是针对运动矢量信息的差分编码技术;该模式利用空域、时域上运动矢量的相关性,为当前CU建立MVP候选列表。与Merge不同,编码端为当前CU建立MVP候选列表,针对不同的参考图像构建得到的MVP列表可能不同,常规AMVP需要编码参考帧索引、MVP列表索引、MVD。

SMVD

SMVD: 在实际场景中,物体的运动在短时间内时匀速的;对于双向预测,并且参考帧位于当前帧两侧的情形,前后向运动矢量可能具有对称一致性。因此,H266采用对称运动矢量差分编码(Symmetric MVD Coding,SMVD)模式,只编码前向MVD,后向MVD则根据对称一致性推导得到。

AMVR

AMVR: 提高运动矢量精度有利于提高运动补偿效果,而运动剧烈场景则需要更大的运动矢量范围,同时,在提高运动矢量范围和精度时,编码运动矢量需要更多的比特数。H266兼顾运动矢量和精度,引入CU级的自适应运动矢量精度(Adaptive Motion Vector Resolution,AMVR)技术,该技术允许每个CU自适应选择一种精度表示MVD,最高精度为1/16亮度像素,最低精度为4亮度像素。

基于子块的帧间预测模式

除了平移运动,视频内容还包括旋转、缩放、拉伸等运动。
为了有效表示此类运动,传统编码须采用较小的 CU,以便使用不同的运动信息对不同小CU进行运动补偿。虽然不同小区域(甚至像素)具有不同的运动,但它们却具有相同的运动模式。因此利用基于子块的帧间预测模式将CU划分成多个子块,利用CU的运动信息按照一定规则得到每个子块不同的运动信息,可以节省表示此类运动信息所需的比特殊。基于子块的帧间预测模式包括基于子块的时域运动矢量预测技术(SbTMVP)仿射运动补偿技术

SbTMVP: 基于子块的时域运动矢量预测技术使用同位图像ColPic中参考块的运动信息直接得到当前CU子块的MV信息。

仿射运动补偿技术: 包括仿射Merge模式和仿射AMVP模式。

解码端运动矢量细化

DMVR: Merge模式可以高效表示运动矢量信息,但可能会导致其运动矢量并非使参考块与编码块最匹配。为了改进Merge模式下MV的精确性,进一步减少预测残差,H266采用了一种基于双边匹配的解码端运动矢量细化技术(Decoder-Side Motion Vector Refinement, DMVR)。

基于光流场的预测值修正

光流: 是指视频帧内容在时域上的瞬时运动速度,即像素在时间域上的运动速度。视频中的时间间隔较短的两帧,光流也表现为同一目标点在两帧之间的位移,即像素的运动矢量

计算光流:对于时域邻近的视频帧,同一目标在不同帧上的亮度通常不会发生变化,而且运动距离很小;因此可以利用图像帧中像素亮度在时间域上的变化及像素空域相关性,计算视频帧之间的像素运动信息,即光流。

基于光流的预测值修正: 当前像素值可以根据参考像素值(对应位置)、光流值、空域梯度得到。当运动补偿中运动矢量存在较小误差时,可以计算运动矢量误差(光流值),对预测值进行补偿。称为基于光流的预测值修正。

BDOF: 采用双向运动补偿的帧间编码块,可以利用前向预测参考块和后向预测参考块得到一致性,估计前向预测参考块和后向预测参考块间的光流,作为运动矢量的修正值,这技术称为双向光流(Bi-Directional Optical Flow, BDOF)。

基于光流的仿射预测修正: 在H266中,仿射运动补偿技术(仿射Merge模式仿射AMVP模式)以4x4子块为处理单位,每个4x4子块拥有一个共同的运动矢量,而仿射运动区域,每个像素的运动矢量都不同,导致每个像素点的亮度补偿值可能有少许偏差。针对采用仿射运动补偿的编码块,光流预测细化(Prediciton Refinement with Optical Flow, PROF)技术为4x4子块的每个像素计算光流补偿值,即像素运动矢量与子块运动矢量的差值,然后根据光流计算公式计算每个像素的亮度补偿值。

帧间加权预测

H266/VVC采用Slice级加权预测和CU级加权预测(Bi-Prediction with CU-Level Weight, BCW)。Slice级加权预测所有CU共用同一组参数,归为显性(Explicit)预测,BCW每个CU利用索引确定加权值,归为默认加权,当不使用加权与测试时,归为默认加权

光照强弱出现变化时,视频中同场景会出现全局或局部的亮度变化,如拍摄的光圈变化,人为剪辑的淡入淡出等;传统的运动补偿得到的残差较大,Slice级加权预测可以有效应对此种场景。Slice级加权预测通过对参考图像的重建像素值做一个线性变换得到预测值。

针对采用双向预测的CU,H266引入了CU级双向加权预测BCW技术,仅仅使用少量预定义的权值,并编码器索引。

帧间预测模式组织结构

在这里插入图片描述

参考

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

备注

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

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

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

相关文章

【UML】第12篇 序列图(1/2)——基本概念和构成

目录 一、什么是序列图(Sequence Diagram) 1.1 定义 1.2 主要用途 1.3 序列图和BPMN的区别和联系 二、序列图的构成 2.1 对象 2.2 生命线 2.3 消息 2.4 激活 序列图,是我个人认为的用处最多的一种图。产品和研发的同学,都…

CentOS安装MongoDB

CentOS安装MongoDB 文章目录 CentOS安装MongoDB1. 安装并运行2. 创建用户/密码3. 测试语句4. 允许外网访问 1. 安装并运行 在 CentOS 上安装 MongoDB,你可以按照以下步骤进行: 导入 MongoDB 的 GPG 密钥: sudo rpm --import https://www.mon…

XxlJob 常见的报错

XxlJob 启动日志报错: 报错一: ERROR c.x.job.core.util.XxlJobRemotingUtil - Connection refused: connect java.net.ConnectException: Connection refused: connect 解决方法: 要启动的类是 XxlJobAdminApplication ,而不是…

什么是集成测试?它和系统测试的区别是什么? 操作方法来了

01 什么是集成测试? 集成测试是软件测试的一种方法,用于测试不同的软件模块之间的交互和协作是否正常。集成测试的主要目的是确保不同的软件模块能够无缝协作,形成一个完整的软件系统,并且能够满足系统的需求和规格。 在集成测试…

电商数据分析-02-电商业务介绍及表结构

参考 电商业务简介 大数据项目之电商数仓、电商业务简介、电商业务流程、电商常识、业务数据介绍、电商业务表、后台管理系统 举个例子:🌰 1.1 电商业务流程 电商的业务流程可以以一个普通用户的浏览足迹为例进行说明,用户点开电商首页开始浏览&…

【回溯】n皇后问题Python实现

文章目录 [toc]问题描述问题转换回溯法时间复杂性Python实现 个人主页:丷从心 系列专栏:回溯法 问题描述 有一批共 n n n个集装箱要装上 2 2 2艘载重量分别为 c 1 c_{1} c1​和 c 2 c_{2} c2​的轮船,其中集装箱 i i i的重量为 w i w_{i} w…

c# OpenCvSharp透视矫正六步实现透视矫正(八)

透视矫正,引用文档拍照扫描,相片矫正这块。 读取图像Cv2.ImRead();预处理(灰度化,高斯滤波、边缘检测)轮廓检测(获取到最大轮廓)获取最大面积轮廓的四个顶点标识最小矩形坐标透视矫正显示 完整代码 // 1、…

【数据结构】LRU缓存的简单模拟实现(leetcode力扣146LRU缓存)

文章目录 一、定义二、LRU模拟实现二、代码实现 一、定义 LRU是Least Recently Used的缩写,意思是最近最少使用,它是一种Cache替换算法。 Cache的容量有限,因此当Cache的容量用完后,而又有新的内容需要添加进来时, 就…

\r\n和缓冲区/进度条小程序

一 前置知识 带有\n就会立马刷新缓冲区,\r不会刷新缓冲区 刷新的2个场景: 1 ~fflush 缓冲区中存在\r或\n --> \r fflush --> 不换行的\n) 2 ~ 文件关闭自动刷新缓冲区 倒计时小程序0-9 倒计时小程序0-99

PostgreSQL 可观测性最佳实践

简介 软件简述 PostgreSQL 是一种开源的关系型数据库管理系统 (RDBMS),它提供了许多可观测性选项,以确保数据库的稳定性和可靠性。 可观测性 可观测性(Observability)是指对数据库状态和操作进行监控和记录,以便在…

中间继电器的文字符号和图形符号

中间继电器的文字符号和图形符号 中间继电器主要用途是当其他继电器触头数量或容量不够时,可借助中间继电器扩充触头数目或增大触头容量,起中间转换作用。将多个中间继电器相组合,还能构成各种逻辑运算电器或计数电器。 中间继电器文字符号…

C# WPF上位机开发(windows pad上的应用)

【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing 163.com】 大部分同学可能都认为c# wpf只能用在pc端。其实这是一种误解。c# wpf固然暂时只能运行在windows平台上面,但是windows平台不仅仅是电脑…