H266/VVC多样化视频编码工具概述

全景视频编码

全景视频: 具有360度全包围视角的球面视频。
全景视频编码: 包括H266在内的视频编码算法都是以平面视频为对象的,为了采用传统的视频编码编码算法,全景视频需要转换为平面视频,其中经纬图等角映射(ERP)、立方体映射(CMP)是常用的格式。

水平环绕运动补偿:
普通平面视频编码算法的运动补偿中,当运动矢量指向参考图像边界区域外的像素时,会对参考图像边界进行填充以获取参考像素值,填充方法是用距离填充位置最近的图像边界像素值作为填充值。
ERP格式全景视频的左右边界是连续的,即图像的最左侧列像素与最右侧列像素内容是相邻的,如下图。
在这里插入图片描述
水平环绕运动补偿针对该类格式视频设计,可以使用图像右侧像素对左侧像素进行填充,也可以使用图像左侧像素对右侧像素进行填充。此外水平环绕运动补偿适用于其他左右边界连续的格式,比如等面积映射。
在这里插入图片描述
虚拟边界取消环路滤波:
多面投影映射是将球面全景视频投影在多个平面上,不论采用何种拼接方式,都不可避免地会在某些相邻投影面之间出现图像内容不连续现象,比如如下CMP格式。
如果对这些不连续边界使用环路滤波,则在重建视频中会出现拼接伪影,H266标准允许对指定边界禁用换路滤波。
在这里插入图片描述

屏幕内容编码

屏幕内容视频:像计算机桌面分享、文档演示、游戏动画等,都是屏幕内容视频,通常是由计算机生成,相比自然视频,屏幕内容视频不受摄像机镜头的物理限制,不存在传感器噪声,常带有更少的颜色类型,更多的重复图形,更锐利的物理边缘,场景切换也在屏幕视频中频繁出现。

H266屏幕内容编码: 针对屏幕内容视频的特性,H266标准采用了多种屏幕内容编码(Screen Content Coding,SCC)工具,包括帧内块复制、变换跳过模式的残差编码,块差分脉冲编码调制,调色板模式,自适应色度变换等。

帧内块复制:
IBC(Intra Block Copy)不再将参考区域限制在相邻像素行,利用当前帧所有已编码区域,预测待编码CU。预测过程与帧间预测类似,以CU为单位在当前帧已经完成重建的区域内搜索匹配的块。
使用块矢量(Block Vector,BV)来描述当前CU与匹配块的位移,与帧间预测出中的运动矢量类似,利用块矢量可以获取匹配块作为当前CU的预测值,如下图,IBC预测模式可以有效利用屏幕内容中重复出现的内容,完成更高效的预测。
在这里插入图片描述
帧内块复制支持两种预测模式,即IBC Merge模式和IBC AMVP模式。其中IBC Merge模式的块矢量候选列表通过空域矢量和历史矢量构建,下图时候空域块矢量示意图。IBC AMVP模式候选仅通过空域相邻块获取块矢量预测值,其预测值构建方式与IBC Merge模式中的空域块矢量预测方式相同。
在这里插入图片描述

变换跳过模式的残差编码:
H266中添加了变换跳过模式,即跳过变换过程,直接对CU的预测残差进行量化和熵编码。在H266中,变换跳过模式仅对宽和高都小于MaxTsSize的CU使用,MaxTsSize的值在SPS层语法元素中标识,最大值为32。

块差分脉冲编码调制:
针对屏幕视频内容,H266标准中采用块差分脉冲编码调试模式(Block Differential Pulse Coded Modulation, BDPCM)。CU完成帧内预测后,不对预测残差进行变换而直接量化,然后对量化预测出残差按预测方向进行差分脉冲编码。

