第一个将Palette Mode引入VVC(H.266),阿里云在JVET会议上引起关注
发布日期:2021-09-06 21:40:42 浏览次数:11 分类:技术文章

本文共 3288 字,大约阅读时间需要 10 分钟。

从应用需求出发,帮助标准组织制定出更贴近云端业务需求的标准

视频压缩标准是一个重要且深具挑战的研究方向。从过去的存储到当前的网络带宽,视频标准每一代的更新进步对科技应用都有很大的影响。但同时随着几十年来的发展,视频压缩标准的效率提升也变的越来越困难。为了能够持续推进视频压缩标准的进步,在国际视频标准组织中,各公司的专家通过不断研究和贡献,使得每一代新的标准都能在同样视频质量下达到50%左右的码率降低。可以说现今互联网上能够有这么多影响每一个人生活的视频应用,背后都是因为视频标准组织中这些专家们的付出。

现今视频标准组织主要有三个:

(1) 由ISO/IEC的MPEG和ITU-T的VCEG专家共同组成的JVET,目前正在制定备受瞩目的下一代国际视频编解码标准VVC(未来的H.266)。

(2) 国内的视频标准组织AVS,由中国最强的视频编解码技术专家团队组成,同时该标准也被输出为国际标准IEEE1857。
(3) 世界上第一个由工业界主导并完全不收取专利费用的视频标准组织AOM。

一个视频标准的成功需要具备很多因素:贴近市场需求、先进的技术、以及合理的授权制度。阿里巴巴加入标准会议后,除了贡献技术提案外,更希望从应用需求出发,帮助标准组织制定出更贴近云端业务需求的标准,进而帮助未来标准能在云计算产业顺利落地。阿里云具有最全面的视频应用场景,包含直播、点播、转码、音视频通信、短视频等。不同的应用场景具有不同的需求和技术难点,尤其是随着互联网不断的发展,很多新的应用有与传统视频编解码不一样的需求。阿里云服务众多的互联网客户,希望能够帮助客户将这些需求纳入到标准组织中,使得下一代视频编解码标准在互联网上能有更广泛的应用场景,解决客户实际痛点。

1.屏幕编码的应用与挑战

在现在的互联网应用中,有很多新的应用正在变得越来越重要,如屏幕视频编码。在线上会议中的屏幕共享和共同编辑、线上教育、线上游戏直播、无线投屏以及云端桌面等应用,都需要屏幕视频编码的技术支持。

image

图1: 屏幕视频的例子

屏幕视频和传统自然视频的特性很不相同,因而在压缩上会面临到非常不一样的挑战。图1是两个屏幕视频的例子。在屏幕视频中,因为画面是电脑渲染出来的,所以包含了很多锐利的物体边界,这些锐利边界含有大量的高频成分,传统的编码工具很难达到有效的压缩。同时,人类视觉对这些锐利边界是非常敏感的,轻微失真所造成的模糊就能很容易被使用者感知到。以互联网屏幕共享的应用作为例子,在这类系统(线上教育和线上会议)中很常遇到的挑战是:当使用者在共享屏幕时,可能同时会有摄像头视频和报告屏幕内容的共享,在有限的网络环境下,使用者的带宽是有限的,摄像头视频或许可以透过降低画面品质来提供稳定的服务,但是一旦加大报告屏幕内容的压缩率,失真会马上导致字体的清晰度下降,这样的用户体验是不能容忍的。

此外,在屏幕共享系统设计中,也会有很多挑战:线上会议中,不断会有使用者随机加入会议,一但有使用者加入会议,系统必须要重新编码帧内编码图像作为视频的起始点,同时考虑到屏幕视频中,帧内编码图像和帧间编码图像的码率差距会非常大,这就造成系统中码率控制设计上的困难。另外,由于屏幕图像渲染的特性和屏幕视频系統的互动要求(如线上游戏和云端桌面),屏幕视频往往需要非常高的帧率(大于30fps),这也更增加了系统设计的挑战。

2.屏幕视频编码的历史

屏幕视频编码研究可以追溯到90年代,ITU-T曾提出Mixed Raster Content (MRC)编码标准。它采用分层编码的方式来解决屏幕视频编码的问题。这样的做法需要配合图像分割的技术,因而增加了系统设计的复杂度。相较之下,另一种较简易的做法是如同H.264/AVC和HEVC/H.265一般,采用以区块为基础的编码方式,针对屏幕视频设计新的编码工具。然而在H.264/AVC制定过程中,屏幕视频编码并没有引起足够的重视,当然这也和当时相关的应用没有大规模兴起有关。

在HEVC/H.265 Main Profile中,针对屏幕内容设计了一种新的编码模式:变换跳过模式(Transform Skip)。这个模式就是针对屏幕视频中锐利的物体边界而设计的。这样的内容经过变换后,在频域引入的大量高频信息反而无法得到有效的压缩,因此变换跳过模式是一种简单而有效的解决方法。在Main Profile的算法框架下,并没有引入太多的复杂度。

HEVC/H.265初版定稿后,针对屏幕视频编码制定了一个标准扩展(HEVC SCC Extension)。在这个标准扩展中采纳了更多屏幕视频编码的技术。其中有两个重要的技术分别是:同帧参考(Current Picture Referencing)和调色盘模式(Palette Mode)。

同帧参考在概念上只是单纯的把帧间预测扩展到可以参考当前帧内已经解码的区域。虽然概念非常简单,但是却能有效的降低码率。因为在屏幕视频中常常会出现重复的内容(例如:英文字母),例如图2。这样的内容在同一帧中可以找到很好的预测,能够有效降低码率。

image

