查看原文
其他

十分钟读懂HEVC-SCC原理

Haoliang OPPO内核工匠
2024-09-27

一、什么是SCC(屏幕内容编码,Screen Content Coding)


近些年,随着云计算技术和移动互联网技术的迅猛发展,屏幕共享、远程教学、远程视频会议、无线显示等视频应用越趋流行。这些应用中的视频内容与以前常见的摄像机拍摄的内容不同,它还包含有大量的屏幕内容(Screen Content)。与传统的摄像机拍摄内容不同, 屏幕内容中存在着大量的静止或移动的计算机图形和文字,包含大量均匀平坦的区域、大量重复的图案、高饱和度或有限数量的不同颜色值,以及图像序列中数字或字母相同的块或区域,并且不包含传感器噪声。这些与自然内容截然不同的特征使屏幕内容编码技术成为了一个新的富有挑战的问题。然而,一些己有的视频编码标准,如H.265/HEVC(High Efficiency Video Coding)初期版本和更早期开发的H.264/AVC(Advanced Video Coding),都专注于压缩摄像机拍摄的视频序列(Camera-Captured Video)。一些提案的结果表示在HEVC版本基础上加入针对屏幕内容特征设计的编码工具能够显著提高屏幕内容的压缩性能。


二、HEVC-SCC主要手段(tools)及典型收益


国际电信联盟(International Telecommunication Union, ITU) ,国际标准化组织( International Organization For Standardization,ISO) 和国际电工委员会( International Electrotechnical Commission,IEC) 于2016年联合制定了高效视频编码标准( HEVC) 的扩展标准,即HEVC-SCC Extension。


为了提高屏幕内容视频的编码性能,HEVC-SCC增加了四种编码工具:

  1. 帧内块复制( Intra Block Copy,IBC)

  2. 调色板模式( Palette Mode,PLT)

  3. 自适应颜色变换( Adaptive Color Transform,ACT)

  4. 自适应运动矢量分辨率( Adaptive Motion Vector Resolution,AMVR)


这些新的编码工具显著提高了编码效率,但同时也给编码器带来巨大负担。因此必须对他们的收益有清晰的认识,在编码器实际实现过程中做到有选择的使用。


IBC:如下图所示,该tool BD-Rate典型收益为-19.1%(YUV色彩格式+ Text and Graphics with Motion数据集 + Random Access(I/P帧混合编码))


PLT:如下图所示,该tool BD-Rate典型收益为-11.1%(YUV色彩格式+ Text and Graphics with Motion数据集 + Random Access(I/P帧混合编码))


ACT:如下图所示,该tool BD-Rate典型收益为-0.7%(YUV色彩格式+ Text and Graphics with Motion数据集 + Random Access(I/P帧混合编码))


AMVR:如下图所示,该tool BD-Rate典型收益为-1.5%(YUV色彩格式+ Text and Graphics with Motion数据集 + Random Access(I/P帧混合编码))


三、HEVC-SCC主要手段(tools)原理简介


综上所述,后两种工具(ACT & AMVR)对BD-Rate改善十分有限,并且计算量巨大,编码器实际实现过程中,通常不考虑采用。因此,本章节主要阐述前两种工具(IBC & PLT)的实现原理,这两个tool也是各编码器实现普遍采用、学术界也给予大量优化的方案。


IBC(Intra Block Copy,帧内块复制)


IBC是一种类似于帧间预测的编码技术,其设计思路与运动补偿的原理几乎一致,不同的是在IB中,一般在同一图片中选择参考块。早在制定H.264标准的时候,块复制技术已经被提出,但当时的测试序列都是摄像机捕捉的自然图像而不是SC图像,由于自然图像的复杂度较高,空间上相邻的两个块之间的变化往往较大,因此一个块在同一张图片中能有准确的预测器的可能性很低,使得在同一图像内采用块复制技术所获得的编码效率不高。但随着SC视频序列的出现和丰富,使得这项技术有了新的应用方向。与自然图像不同,SC图像在同一图片中像素之间的空间相关性有其独特的相关特征:在同一图片中经常会出现重复的图案和字符。比如我们的电脑桌面、制作的文档、幻灯片等这类文字较多的图像。对这类SC图像,使用帧内图像块补偿非常有效。针对这一SC图像特征,提出了新一代的IBC技术,通过不断地完善和发展,这一技术并最终在HEVC-SCC中被采用。


在IBC中,位移矢量(称为块向量或BV)用于表示从当前块的位置到参考块的位置的相对位移,如下图所示。此外,同一图片中的已重构参考块添加到预测误差中以形成重构的当前块。在该技术中,参考样本对应的是循环滤波器操作之前当前图像的重建样本。