调色板模式:
屏幕视频的像素值经常集中在少量颜色,H266的调色板模式(Palette Mode)可以有效提高屏幕视频的编码性能。在该模式下编解码端维护一个称为调色板的颜色列表,当像素值等于活接近调色板中得到某一个颜色时,编码端值需要编码该颜色的索引。当屏幕内容视频中的颜色种类较少时,可以用长度较短的调色板完成像素信息描述,获得较高的编码效率。

自适应色度变换:
为了削弱颜色失真效应,屏幕视频经常使用4:4:4颜色格式,H266采用ACT技术(Adaptive Color Tansform),允许使用颜色转换模块,将视频信息转换到YCgCo颜色空间,进行变换、量化、熵编码等操作。ACT技术如下图。
YCgCo颜色空间具有接近KL变换的都编码性能、与RGB颜色空间的转换可逆,支持有损压缩和无损,只包含移位和加法运算,计算复杂度低等优势。
在这里插入图片描述

参考

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

备注

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

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

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

相关文章

dubbo的基础知识

dubbo是什么 Dubbo是一个分布式服务框架,是一种高性能的远程通讯框架。它提供了基于Java的RPC(远程过程调用)通信机制,使得应用之间可以方便地进行远程调用,实现分布式服务的调用和管理。Dubbo提供了服务注册、发现、负…

【大数据进阶第三阶段之Hive学习笔记】Hive常用命令和属性配置

目录 1、Hive安装 2、HiveJDBC访问 2.1、启动hiveserver2服务 2.2、连接hiveserver2服务 2.3、注意 3、Hive常用交互命令 3.1、“-e”不进入hive的交互窗口执行sql语句 3.2、“-f”执行脚本中sql语句 4、Hive其他命令操作 4.1、退出hive窗口 4.2、在hive cli命令窗口…

基于OpenCV的透视变换

基础概念 透视变换(Perspective Transformation)是仿射变换的一种非线性扩展,是将图片投影到一个新的视平面(Viewing Plane),也称作投影映射(Projective Mapping)。 原理:将二维的图片投影到一个三维视平面上,然后再转换到二维坐标下&#…

LeetCode 2807.在链表中插入最大公约数

【LetMeFly】2807.在链表中插入最大公约数 力扣题目链接:https://leetcode.cn/problems/insert-greatest-common-divisors-in-linked-list/ 给你一个链表的头 head ,每个结点包含一个整数值。 在相邻结点之间,请你插入一个新的结点&#x…

使用 C# Winfrom编写倒计时功能

在日常生活中,我们经常需要倒计时来提醒自己重要的时间节点,比如倒计时到达一个特定的日期和时间。介绍一个使用 C# 编写的倒计时应用程序的实现。 步骤一:应用程序的功能 它具有以下几个主要特点: 用户输入目标日期和时间&…

CSS3 边框border、outline、box-shadow

1 border 语法:border: width style color 2 outline 语法:outline: width style color 2.1 outline-offet MDN解释:用于设置outline与一个元素边缘或边框之间的间隙 即:设置outline相对border外边缘的偏移,可以为…

excel统计分析——两因素有重复方差分析

参考资料:生物统计学 无重复观测值的两因素方差分析只能研究两个因素的主效应,不能考察因素间的交互作用,只有在确定因素间不存在交互作用时才能进行无重复观测值的试验和分析。为了准确估计因素的主效应、交互作用和随机误差,每个…

DQL命令查询数据 (二)

本课目标 掌握 ORDER BY 子句 使用 LIMIT 子句实现分页查询 掌握MySQL的分组查询 掌握MySQL的子查询 SELECT 语法 ORDER BY 排序 ORDER BY 子句:按照一定顺序显示查询结果 排序可以是升序(ASC)或者是降序(DESC)&…

使用C#发送邮箱验证码

使用C#发送邮箱验证码 在很多应用程序中,我们需要使用邮箱来进行用户身份验证。其中一种常见的方式是通过发送验证码到用户的邮箱,然后要求用户输入该验证码进行验证。本文将介绍如何使用 C# 发送邮箱验证码。 声明 验证码登录没有用任何的工具&#…

