从HEVC到VVC:帧内预测技术的演进(1) —方向预测(Angular intra prediction)

本文主要是介绍从HEVC到VVC:帧内预测技术的演进(1) —方向预测(Angular intra prediction),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

转载自腾讯音视频实验室,原文链接:https://cloud.tencent.com/developer/article/1430270
在视频压缩标准过去三十多年的发展历程中,方向预测(angular intra prediction)因其较低的实现复杂度以及相对高效的编码增益,成为多项国际视频标准(如H.264/AVC,VP9,AVS1,HEVC等)中的关键编码技术。然而,随着设备终端计算能力的不断提高以及市场对视频压缩性能需求的持续增强,更高性能更精细的方向预测技术逐渐成为研究热点,并被成功推向多项视频编码标准。

本文分别以国际视频编码标准HEVC(High-Efficiency Video Coding)和正在制定过程中的VVC(Versatile Video Coding)标准为例,阐述了方向预测技术在这两代国际视频压缩标准之间的技术演进。

一、HEVC中的帧内预测技术

HEVC标准制定的一个重要应用场景是高分辨率视频的编码,例如1080P和4K视频。已有的研究成果表明,在传统基于块的混合编码框架下,采用更大块的预测和变换对高分辨图像和视频的压缩性能有非常显著的提高。因此,在HEVC编码标准中,预测单元的大小可以从4x4到64x64。同时,对于较大的预测单元,8个帧内预测方向已不能很好地预测视频图像中的方向性纹理。因此,HEVC将预测方向的个数从H.264/AVC的8个增加到33个 [1]。

下图是HEVC的33个方向预测模式,分别被标记为模式2~模式34,其中每个1/8象限中包含8个预测方向,它们所对应的位移参数分别是 [2, 5, 9, 13, 17, 21, 26, 32]。这些位移参数的物理含义是预测角度的正切值,即 [2/32, 5/32, 9/32, 13/32, 17/32, 21/32, 26/32, 32/32],以32/32为例,其代表45°预测方向(正切值为1)。同时根据角度的正切值可以看出, HEVC采用的是1/32像素精度的预测精度。H 和V分别代表水平和垂直方向,标记符号中的数字部分代表着该模式的位移参数,例如V+2表示垂直方向具有+2位移参数的预测方向。从这些位移参数可以看出,靠近水平和垂直方向的角度分布更加密集一些,而靠近对角线方向的角度的分布相对稀疏一些。这个设计准则是因为在传统的视频和图像中,接近水平和垂直方向的图案的出现概率相对较高,而对角线附近方向的图案的出现概率相对较低。
在这里插入图片描述

在HEVC的帧内预测过程中,当前块内的所有像素根据指定的预测方向被映射到左侧或者上侧参考像素。具体来讲,对于模式18 ~ 模式34,当前块的像素被映射到上侧参考像素,对于模式2~模式17,当前块的像素被映射到左侧参考像素。当映射后的像素的位置的坐标出现负数,左侧的参考列会映射到上侧参考列的左侧来对其进行扩展或者上侧的参考行会映射到左侧参考列的上方来对其进行扩展。下图是将左侧参考像素映射到上侧参考像素的例子,图中的粗线条代表着预测方向,细线条代表着参考像素的映射过程。
在这里插入图片描述

在当前块内的像素被映射到参考像素之后,用最邻近的两个参考像素通过线性插值来生成预测像素值,公式如下所示:

其中,wy表示最邻近的两个参考像素Ri,0和Ri,1的权重因子。
在这里插入图片描述

由于当前块的预测方向和其周围块的预测方向有很强的相关性,为了编码这些预测方向的索引信息,HEVC需要建立一个长度是3的Most Probable Mode (MPM) 列表,该列表中的候选项依赖于当前块左侧和上侧的参考块的预测模式 [2]。对于每个预测单元,首先编码一个标识符MPM Flag,用来表示当前的预测方向是否属于MPM列表,如果当前预测方向属于MPM列表,则使用truncated unary codeword来编码MPM 索引。否则,使用5-bit fixed length codeword来对编码剩下的预测模式。由于编码端和解码端使用同样的方法建立MPM列表,该列表不需要传递到解码端。

