IBC+Palette 实现屏幕内容编码优化

在屏幕内容编码中采用IBC+Palette编码技术可显著提升其压缩效率。本文主要介绍了腾讯屏幕内容编码优化技术探索与实践:加入IBC+Palette编码工具集,并针对屏幕内容优化ME模块等。本文由腾讯音视频实验室视频编码技术负责人,王诗涛在LiveVideoStack线上分享中的演讲内容整理而成。

文 / 王诗涛

整理 / LiveVideoStack

直播回放:

https://www2.tutormeetplus.com/v2/render/playback?mode=playback&token=e632113e78b14a2eb10ee64a0f16bd07

大家好,我是来自腾讯音视频实验室的王诗涛。接下来将与大家分享我们在屏幕内容编码优化与技术落地的探索之路。

1. 屏幕内容编码

在开始正式分享之前,首先简单介绍一下屏幕内容编码:屏幕内容图像与传统摄像头采集到的图像存在很大不同,屏幕内容图像是电子设备生成的图像,其直接从各类设备(包括但不限于计算机、移动终端)的图像显示单元捕获;一般情况下屏幕内容图像包括以下几个类型:计算机图形文本、自然图像与图形文本结合的混合图像以及计算机所生成的动画。

随着移动设备与智能终端不断渗透人们的生活,屏幕内容图像在我们的生活中也越来越普遍,无论是桌面协作、云游戏,还是第二屏幕、桌面共享、在线教育等领域都有其十分广泛的应用,那么屏幕内容图像与传统的摄像头所采集的图像究竟有什么区别?

摄像头采集到的图像在通常情况下都包含传感器的噪声,且色调一般连续并具有十分复杂的纹理;而对于屏幕图像,其通常并不包含噪声。这是因为其中很多都是计算机生成的图像,色调离散而颜色数更少;除此之外,屏幕图像的线条更为细腻,边缘也较为锐利;同时大部分屏幕图像的均匀平坦区域较多,重复图案与相同块也较多。传统视频编码方案更多为摄像头采集的自然视频图像设计,多采用预测+变换的混合编码结构。此混合编码结构对于屏幕内容编码的编码效果欠佳。如上图右侧所示,图中的Word文档为计算机生成的屏幕图像,我们可以从图中清晰看到一些区域的文字变得非常模糊,许多细节信息被丢失,同时表格边缘有非常明显振铃效应。由于屏幕图像相对于自然采集而来的摄像头图像有很大的不同。我们希望利用好屏幕图像的这些特有特征从而大幅度提高其编码效率和图像质量。

2. HEVC-SCC技术

HEVC针对屏幕图像编码的做了很多编码工具集的优化,首先简单介绍一下HEVC关于屏幕内容编码的一些主要技术。在HEVC的几个版本中都有一些针对屏幕内容编码的优化技术:例如v1版的HEVC就推出了变换跳过的编码技术,其原理是在编码时自主选择是否跳过频域变换;而HEVC-RExt除了变换跳过,还增加了残差旋转、残差DPCM与交叉分量预测等SCC工具;2016年,HEVC推出第四版HEVC-SCC,该版在之前基础上增加了很多专门针对屏幕内容编码的工具集,包括帧内块拷贝、调色板模式、自适应色彩转换与自适应运动矢量精度等。

接下来简要介绍下这几个工具集:

  • 帧内块拷贝:采用当前帧已重建的块作为预测块,IBC在当前编码图像内做运动补偿;
  • 调色版模式:调色板模式会枚举每个编码块的颜色值生成一个颜色表,并为每个样本传递一个索引以指示它属于颜色表中的哪个颜色;解码端根据规则生成一个颜色表并通过颜色表索引完成样本的重建工作。
  • 自适应颜色转换:将残差自适应转换到不同的颜色空间,一个RGB颜色空间的图像块可以直接编码,也可以在编码时自适应地转换到YCoCg颜色空间以进行编码;
  • 自适应运动矢量分辨率:由于编码过程中屏幕内容图像的运动通常是像素级的,因此我们可以在Slice级控制运动矢量MV的精度。

3. IBC编码与调色版模式