IBC技术从被提出开始,也经历了一系列的完善和发展。IBC技术初次在HEVC Range Extensions(RExt)中提出时,IBC被限制在一个较小的区域内,只用于2NX2N的块并且只有一维(1-D)的BV。即IBC所使用的参考块应必须在当前LCU和左相邻的若干LCU内,并且参考块位于当前CU的正上方或左方,因此搜索的方向只有水平或垂直这两种一维方向。随后,为提高IBC的编码性能,又提出了二维(2-D)的BV。即二维的BV允许参考块位于当前LCU和左侧相邻LCU的任何位置,搜索方向不仅限于水平和垂直,也有可能是斜向的。由于充分利用了可用的参考区域,使用二维BV的IBC能大大提高编码性能。随着进一步深入研究IBC技术的特点,许多新的改进算法被提出,包括新块矢量预测,新块矢量编码和建立改进的HEVC Merge候选集。


最终在HEVC-SCC 中,IBC模式被看作是一种特殊的HEVC的帧间预测模式,只是把当前的重构图像作为参考图像。也就是说,当一个块被当前重构图像本身的参考块补偿时,它采用IBC模式进行编码。同样的算法原理使得HEVC-SCC IBC模式能够借鉴和共享大部分现有的HEVC的帧间模式的设计。


PLT(Palette Mode,调色板模式)


调色板是一种用来表示包含较少不同颜色值的块的有效方法。调色板模式与传统的编码方式不同,不对块进行预测和转换,而是用调色板指针(palette index)来指示每个样本的颜色值。调色板在早期是应用在24 位RGB图像转换为8位图像中,以节省RAM内存或图像存储器的缓存空间。一种新的基于CU的调色板编码模式首先是在HEVC-RExt中提出。随后通过进一步的实验论证和改进,最终被SCC采纳。


调色板实际上指的是一个表格,这个表格包含来自用调色板模式编码的CU中的所有代表颜色值,并且每个条目都由RGB或YCbCr三部分组成。对于CU中的每个颜色值样本,在表中的都会对应一个颜色指针,这些指针会传输到比特流中。在解码端会使用调色板表格和颜色指针来重构CU 每个颜色样本。除了调色板颜色指针外,还有一个特殊的指针,称为逃离指针(escape index),这一指针用以指示那些不属于调色板的逃离颜色样本(escape color),即那些像素数非常少且与调色板内颜色差距较大的颜色样本。在这种情况下,除了对逃离指针进行编码之外,还要对其对应的颜色样本的量化值进行编码。


由于不同CU所包含的颜色种类不同,因此调色板表格也会有不同的大小,其大小等于CU 中代表颜色值的多少。每个颜色条目赋予的指针从“Index 0”开始,到“Index 1”,“Index 2”…… 这样一直排列下去,直到调色板中的所有代表颜色都分配了一个指针。随后才会给逃离颜色分配逃离指针,所以一般逃离指针的值最大,如下图所示。


若对每个CU都重新生成一次调色板,则计算量会非常大,所以当前CU的调色板一般会通过相邻已编码CU的调色板来进行预测。具体地来说,在调色板预测过程中首先会生成一个调色板预测器,预测器中包含了之前已经通过调色板编码后的CU所对应调色板的各项颜色条目。对于调色板预测器中的每项条目,都会启用一个标识来确定对于当前CU的调色板是否重新使用该颜色条目。


调色板预测器不是一成不变的,而是要进行不断地更新。首先在每个条或片的第一个CTU上,调色板预测器都会进行初始化。随后,随着CU不断进行调色板编码并生成调色板表格,总会存在调色板预测器中的颜色条目无法满足当前CU所生成调色板的情况,那么此时会当前调色板中加入新的代表颜色,随后这些新的代表色会被记录在调色板预测器中。这就是调色板预测器的更新过程。


在调色板表格生成并分配完调色板指针之后,会将这些指针映射到原CU中,将CU中与调色板各条目相近的颜色用各颜色条目分配的指针来表示,形成一个调色板指针图。随后会通过水平扫描或垂直扫描的方式对调色板指针图进行扫描,并用COPY_LEFT_MODE和COPY_ABOVE_MODE 两种编码方式对这些指针进行编码。


四、SCC现状总结


  1. SCC作为HEVC标准扩展引入(非标准要求),云侧实现&优化方案已经非常成熟,应用也较广泛。

  2. 手机端侧HEVC-SCC受制于性能&功耗,未广泛引入(骁龙8Gen2,天玑9000)

  3. Google主导的下一代编码协议AV1已将SCC作为标准,手机端侧已经能够高效解码SCC内容,但离生成SCC内容还有较长的一段路要走(tool硬化&功耗优化)。


长按关注内核工匠微信

Linux内核黑科技| 技术文章| 精选教程


继续滑动看下一个
OPPO内核工匠
向上滑动看下一个

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存