二、 VVC中的方向预测技术

VVC的技术框架沿用HEVC,帧内预测单元的大小仍然是从4x4到64x64,但是VVC采纳了更加精细的帧内预测方向来更好的预测视频和图像中的结构信息,其中包括65个传统的帧内预测方向以及28个Wide Angular Intra Prediction Mode (简称为WAIP) [3-5] [9]。WAIP预测模式是指超过45度对角线方向的预测模式。如下图所示,其中模式2 ~ 66表示传统的帧内预测模式,模式 -1 ~ -14以及模式67 ~ 80表示WAIP预测模式。
在这里插入图片描述

WAIP模式由腾讯音视频实验室,法国Technicolor公司和华为联合提出,该提案JVET-K0500 [4] 针对矩形预测单元中方向预测的不对称性分布问题作了进一步优化。在VVC中,不仅有四叉树划分,还有二叉树和三叉树划分,因此VVC中不仅有正方形的预测单元,还有矩形的预测单元。对于正方形的预测单元来说,模式2 ~ 模式66的使用概率是均匀分布的,但是对于矩形的预测单元来说,这些模式的使用概率是不均匀的。具体来讲,对于水平的矩形预测单元(宽大于高的预测单元),左下方的预测模式(比如模式2 ~ 模式7)的使用概率要低于右上方的预测模式(比如模式61~模式66)。对于垂直的矩形预测单元(高大于宽的预测单元),左下方的预测模式(比如模式2 ~ 模式7)的使用概率要高于右上方的预测模式(比如模式61~模式66)。下图统计了BasketBallDrill 测试序列在量化参数设定为22的情况下,16x8 块中各个预测模式的使用概率(该表是基于33个方向预测进行统计的),其中水平坐标代表着不同的预测模式,垂直坐标代表着各个模式的使用概率。从表中可以看出 模式32 ~ 34的使用概率要明显高于模式2 ~ 4的使用概率。
在这里插入图片描述

针对这个非对称问题,对于水平的预测单元,模式67~ 80被用来替换模式2~ 15;而对于垂直的预测单元,模式-1 ~ -14被用来替换模式53 ~ 66。不同宽高比的矩形预测单元使用到的WAIP模式数量是不同的,具体如下表所示:
在这里插入图片描述

在WAIP模式被采纳之后,对于不同的编码单元,其帧内预测方向的范围都是从该预测单元左下角的对角线到右上角的对角线。下图中是水平的矩形预测单元的帧内预测方向范围的示意图。
在这里插入图片描述

对于帧内预测过程,VVC沿用了HEVC中预测像素向参考像素的映射过程,但是VVC采用了两组不同的插值滤波器来更好的拟合不同块大小和不同的预测方向下数据的统计特性。对于靠近水平和垂直方向的方向预测,采用4-tap Cubic 插值滤波器来更好的保留图像的边缘信息,对于靠近对角线方向的方向预测,采用4-tap Gaussian 插值滤波器来生成更加平滑的预测图像 [6]。

与HEVC一样,VVC中所有的预测单元都采用统一的编码方式对帧内预测模式进行编码。但是由于VVC需要编码67个预测模式,如果当前的预测模式不在MPM列表中,则需要使用6个比特位来对其进行编码。为了能够使用较少的比特数来对预测模式进行编码,需要提高MPM 列表中编码模式的选中概率,因此,VVC将MPM 列表的大小从3扩展到6 [7]。考虑到Planar 预测模式具有很高的选中概率,腾讯音视频实验室提出将Planar预测模式作为优先模式放置于MPM列表首位,该方法经过多家公司的相关提案验证,进一步提高了帧内预测模式编码的性能 [8],最终该技术在今年3月份的日内瓦会议被VVC所采纳 [8]。