SCC编码工具集能显著提升屏幕内容编码压缩效率,这其中以IBC和调色板对压缩效率的提升最为明显。根据相关资料,对于屏幕内容,IBC可提升30%以上的压缩效率,如果加入调色版模式则可在IBC的基础上再提升15%。接下来我将对IBC和调色板进行详细介绍。

IBC编码是由当前编码图像帧的重建块预测得到的,以上图中的PDF截图为例,由于英文仅由26种英文字符组合而成,我们在编码的时候,很容易在当前I帧画面的已完成编码块中找到同一个英文字符;如果在编码时能够参考这些当前编码图像中已经完成重建的编码块,就能大大提升编码效率。比如,图中最后一行的IB两个字符就可以用它左上角的IB两个字符来做预测,这样预测精度非常高。还有一点,IBC是在PU级进行,我们可以将其视为一个帧间PU,帧间模式的设计让IBC和普通的帧间预测模式能够更灵活的连接起来,比如,一个帧间编码的CU可以有两个PU,一个使用传统的帧间预测,另一个使用IBC。

当然,IBC相对于传统帧间预测也存在许多不同:

  • IBC参考块都是滤波之前的重建像素。
  • 当前图像如果被用于参考,其会被标记为长期参考帧;当整张图像解码完成之后,IBC会对其进行环路滤波然后将当前图像加入到DPB中作为短期参考帧。
  • IBC的预测块不能和当前CU重叠,以防止未重建好的样本被用于预测。
  • 预测块和当前CU应当位于同一个Slice和同一个Tile。
  • IBC的块矢量必须是整像素精度。

除了IBC编码,SCC还有另一个重要工具集,也就是调色板模式(Palette mode)。调色板模式对于颜色数比较少的编码块会有比较好的效果,通常情况下,屏幕内容的颜色数量是有限的,这些颜色就可组成一个颜色集合,也就是一个调色板;随后在解码重建每个像素时,解码器可通过颜色表与索引,从调色板中寻找与对应像素点匹配的颜色从而完成像素重建。如上图右侧所示,图中CU有四种颜色,对每个像素点,编码器在进行编码时会直接从颜色表中寻找此对应的颜色值并直接完成像素重建;当颜色数较少时,绝大部分像素都可通过颜色表实现重建;由于采用颜色索引+颜色表的方式,不需要经过变化量化即可实现像素重建,调色板在显著提升编码效率的同时也降低了复杂度。

虽然一个编码块中的绝大多数颜色都可在颜色表中找到与其最为接近的颜色值,但是有时也会出现颜色表中找不到与编码像素点颜色很匹配的颜色的情况。针对这种情况,调色板模式增加了一种被称为“escape”的模式,此模式会对找不到匹配颜色的编码像素点专门进行反量化操作以完成像素重建,从而解决部分颜色点无法找到匹配颜色值继而导致颜色失真的问题。

上图展示了调色板编码的整体流程图,其中包括以下几大模块:颜色表生成模块、模式判决模块以及直方图计算模块。在进行模式选择时,如果最终编码器选定采用调色板模式,那么颜色表以及编码索引参数会被写入码流并传输到解码端。

4. 腾讯屏幕编码技术解决方案(TSE)

之前我们简单介绍了屏幕内容编码技术与HEVC中关于屏幕内容编码的一些工具集。这些工具集中,帧内块拷贝与调色板编码给屏幕内容编码压缩效率带来的提升最为明显。大部分情况下的屏幕内容编码序列如果采用IBC+Palette模式,其压缩效率相对于H265可实现50%以上的提升。对腾讯而言,腾讯无线投屏、腾讯会议等协同办公产品存在大量的桌面共享类的应用场景,共享的内容以PPT、Word等为主,这些都是非常适合屏幕内容编码的。。如果我们能够采用屏幕内容编码技术,无疑会大幅提升编码压缩效率,提升产品竞争力,所以我们启动了屏幕内容编码的研究与实现。接下来和大家分享一下腾讯屏幕编码技术解决方案的研究成果,我们推出了一个专门针对屏幕内容进行优化的编码器——腾讯屏幕内容编码器(TSE)。

TSE编码器主要是在原有编码器的基础上增加了IBC与Palette两个工具集,并且针对性的做了大量性能优化,其中的几项代表性优化有:

