本文基于一篇介绍基于扫描区域的变换系数编码技术的论文。该技术是视频编码标准AVS3-phase2在熵编码模块系数编码部分所采取的一种新技术。
接下来主要以上这四个方面介绍这篇文章。第一部分是背景介绍。第二部分是AVS2和HEVC系数编码过程的介绍。第三部分是AVS3系数编码过程的介绍。第四部分是该论文的实验结果。最后本文对这些标准以及VVC标准的系数编码过程做了一个简单的对比。
AVS标准是我国拥有自主知识产权的音视频编解码标准。2006年发布的第一代AVS国家标准主要面向高清数字电视广播,第一代AVS国家标准的增强版本AVS+发布于2012年。2016年发布的AVS2国家标准主要面向4K超高清应用,压缩效率与国际同期HEVC/H.265相当。最新制定完成并发布的AVS3标准主要面向8K超高清视频 (UHD) 电视广播和虚拟现实 (VR) 等新兴应用场景。
AVS标准中的AEC(熵编码)模块主要有三部分组成:划分、二值化、算术编码。
AVS3-phase2相较于上一代增加了很多新工具,SRCC(基于扫描区域的系数编码技术)就是其中一种。
AVS3相较于以往编码标准的区别可由这四个图展示出来。一是对于编码单元有更灵活的划分。二是在帧内模式下可采用单变换块或拆分变换块模式。三是在帧间模式下,引入了基于位置的变换 (PBT) 和子块变换 (SBT) 来改进对部分残差块应用不同的变换核,提高残差编码效率。
在为一个编码单元确定TB模式后,将发出一个编码块标志 (CBF) 来指示TB是否具有非零系数。如果一个TB包含非零系数,那么会有残差编码过程来编码每个非零系数在TB中的位置和值。这篇文章就描述了用于编码该信息的方案。该方案被称为基于扫描区域的系数编码 (SRCC)。
在HEVC和AVS2中,系数编码主要由以下四部分组成。
1.系数组。从TU的左上角开始的4x4子块中的每一个都是系数组 (CG)。系数扫描和编码是在4×4子块的基础上执行的,并且在大于4×4的TB中有多个4×4 系数组。将一个较大的TB划分为4×4子块的原因之一是为了从两个方面提高CABAC的吞吐量:一是减少用于CG的重要标志的依赖上下文编码bin的数量;另一种是限制每个CG的上下文编码bin的数量,例如HEVC中每个CG最多8个大于1个标志 (GT1flag),最多1个大于2个标志 (GT2标志)。
2. 系数扫描。在HEVC中,4×4 TB中的系数扫描是沿对角线方向进行的。较大TB的扫描模式由CG的对角扫描和每个CG内的对角扫描组成,而AVS2对CG扫描和CG内的系数扫描遵循zig-zag形扫描顺序。除此之外,HEVC中还支持帧内模式相关的水平和垂直扫描,用于规模为4×4和8×8的帧内预测tb块。
3. 最后一个非零系数位置编码。在发送多层层信息前,在HEVC中对扫描顺序中最后一个非零系数的水平坐标位置lastX和lastY进行编码,在AVS2中对每个CG中最后一个非零系数的CG位置和运行级对的最后一个非零系数的位置进行编码。
4. 赋值编码。HEVC使用多层编码,包括有效映射、GT1标志和GT2标志、剩余幅值和符号,而AVS2使用行程编码。HEVC中的重要映射、GT1标志和GT2标志通过上下文建模以常规模式进行编码。上下文建模基于CG中的位置、相邻CG标志和前一次扫描中相应标志的统计信息。HEVC中使用旁路模式编码(哥伦布编码)方式来对剩余幅值信息进行编码(自适应rice参数更新)。AVS2中,如果level小于32,则使用上下文模型使用截断的一元代码以常规模式进行编码。如果大于等于32,则使用Exp-Golomb代码旁路编码。通过基于位置、前一级和内部模式的上下文建模,在常规模式中对运行进行编码。
在AVS3-Baseline初步提案中,对幅值编码过程进行了更新。对于每个非零系数,有四个语法元素,即{run, level}对、符号位和最后一个非零系数标志。最后一个非零系数标志使用last1和last2的两种组合,并使用不同的上下文模型。每个bin的上下文模型的概率是last1和last2的概率的平均值。如果level小于8,则使用截断的一元代码以常规模式进行编码。本例中的上下文建模仅依赖于上一值。如果大于等于8,则使用Exp-Golomb代码旁路编码。如果run小于16,则以常规模式使用截断一元码进行编码。如果大于等于16,则使用Exp-Golomb旁路编码。
在AVS3-pahse2中引入了SRCC技术。首先在系数扫描部分就有很大的区别。SRCC没有使用CG(系数组)概念,并且采取一种反zig-zag型扫描。SRx,SRy表示扫描区域,编码方式与HEVC中lastX,lastY编码类似。
在进行非零标志编码的时候,主要有以上两种特殊情况。上下文索引依赖先前扫描位置的非零系数的数量、扫描区域的面积、扫描区域的相对位置和色度分量(亮度或色度)。详见表1和表2。在进行幅值编码的时候也是分级编码。其上下文索引由之前编码的系数中相应标志的数量、扫描区域的相对位置和色度分量推导而来。详见表3和表4。
这篇文章提出的SRCC系数编码方案集成到AVS3-baseline初步版本参考软件HPM 3.2中。通过与HPM 3.2中的baseline系数编码方案(run-level编码)进行比较,评估AVS3在通用测试条件下的性能。如表5所示,SRCC在AI、RA和LD配置下的bd-rate分别平均优于run-level方法2.84%、1.73%和1.42%。
对于高分辨率序列,编码效率的提升更多,因为使用了更多的大变换块时候扫描区域的限制能带来更多的收益。大部分增益来自于扫描区域的选择和为幅值编码精心选择的上下文模型集。
最后对这些标准以及VVC标准的系数编码过程做了一个简单的对比。HEVC中主要是对角线扫描(帧内模式下支持水平和垂直扫描)。AVS2主要是zig-zag扫描。HEVC和AVS2都采用4x4的系数组。在AVS3中使用SRCC后,抛弃了系数组的概念,在扫描区域内进行反zig-zag扫描。而在VVC中保留系数组概念,但系数组尺寸与变换块尺寸有关。VVC扫描顺序也是反zig-zag扫描。上下文模型的选择具体已经在前文展示,这里就不做详述。
关 注 我 们 
  实验室网站:http://viplab.fudan.edu.cn/
  OpenASIC官方网站:www.openasic.org
  知乎专栏:http://zhuanlan.zhihu.com/viplab
  微信公众号:OpenASIC
继续阅读
阅读原文