三、 总结

本文总结了HEVC和VVC标准中帧内方向预测的设计方案。与HEVC相比,新一代VVC标准采纳了65 个帧内预测方向,WAIP预测模式,4-tap Cubic and Gaussian滤波器,以及6 个MPM。音视频实验室深度参与了方向预测技术在VVC标准中的研制工作,在这个过程中贡献了多项技术提案,其中两项被VVC标准采纳并且定义了VVC的全部帧内预测方向。

参考文献

[1] J. Lainema, F. Bossen, W-J Han, J. Min, and K. Ugur, “Intra Coding of the HEVC Standard,” IEEE Trans. Circuits Syst. Video Technol., vol. 22, no. 12, pp. 1792–1801, Dec. 2012.

[2] X. Zhang, S. Liu, M. Guo, X. Guo, and S. Lei, “Non-CE6: Intra mode coding with fixed length binarization,” Joint Video Exploration Team (JVET) of ITU-T SG 16 WP 3 and ISO/IEC JTC 1/SC 29/WG 11, JVTVC-H0435, San Jose, 1-10 Feb, 2012.

[3] L. Zhao, S. Liu, X. Zhao, and X. Li, “CE3-related: Wide angular intra prediction for non-square blocks,” Joint Video Exploration Team (JVET) of ITU-T SG 16 WP 3 and ISO/IEC JTC 1/SC 29/WG 11, JVET-K0289, Ljubljana, SL, Jul. 2018.

[4] F. Racapé, G. Rath, F. Urban, L. Zhao, S. Liu, X. Zhao, X. Li, A. Filippov, V. Rufitskiy, and J. Chen, “CE3-related: Wide-angle intra prediction for non-square blocks”, Joint Video Exploration Team (JVET) of ITU-T SG 16 WP 3 and ISO/IEC JTC 1/SC 29/WG 11, JVET-K0500, Ljubljana, SL, Jul. 2018.

[5] L. Zhao, X. Zhao, S. Liu, and X. Li, “CE3-related: Unification of angular intra prediction for square and non-square blocks,” Joint Video Exploration Team (JVET) of ITU-T SG 16 WP 3 and ISO/IEC JTC 1/SC 29/WG 11, JVET-L0279, Macau, CN, Oct. 2018.

[6] A. Filippov, V. Rufitskiy, J. Chen, G. Van der Auwera, A. K. Ramasubramonian, V. Seregin, T. Hsieh and M. Karczewicz, “CE3: A combination of tests 3.1.2 and 3.1.4 for intra reference sample interpolation filter,” Joint Video Exploration Team (JVET) of ITU-T SG 16 WP 3 and ISO/IEC JTC 1/SC 29/WG 11, JVET-L0628, Macao, CN, Oct. 2018.

[7] L. Li, J. Heo, J. Choi, J. Choi, S. Yoo, S. Kim, and J. Lim, “CE3-6.2.1: Extended MPM list,” Joint Video Exploration Team (JVET) of ITU-T SG 16 WP 3 and ISO/IEC JTC 1/SC 29/WG 11, JVET-L0165, Macao, CN, Oct. 2018.

[8] L. Zhao, X. Zhao, S. Liu, and X. Li, “CE3-3.3: MPM list harmonization,” JVET-N0393, Joint Video Exploration Team (JVET) of ITU-T SG 16 WP 3 and ISO/IEC JTC 1/SC 29/WG 11, Geneva, CH, Mar. 2019.

[9] L. Zhao, X. Zhao, S. Liu, X. Li, J. Lainema, G. Rath, F. Racapé, and F. Urban, “Wide Angular Intra Prediction for Versatile Video Coding”, IEEE Data Compression Conference, Snowbird, Utah, USA, pp. 1–10, Mar. 2019.

———— / END / ————

最新资讯 丨 技术干货

就在腾讯音视频实验室

这篇关于从HEVC到VVC:帧内预测技术的演进(1) —方向预测(Angular intra prediction)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



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

