论文部分内容阅读
在视频压缩标准中,熵编码模块在信源符号的压缩和码流的组织过程有着不可替代的作用。熵编码模块首先利用上下文建模技术来挖掘信源符号之间的统计冗余;然后使用熵编码引擎(算术编码技术或者变长编码技术)来去除统计冗余,进而产生紧凑的二进制码流,以供存储和传输。熵编码模块通常利用已经编码的符号来估计待编码符号的概率分布,从而能够高效地去除信源符号之间的冗余信息。然而,这种编码依赖关系却不利于熵编码模块的并行处理,降低了吞吐率。因此,如何平衡熵编码模块的编码效率和数据吞吐率已经成为衡量熵编码技术优劣的重要性能指标。随着高画质视频的逐步普及,未来的视频压缩标准将要处理数据量更加庞大的视频,因此继续提高熵编码模块的压缩效率仍然具有很重要的意义。为了克服外界条件的限制,在目前最新的多媒体应用中,压缩感知技术正在被应用于采集数字图像/视频。当采用压缩感知技术对图像/视频进行采集时,得到的测量值(通常用测量值表示利用压缩感知采样得到的样本信息)和传统的图像/视频采集方法得到的像素值在本质上是不同的。测量值通常是利用随机高斯矩阵对原始信号进行投影操作而得到的,每个测量值都包含了原始信号的全局信息,并且各个测量值之间是相互独立的。所以,传统的图像/视频压缩标准技术不再适用于测量值的压缩。如何充分挖掘测量值的统计特性为其设计一个高效的熵编码器是测量值压缩中的一个新的挑战问题。所以,在这种研究背景下,本文对H.264/AVC,HEVC和AVS2等视频压缩标准中的熵编码模块进行优化,来提高熵编码模块的压缩效率和数据吞吐率;另外,本文也为压缩感知中测量值的压缩设计了一个高效的熵编码器,来把测量值转化为紧凑的二进制码流,实现真正的数据压缩。因此,本文的研究工作主要包括以下四个部分:第一,在H.264/AVC的上下文自适应二进制算术编码器(CABAC)的设计过程中,由于没有充分地考虑吞吐率这一指标,使得熵编码模块已经成为整个解码器的主要瓶颈之一。为了提高H.264/AVC中CABAC的吞吐率,本文首先根据预测残差的DCT系数的统计特性,提出了一个层次依赖上下文模型HDCM(Hierarchical Dependency Context Model)。在HDCM中,DCT系数块中的非零系数的个数和DCT系数的频域位置被用作为上下文,来挖掘DCT系数之间的统计冗余。然后,本文提出了一个基于层次依赖上下文模型的二进制算术编码器hdcmbac来编码h.264/avc中的预测残差的dct系数。为了高效地描述dct系数块,并且降低语法元素之间的上下文依赖关系,hdcmbac重新设计了用于描述dct系数块的语法元素。这些语法元素包括,dct系数块中非零系数的个数n,用于指示每个位置上的dct系数是否为非零系数的语法元素significant_flag和用于指示每个非零dct系数的幅值的语法元素coeff_abs_level_minus1。实验结果表明,与h.264/avc中的cabac相比,hdcmbac可以取得相似的编码效率,并且最大限度地降低了dct系数之间的上下文依赖关系。第二,为了继续提高视频编码标准中熵编码模块的编码效率和为下一代视频编码标准的制定做技术储备,本文以hevc为基础,提出了一个内存消耗小并且编码效率高的熵编码方案,该方案包括变换系数的增强上下文建模方法和低内存消耗的二进制算术编码引擎。在变换系数的增强上下文建模方法中,本文采用当前变换系数的局部模板内非零变换系数的个数和当前变换系数的位置信息作为significant_coeff_flag(用于指示当前的变换系数是否为非零系数的语法元素)的上下文;为了减少significant_coeff_flag的上下文模型的个数,变换系数块被分割为不同的区域,并且相同区域使用相同的上下文模型集合。在编码coeff_abs_greater1_flag(用于指示当前的非零变换系数的绝对值是否大于1的语法元素)时,本文采用当前变换系数的局部模板内绝对值等于1和绝对值大于1的变换系数的个数作为其上下文;为了利用亮度分量中变换系数与其位置之间的相关性,变换系数的位置信息也被用作coeff_abs_greater1_flag的上下文。在编码语法元素coeff_abs_greater2_flag(用于指示当前的非零变换系数的绝对值是否大于2的语法元素)时,本文采用当前变换系数的局部模板内绝对值大于2和绝对值大于1的变换系数的个数作为该语法元素的上下文。在低内存消耗的二进制算术编码引擎中,本文采用多参数的概率估计模型估计二进制符号的概率;在编码区间的分割过程中,本文提出了一个低位宽的乘法操作来代替传统的查表操作。如此设计之后,低内存消耗的二进制算术编码引擎在概率估计过程和编码区间分割过程中均不再需要大量的存储空间。实验结果表明,与hevc中原始的熵编码方案相比,本文提出的熵编码方案具有更高的编码效率。第三,在第二代中国国家视频压缩标准avs2中,熵编码模块中存在着很强的顺序依赖关系,这些顺序依赖关系严重地制约着avs2编解码器的吞吐率。这些顺序依赖关系主要来源于算术编码引擎的归一化过程和bypassbin(概率等于0.5的二进制符号)的编码过程以及变换系数的上下文建模过程。因此,本文从上述三个方面对AVS2的熵编码模块进行优化设计。具体来讲,本文首先提出了一种快速的,与标准兼容的算术编码引擎归一化方法。该方法简化了算术编码引擎的执行流程,减少调用归一化过程的次数。其次,本文提出了一个快速的bypass bin的编解码过程,使得bypass bin的编解码过程仅仅需要移位和加法操作即可完成,极大地降低了bypass bin的编解码复杂度。最后,本文改进了AVS2中变换系数的编码过程,降低变换系数之间的上下文依赖关系。实验结果表明,上述三个技术大幅度地提高AVS2中熵编码模块的吞吐率,同时性能损失也比较小。第四,在图像的压缩感知采样中,为了提高测量值的压缩性能,差分脉冲预测(DPCM:Differential Pulse-Code Modulation)和均匀标量量化(SQ:uniform Scalar Quantization)被联合应用于测量值的压缩中。尽管如此,若想真正地实现测量值的压缩,即把测量值转化为紧凑的二进制码流,熵编码模块是一个必不可少的模块。为此,本文基于图像的差分脉冲预测和标量量化框架(DPCM-plus-SQ),为测量值的量化索引提出了一个高效的熵编码方案。在该熵编码方案中,本文分析了测量值的量化索引的统计特性,并且根据这些统计特性设计了相应地语法元素来描述测量值的量化索引。具体来说,本文首先使用语法元素significant_map来指示当前测量值的量化索引是否为非零;然后,对于非零的量化索引,使用语法元素abs_coeff_level_minus1和sign_flag来分别指示它的幅值和符号。为了挖掘这些语法元素的局部统计特性,本文采用自适应的算术编码引擎来编码这些语法元素,以期望去除它们的统计冗余从而产生紧凑的码流。实验结果表明,与测量值量化索引的0阶信息熵和H.264/AVC中CABAC的变换系数编码方法相比,本文提出的熵编码方案能够进一步提高测量值的编码效率。