【大数据】Zookeeper 数据写入与分布式锁

Zookeeper 数据写入与分布式锁 1.数据是怎么写入的2.基于 Zookeeper 实现分布式锁 1.数据是怎么写入的 无论是 Zookeeper 自带的客户端 zkCli.sh,还是使用 Python(或者其它语言)实现的客户端,本质上都是连接至集群,然…

记事本在手机桌面上怎么找?手机里的记事本怎么找?

在日常生活、工作和学习中,我们时常需要随手记录一些重要的事项、灵感闪现的瞬间或者是待办的任务。比如,在超市购物前,列出购物清单;在开会时,记下重要的讨论点;在学习时,捕捉那一刹那的灵感。…

C语言-第十八周做题总结-数组3

id:454 A.字符串逆序 题目描述 输入一个字符串,对该字符串进行逆序,输出逆序后的字符串。 输入 输入在一行中给出一个不超过80个字符长度的、以回车结束的非空字符串。 输出 在一行中输出逆序后的字符串。 输入样例 输出样例 题解 先用一个while…

【大数据进阶第三阶段之Hive学习笔记】Hive基础入门

目录 1、什么是Hive 2、Hive的优缺点 2.1、 优点 2.2、 缺点 2.2.1、Hive的HQL表达能力有限 2.2.2、Hive的效率比较低 3、Hive架构原理 3.1、用户接口:Client 3.2、元数据:Metastore 3.3、Hadoop 3.4、驱动器:Driver Hive运行机制…

2.3_6 用信号量实现进程互斥、同步、前驱关系

2.3_6 用信号量实现进程互斥、同步、前驱关系 #mermaid-svg-fj0wp6tJGfadcT8h {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-fj0wp6tJGfadcT8h .error-icon{fill:#552222;}#mermaid-svg-fj0wp6tJGfadcT8h .error-t…

在Ubuntu22.04上离线部署Tailchat(一)

一:Tailchat介绍 Tailchat 是一款插件化易拓展的开源 IM 应用。可拓展架构赋予 Tailchat 无限可能性。前端微内核架构 后端微服务架构 使得 Tailchat 能够驾驭任何定制化/私有化的场景,是面向企业与私域用户打造,高度自由的群组管理与定制化…

第11章 GUI Page462~476 步骤二十三,二十四,二十五 Undo/Redo ③实现“Undo/Redo”菜单项

工程六 添加“编辑”菜单和子菜单 菜单ID分别为 idMenuEditUndo 和 idMenuEditRedo 热键(快捷键)分别为CtrlZ 和 CtrlShiftZ 变量名分别为 MenuItemEditUndo 和 MenuItemEditRedo 分别添加事件 ActionLink类增加成员函数 运行效果:“添加…

C语言注意点(2)

1.使用pow函数的相关问题 局部变量n0 while(num/pow(10,n)) n; 为什么不可行 printf("%d",num/pow(10,4)%10) 为什么要提前用temp先引出来 答:pow函数的返回值为double类型,1.终止条件不会满足 2.num/pow(10,4)结果为浮点型,浮…

运维工程师的出路

运维工程师的出路到底在哪里? 你是不是也常常听到身边的运维人员抱怨,他们的出路到底在哪里呢?别着急,让我告诉你,运维人员就像是IT界的“万金油”,他们像“修理工”一样维修服务器,像“消防员…

基于日照时数计算逐日太阳辐射

基于日照时数计算逐日太阳辐射

配置cendos 安装docker 配置阿里云国内加速

由于我安装的cendos是镜像版。已经被配置好了。所以只需要更新相关配置信息即可。 输入 yum update自动更新所有配置 更新完成后输入 yum list docker-ce --showduplicates | sort -r 自动查询所有可用的docker版本 输入 yum install docker-ce docker-ce-cli container…