H.266 JEM7.0 熵编码

修正的变换系数的上下文模型

HEVC中,一个编码块的变换系数采用非重叠系数组(CGs)进行编码,每个CG包括编码块的4x4块的系数。一个编码块的CGs,以及一个CG内的变换系数,是根据先定义的扫描顺序编码的。一个CG变换系数级别的编码至少有一个非零变换系数,且可能被划分为多个扫描通道。第一个通道,编码第一个bin(用bin0表示,即significant_coeff_flag,表示系数的大小大于0)。第二,上下文编码第二个和第三个bin的两个扫描通道(bin1和bin2,分别为coeff_abs_greater1_flag 以及coeff_abs_greater2_flag)。最后,如果需要,还有两个编码系数级别符号信息及保留值(即coeff_abs_level_remaining)的扫描通道被调用。仅在前三个扫描通道中的bins以常规模式编码,并且这些bins在下面描述中被称为常规bins。

JEM中,常规bins的上下文模型有修改。当编码第i个扫描通道的bin i(i=0,1,2)时,上下文索引依赖于由本地模板覆盖的邻域中先前编码系数的第i个bin的值。更具体地,上下文索引是基于相邻系数的第i个bin的和来确定的。如图所示,本地模板包含多达五个空间相邻变换系数,其中x表示当前变换系数的位置,而xi(i为0到4)表示其五个邻居。为了捕获不同频率上变换系数的特性,可以将一个编码块分割成多达三个区域,且分割方法是固定的,而不考虑编码块大小。例如,当编码亮度变换系数bin0时,如图,将一个编码块分成三个颜色不同的区域,并列出了分配给每个区域的上下文索引。亮度和色度分量以类似的方式处理,但具有不同的上下文模型集。此外,亮度分量bin0(红叉显著标志)的上下文模型选择进一步依赖于变换的大小。
这里写图片描述

上下文相关更新速度依赖的多假设概率估计

二进制算术编码器采用基于两个概率估计 P 0 P 1 的多假设概率更新模型,概率估计与每个上下文模型相关联,并且以不同的适应速率进行独立更新:

P 0 n e w = { P 0 o l d + ( ( 2 k P 0 o l d ) >> M i ) , i f   i n p u t   i s   1 P 0 o l d ( P 0 o l d >> M i ) , i f   i n p u t   i s   0

P 1 n e w = { P 1 o l d + ( ( 2 k P 1 o l d ) >> 8 ) , i f   i n p u t   i s   1 P j o l d ( P j o l d >> 8 ) , i f   i n p u t   i s   0

其中, P j o l d P j n e w (j=0, 1)分别表示在解码bin之前和之后的概率。变量 M i (值为:4, 5, 6,7)是一个参数,它控制上下文模型的概率更新速度,i为其索引;k表示概率的精度(此处等于15)。二进制算术编码器中的区间细分的概率估计P是两个假设估计的均值:

P = ( P j o l d + P j n e w ) / 2

在JEM中,用于控制每个上下文模型的概率更新速度的参数 M i 值:

  • 在编码端,记录与每个上下文模型相关联的编码bins。在一个slice进行编码之后,对于每个i索引的上下文模型,计算使用不同 M i 值(4, 5, 6, 7)的速率成本,并选择速率成本最小的速率。为了简单起见,仅在遇到slice类型和slice级量化参数的新组合时才执行该选择过程。

  • 为每个上下文模型i发送一个1位标志,以指示 M i 是否与默认值4不同。当标志为1时,使用2个比特来指示 M i 是否等于5, 6或7。

上下文模型的初始化

不像在HEVC中使用固定表进行上下文模型初始化的方法,可以通过从先前编码的图片复制状态来初始化用于帧间编码slice的上下文模型的初始概率状态。即,在对每个图片的中心的CTU进行编码之后,所有上下文模型的概率状态被存储用于潜在的用途:作为随后的图片上相应的上下文模型的初始状态。
在JEM中,将每个帧间编码slice的初始状态集是从与当前slice有相同slice类型及slice级QP的先前编码图像存储的状态中复制的。这缺乏损耗鲁棒性,但在当前的JEM方案中用于编码效率实验目的。

猜你喜欢

转载自blog.csdn.net/yolo_life/article/details/81384918
今日推荐