1)基于hash搜索的运动估计:对于IBC的运动估计,采用了基于hash表搜索的优化技术。传统的块匹配方法是基于SAD的,该方法耗时过大,无法满足无线投屏产品对于延时的高要求。我们通过使用基于hash搜索的运动估计方法来代替传统运动估计,采用hash表搜索的方式能够大大减少运动估计所需要搜索点的个数,从而降低运动估计的耗时。根据我们之前的统计,此方法在提升速度的同时,带来的压缩效率的损失基本可以忽略不计。

2)快速高效的颜色表生成算法:调色板编码整体流程中耗时最大的就是颜色表生成模块,SCM参考软件中的颜色表生成算法具有很高的复杂度,编码一帧耗时非常大。我们对颜色表的生成算法进行了大量的简化以达到提速的目的。在提速的同时,我们还需提高调色板效率,因为在进行调色板编码时,编码效率高低主要取决于颜色表生成质量,所以优化颜色表生成算法是其中的一项关键技术点。如何复用前面已生成的颜色表也是调色板编码的一个核心技术点。为了提升编码效率,我们最好复用之前已经生成的颜色表,也就是通过前面已经生成的颜色表来预测当前此颜色表,这样就可大幅度节省颜色表传输所消耗的码字,同时显著提升了调色板编码的效果。

3)高效的查找表算法:当颜色表生成之后,编码器需要去查找颜色表以找到每一个像素点的最接近的颜色,如何快速找到最匹配的颜色也是影响调色板编码性能的关键点之一。如果采用YUV三个变量进行搜索,那么我们需要构建一个2的24次方规模的查找表,这在实际应用中显然是不现实的。所以我们也对查找表算法进行了大幅度优化以降低其对于内存的占用。

4)大量的提前退出算法:我们在编码模式选择上加入了大量的快速算法,比如进行帧内、帧间判决后,根据判决结果以及cost值,决定是否要进行调色板编码+IBC编码的cost计算,这样可以节省大量时间。

5)汇编优化:除了以上优化,我们还对其中许多关键模块进行SIMD优化从而显著提升编码速度。

5. 成果与展望

经过上述一系列优化之后,腾讯TSE编码器的性能相较于X265有了显著提升:上图是二者的压缩效率对比数据,右侧为摄像头采集序列,左侧为LDP模式下的屏幕内容序列。对于屏幕内容序列,TSE编码器的编码效率相较于x265-ultrafast模式有70%的性能提升,相对于x265-medium也有将近55%的压缩性能提升;而观察右侧摄像头采集序列的对比数据,TSE编码器的编码效率相较于x265-ultrafast模式有也有20%左右的压缩性能提升。

上图是二者的压缩效率对比数据:对于屏幕内容序列,不打开IBC和PLT,TSE的平均编码耗时仅为x265-ultrafast的33%左右,而打开IBC和PLT,TSE的平均编码耗时是x265-ultrafast的50%左右。无论是编码速度还是编码效率,TSE的优势都十分明显。

TSE不仅在压缩效率和编码速度方面有优势,同时对主观质量的改善也是非常明显的。下图展示了TSE与x265的主观质量对比:

可以看到在相同码率的条件下,x265编码编码得到的图像中文字周边存在明显的振铃效应,给人眼的直观感受就是图像脏且比较模糊;但采用TSE编码所得图像中文字清晰而锐利,人眼的观看体验明显更加舒适,主观体验明显要好。综上所述,TSE编码器能为编码带来码率节省、速度提升与主观体验优化。

TSE技术现已在腾讯无线投屏与腾讯会议上实现了商用化,但提升用户体验的探索对我们来说是永无止境的。我们期望在未来能研发出更加出色的编码器,在尽可能快的情况下实现更好的压缩质量与效率,从而进一步提升用户体验。

LiveVideoStack 招募

LiveVideoStack正在招募编辑/记者/运营,与全球顶尖多媒及技术专家和LiveVideoStack年轻的伙伴一起,推动多媒体技术生态发展。了解岗位信息请在BOSS直聘上搜索“LiveVideoStack”,或通过微信“Tony_Bao_”与主编包研交流。

原文发布于微信公众号 - LiveVideoStack(livevideostack)

原文发表时间:2019-06-05

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

扫码关注云+社区

领取腾讯云代金券