摘要:
熵编码技术是视频编码系统中的核心技术。视频编码系统中,熵编码所完成的功能是去除数据的统计冗余。本文给出了一种高效的用于视频编码中预测残差系数编码的变长熵编码方法。熵编码技术主要分为两类,变长编码(Variable Length Coding)以及算术编码(Arithmetic Coding)。算术编码利用编码符号的联合概率,并且其机制更易于概率匹配,因此编码效率高。以往视频编码标准如H.263定义了可选择的算术编码器,新近的H.264/AVC标准也采用了高效的算术编码方法CABAC。虽然算术编码器的编码效率高,但由于其实现复杂代价高,这限制了其广泛应用。变长编码实现简单、计算复杂性低,因此在视频编码标准及消费电子产品中被广泛采用。如H.261/MPEG-2标准的2D-VLC熵编码器,H.263/MPEG-4标准的3D-VLC熵编码器,以及新近H.264/AVC标准中的CAVLC熵编码器。经典变长编码器2D-VLC及3D-VLC的实施方式是采用通过全局统计而得到的单一码表对残差系数块进行编码,其根本缺点是,单一码表不能很好的适应块系数局部统计特性的变化,因此编码效率不高。CAVLC熵编码器采用上下文技术挖掘块内系数的相关性,获得了较高的编码效率,但其设计来源于对4x4块进行编码。本文的设计目标是利用上下文信息提高变长编码器的编码效率,并综合考虑计算实现复杂度等方面因素,为AVS提供一个高效低复杂度的编码8x8残差系数的变长熵编码方案。预测残差系数经变换量化后表现出低频子带系数的幅值通常大于高频子带系数的幅值,这一规律是一种有效的上下文信息可以用来提高编码效率。残差系数经Zig-zag扫描后形成(Run, Level)数对序列,则这一规律进而表现为,从后向前观察这个序列,Level幅值具有递增的趋势,而Run的值有递减的趋势,并且一个有较大Level值的(Run, Level)数对其Run值通常较小,这也就是说在序列编码的不同阶段(Run, Level)的局部概率分布是不一样的。基于这些统计规律,本文的变长编码器采用如下设计:1) 采用2D-VLC编码挖掘Run,Level之间的相关性;2) 采用多个2D-VLC码表匹配(Run, Level)的局部概率分布;3) 用Level幅值的递增识别局部概率分布的变化,即利用Level幅值进行码表的自动切换;4) 采用具有规则结构的Exp-Golomb码降低多码表的存储空间。本文的基于上下文的变长编码方法C2DVLC获得了更高的编码效率,相比于MPEG-2的2D-VLC熵编码器,在一些典型的高清/标清测试序列上,编码效率平均提高0.34dB,与H.264的CAVLC相比,编码效率相当。编码效率的提高来源于多码表匹配了局部概率分布的变化,并且码表的自动切换省去了编码Side Information信息的额外开销。同时,C2DVLC具有低计算复杂度、低实现复杂度的特点。这来源于Exp-Golomb码的采用使得码表存储的是一种映射关系而非真实的Huffman码从而降低了码表的存储空间,以及简单的上下文建模方式,即多码表自适应切换编码避免了模型参数的动态估计等。