图2: 同帧参考

屏幕编码另一个重要的新技术是调色盘模式,这个工具能够有效的描述屏幕视频中主要的颜色,并利用这些颜色来编码像素。特别的是,调色盘模式除了可以增进客观质量外,对主观质量也非常有帮助,如之前所介绍的屏幕视频中对字体边界的锐利度的主观要求就非常严。调色盘模式是一个对压缩字体或锐利物体非常有效的工具。图3是简单举例了调色盘模式,左上角是一个需要压缩的屏幕内容。右上角是屏幕像素的统计图,横轴是像素值,纵轴是像素数量。从统计图中可以看到屏幕内容只有三种主要的颜色:蓝、红和浅蓝。我们可以把这三种主要颜色编码入调色盘(图3右下角),并且给每一个主要颜色一个索引值。然后我们利用这些颜色索引值去描述像素。在解码端,解码器先解出调色盘得到三个主要颜色,然后解出每个像素的颜色索引值,最后利用索引值去找到主要颜色来重建像素。研究发现这样的编码工具对屏幕视频编码相当有帮助。

image

图3: 调色盘(Palette Mode)

3.屏幕视频编码在下一代视频标准中的研究

尽管屏幕编码在过去标准中已经有相关技术支持,但还是有很多技术值得进一步研究。例如:在HEVC SCC定稿后,阿里云视频云高级技术专家睿柯曾经发表过一篇期刊论文,在论文中提出数个技术改进HEVC SCC的调色盘模式和同帧参考,可以在不增加解码复杂度的情况下更进一步降低码率。另外还有一些非常有潜力的研究,例如字串复制(string copy),虽然在上一代标准没有被采纳,但是还是值得继续深入研究。这些技术都有可能为下一代的标准进一步提升屏幕编码的效率。

阿里云在屏幕视频编码技术和应用上有世界领先的团队。由于屏幕视频编码的重要性,阿里云在加入标准组织后,首先积极推动屏幕视频编码的进展。

在今年4月第10次JVET会议时,标准组织成立屏幕视频编码工作组,阿里云担任工作组联席主席。6月中国AVS会议中,阿里云提出提案分析屏幕视频编码的应用需求,引起AVS组织关注,采纳阿里云的提案成为下一代AVS3的需求。7月第11次JVET会议时,阿里云是世界上第一个将Palette Mode引进VVC(未来的H.266)的技术团队,会议中引起广泛关注,JVET标准组织决定成了一个Palette Mode工作组,下次会议专门讨论这个议题,阿里云也担任这个工作组的主席。

随着国际视频标准会议对屏幕编码的关注逐渐增加,相信未来通过各公司专家组的共同努力,下一代标准可以对屏幕编码有更好的技术支持,进而创造出互联网和云端上更多应用,让使用者有更好更方便的体验。

本文作者:睿柯 阿里云视频云高级技术专家

对阿里云视频云技术感兴趣的小伙伴,也可以钉钉扫码加入群聊:

image

活动推荐

12月20日杭州站【云栖TechDay-音视频技术实战沙龙】,多位视频云专家现场解读短视频、直播、视频AI、视频加速技术实践,赢取阿里云公仔及代金券,点击了解活动详情及免费报名:

转载地址:https://blog.csdn.net/weixin_34273479/article/details/89655779 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:实例演示使用RDIFramework.NET 框架的工作流组件进行业务流程的定义—请假申请流程-Web...
下一篇:没有 4.21 ,Linus Torvalds 宣布 Linux 进入 5.0 时代

发表评论

最新留言

网站不错 人气很旺了 加油
[***.192.178.218]2024年04月14日 04时52分48秒

关于作者

    喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!

推荐文章

【大话Mysql面试】-Mysql索引 2019-04-26
【大话Mysql面试】-Mysql锁 2019-04-26
【大话Mysql面试】-Mysql常见面试题目 2019-04-26
08 【多线程高并发】Java线程间通信的方式 2019-04-26
【数据结构与算法】什么是跳表?通俗易懂来理解跳表 2019-04-26
【数据结构与算法】什么是图?图是什么?快速带你回顾图有关的知识点 2019-04-26
【数据结构与算法】什么是串?什么是KMP算法?字符串匹配是什么? 2019-04-26
【数据结构与算法】什么是布隆过滤器?如何防止缓存穿透的问题? 2019-04-26
【Java锁体系】CopyOnWriteArrayList是什么?线程安全的arraylist是哪个? 2019-04-26
【面试题目】Java设计模式你有哪些了解?说几个常用的。 2019-04-26
【计算机操作系统】常说的死锁是什么?死锁产生的必要条件是什么?死锁的解决策略是什么? 2019-04-26
【计算机操作系统】进程管理详解?进程与线程区别是什么?进程调度的算法有哪些?进程通信有哪些? 2019-04-26
【计算机操作系统】虚拟内存是什么?分页系统地址映射?页面置换算法有哪些?分段地址映射又是什么? 2019-04-26
【计算机操作系统】设备管理?磁盘结构是怎么样的?磁盘调度算法有哪些? 2019-04-26
【多线程高并发】为什么要使用多线程?创建多少个线程合适呢? 2019-04-26
【多线程与高并发】 Java两个线程轮流打印1-100两个数?多线程轮流打印数字? 2019-04-26
【多线程与高并发】 Java两个线程轮流打印字符串? 2019-04-26
【Linux命令篇】Linux命令实践 2019-04-26
【Leetcode单调队列】Leetcode239 滑动窗口最大值 2019-04-26
【Leetcode-单调栈】单调栈相关的题目-下一个更大的元素I 每日温度 2019-04-26