相关文章

HTML5的input标签的`type`属性值详解和代码示例

《HTML5的input标签的`type`属性值详解和代码示例》HTML5的`input`标签提供了多种`type`属性值,用于创建不同类型的输入控件,满足用户输入的多样化需求,从文本输入、密码输入、... 目录一、引言二、文本类输入类型2.1 text2.2 password2.3 textarea(严格

SpringBoot返回文件让前端下载的几种方式

《SpringBoot返回文件让前端下载的几种方式》文章介绍了开发中文件下载的两种常见解决方案,并详细描述了通过后端进行下载的原理和步骤,包括一次性读取到内存和分块写入响应输出流两种方法,此外,还提供... 目录01 背景02 一次性读取到内存,通过响应输出流输出到前端02 将文件流通过循环写入到响应输出流

SpringBoot+Vue3整合SSE实现实时消息推送功能

《SpringBoot+Vue3整合SSE实现实时消息推送功能》在日常开发中,我们经常需要实现实时消息推送的功能,这篇文章将基于SpringBoot和Vue3来简单实现一个入门级的例子,下面小编就和大... 目录前言先大概介绍下SSE后端实现(SpringBoot)前端实现(vue3)1. 数据类型定义2.

前端Visual Studio Code安装配置教程之下载、汉化、常用组件及基本操作

《前端VisualStudioCode安装配置教程之下载、汉化、常用组件及基本操作》VisualStudioCode是微软推出的一个强大的代码编辑器,功能强大,操作简单便捷,还有着良好的用户界面,... 目录一、Visual Studio Code下载二、汉化三、常用组件1、Auto Rename Tag2

python协程实现高并发的技术详解

《python协程实现高并发的技术详解》协程是实现高并发的一种非常高效的方式,特别适合处理大量I/O操作的场景,本文我们将简单介绍python协程实现高并发的相关方法,需要的小伙伴可以了解下... 目录核心概念与简单示例高并发实践:网络请求协程如何实现高并发:核心技术协作式多任务与事件循环非阻塞I/O与连接

vite搭建vue3项目的搭建步骤

《vite搭建vue3项目的搭建步骤》本文主要介绍了vite搭建vue3项目的搭建步骤,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学... 目录1.确保Nodejs环境2.使用vite-cli工具3.进入项目安装依赖1.确保Nodejs环境

Nginx搭建前端本地预览环境的完整步骤教学

《Nginx搭建前端本地预览环境的完整步骤教学》这篇文章主要为大家详细介绍了Nginx搭建前端本地预览环境的完整步骤教学,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录项目目录结构核心配置文件:nginx.conf脚本化操作:nginx.shnpm 脚本集成总结:对前端的意义很多

前端缓存策略的自解方案全解析

《前端缓存策略的自解方案全解析》缓存从来都是前端的一个痛点,很多前端搞不清楚缓存到底是何物,:本文主要介绍前端缓存的自解方案,文中通过代码介绍的非常详细,需要的朋友可以参考下... 目录一、为什么“清缓存”成了技术圈的梗二、先给缓存“把个脉”:浏览器到底缓存了谁?三、设计思路:把“发版”做成“自愈”四、代码

通过React实现页面的无限滚动效果

《通过React实现页面的无限滚动效果》今天我们来聊聊无限滚动这个现代Web开发中不可或缺的技术,无论你是刷微博、逛知乎还是看脚本,无限滚动都已经渗透到我们日常的浏览体验中,那么,如何优雅地实现它呢?... 目录1. 早期的解决方案2. 交叉观察者:IntersectionObserver2.1 Inter

Vue3视频播放组件 vue3-video-play使用方式

《Vue3视频播放组件vue3-video-play使用方式》vue3-video-play是Vue3的视频播放组件,基于原生video标签开发,支持MP4和HLS流,提供全局/局部引入方式,可监听... 目录一、安装二、全局引入三、局部引入四、基本使用五、事件监听六、播放 HLS 流七、更多功能总结在 v