修正的变换系数的上下文模型
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(红叉显著标志)的上下文模型选择进一步依赖于变换的大小。
上下文相关更新速度依赖的多假设概率估计
二进制算术编码器采用基于两个概率估计 P0 P 0 和 P1 P 1 的多假设概率更新模型,概率估计与每个上下文模型相关联,并且以不同的适应速率进行独立更新:
Pnew0={Pold0+((2k−Pold0)>>Mi),if input is ′1′Pold0−(Pold0>>Mi),if input is ′0′ 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 ′
Pnew1={Pold1+((2k−Pold1)>>8),if input is ′1′Poldj−(Poldj>>8),if input is ′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 ′
其中, Poldj P j o l d 和 Pnewj P j n e w (j=0, 1)分别表示在解码bin之前和之后的概率。变量 Mi M i (值为:4, 5, 6,7)是一个参数,它控制上下文模型的概率更新速度,i为其索引;k表示概率的精度(此处等于15)。二进制算术编码器中的区间细分的概率估计P是两个假设估计的均值:
P=(Poldj+Pnewj)/2 P = ( P j o l d + P j n e w ) / 2
在JEM中,用于控制每个上下文模型的概率更新速度的参数 Mi M i 值:
在编码端,记录与每个上下文模型相关联的编码bins。在一个slice进行编码之后,对于每个i索引的上下文模型,计算使用不同 Mi M i 值(4, 5, 6, 7)的速率成本,并选择速率成本最小的速率。为了简单起见,仅在遇到slice类型和slice级量化参数的新组合时才执行该选择过程。
为每个上下文模型i发送一个1位标志,以指示 Mi M i 是否与默认值4不同。当标志为1时,使用2个比特来指示 Mi M i 是否等于5, 6或7。
上下文模型的初始化
不像在HEVC中使用固定表进行上下文模型初始化的方法,帧间编码slice的上下文模型的初始概率状态可以通过从先前编码的图片状态复制来进行初始化。即,在对每个图片的中心的CTU进行编码之后,所有上下文模型的概率状态被存储用于潜在的用途:作为随后的图片上相应的上下文模型的初始状态。
在JEM中,将每个帧间编码slice的初始状态集是从与当前slice有相同slice类型及slice级QP的先前编码图像存储的状态中复制的。这缺乏损耗鲁棒性,但在当前的JEM方案中用于编码效率实验目的。