H 1264 AVC 标准中的CABAC 应用研究于培松,郭宝龙(西安电子科技大学机电工程学院I C IE 研究所 陕西西安 710071)摘 要:H 1264 AV C 是由国际电信联盟(ITU )和国际标准化组织(ISO )共同制定的新一代视频编码标准。
他的熵编码方案采纳了基于上下文的自适应二进制算术编码(CABA C )。
CABA C 是一种高效的熵编码,他利用上下文建模来降低符号间的冗余度,并且能够自适应码流的统计信息,获得很高的编码效率。
深入研究了CABA C 中的二进制化、上下文建模和自适应二进制算术编码器,并进行了相应的试验。
实验结果表明:在相同的图像质量下,CABA C 和CAVL C 相比节省6%~15%的码率。
关键词:CABA C ;算术编码;上下文建模;H 1264 AV C中图分类号:TN 91918 文献标识码:B 文章编号:1004373X (2005)0700504Appl ica tion Research of CABAC i n the H 1264 AVC StandardYU Peisong ,GUO Bao long(I C IE Institute ,Schoo l of E lectro M echanical Engineering ,X idian U niversity ,X i ′an ,710071,Ch ina )Abs tra c t :T he em erging H 1264 AV C video coding standard is developed co llabo ratively by the ITU T and ISO IEC 1Its designa 2ti on of en tropy coding adop ts Con tex t based A dap tive B inary A rithm etic Coding (CABA C )1CABA C is a h igh ly efficien t en tropy cod 2ing ,w h ich u tilizes con tex t modeling to reduce the redundancy betw een sym bo ls 1CABA C can adap t itself to the statistics of video stream ,and gain s h igh ly efficien t of coding 1T h is paper deep ly studies b inarizati on ,con tex t modeling and adap tive b inary arithm etic coder of CABA C ,and the co rresponding experi m en t has been perfo rm ed 1T he experi m en t indicates that CABA C saves 6%~15%b it rate than Con tex t A dap tive V ariab le L ength Coding (CAVL C )w ith the sam e quality of i m age 1Ke yw o rds :CABA C ;arithm etic coding ;con tex t modeling ;H 1264 AV C收稿日期:20041226基金项目:高等学校青年教师资助计划(2003)1 引 言H 1264 AV C[1~3]是由国际电信联盟(ITU )和国际标准化组织(ISO )共同制定的新一代视频编码标准。
国际电信联盟称之为H 1264,国际标准化组织称之为AV C (A d 2vanced V ideo Coding )。
该标准采用了一系列先进的编码技术,在编码效率、网络适应性等诸多方面都超越了以往的视频编码标准。
他有两个熵编码方案:一个是从可变长编码发展而来的上下文自适应可变长编码(CAVL C );另一个是从算术编码发展而来的基于上下文的自适应二进制算术编码(CABA C )。
经常采用的变长编码(VL C ),对出现频率高的符号用短码字表示,对出现频率低的符号用长码字表示,采用固定的码表,码表根据对各种不同视频源的统计得到。
可变长编码的优点是容易实现,编码速度快。
缺点有以下几个方面:(1)自适应性差。
因为可变长编码采用固定码表,而视频源的统计特性是不稳定的,随着图像的内容改变。
(2)没有利用编码符号的上下文相关性。
(3)最小编码位是1位,对于概率大于015的编码符号,编码效率降低。
基于上下文的自适应二进制算术编码[4](CABA C )充分利用视频流的上下文信息,对不同的视频流能够自适应,克服了可变长编码的缺点,且算术编码在实际应用中的计算精度和计算复杂度,提高了编码效率。
基于以上的优点,CABA C 被H 1264标准采纳,成为H 1264中两个熵编码方案之一。
2 CABAC 的主要特点CABA C 充分考虑和利用了视频流统计特性,克服了VL C 编码中的缺点,充分利用了视频流的上下文信息,并且能够自适应视频流的统计信息,提高了编码效率,主要有以下优点:(1)上下文建模利用相邻的编码符号的相关性,利用已编码符号为待编码符号选择合适的上下文模型,上下文模型提供了对当前待编码符号的概率估计。
利用上下文信息可以降低符号间的冗余度。
5(2)自适应特性这一特性保证上下文模型能够自适应视频流。
对于不同的视频流,其编码符号的概率不同。
这就要求上下文模型跟踪视频流的统计信息,这样上下文模型提供的概率估计才能和实际的统计概率相吻合。
(3)二进制算术编码算术编码是一种递推形式的连续编码,他用非整数比特表示符号。
H 1264通过二进制化把多维算术编码转化为二进制算术编码,提高了运算速度。
CABA C 编码流程如图1所示,主要有3部分:语法元素二进制化、上下文建模和自适应二进制算术编码器。
编码过程:如果输入的语法元素是非二进制的语法元素则进行二进制化,二进制的语法元素跳过这一过程。
二进制字符串进入编码器,可以进行快速编码,直接进入旁路编码器,以固定的概率模型进行编码;通常是根据语法元素的类型选择上下文,然后二进制值和选择的上下文模型一起进入编码器,输出编码码流,并且根据编码符号更新上下文模型。
图1 CABA C 流程图3 语法元素二进制化语法元素二进制化就是把非二进制的符号映射成若干位的二进制串。
在视频编码中要成功应用上下文建模和自适应算术编码,必须满足2个条件:(1)快速和准确地进行条件概率估计。
(2)每个元素的概率估计和接下来的算术编码的计算复杂度必须保持最小。
为了满足这2个条件,CABA C 引入了二进制化预处理过程来减小要编码的语法元素符号集的大小,对于给定的语法元素用一个惟一的中间二元码子代替,成为二进制串。
这个方法的优点是有利于建模和实现。
在H 1264中,CABA C 二进制化方案由基本方案和串接方案组成。
基本方案有一元码、截断一元码、K 阶指数哥伦布码和定长码4种,串接方案由基本方案串接而成。
不同的二进制化方案适用于不同类型的语法元素。
对于数值变化范围比较大的残差数据用K 阶指数哥伦布码表示,对于简单的符号标志元素用定长码表示。
CABA C 绝大部分的映射码表通过简单的在线计算得到,不需要存储,节省内存,这也是CABA C 的优点之一。
语法元素二进制化有以下3个好处:(1)在二进制化的时候没有信息丢失,由于单个符号(非二元的)的概率可以用二进制串的每一个二进制位的概率来恢复。
(2)提高了运算速度。
通过二进制化把多维算术编码转化为二进制算术编码。
(3)二进制化使上下文建模在一个子符号层次上。
通过二进制化,编码符号变成0和1。
4 上下文建模[5]编码符号具有上下文相关性,利用已编码符号提供的上下文信息,为编码符号选择合适的概率,这就是上下文建模。
利用上下文信息可以降低符号间的冗余度,进一步提高编码效率。
在H 1264中通过索引选择的方法利用上下文信息。
首先建立以概率模型为变量的上下文集合,上下文变量按线性排列,每一个变量用索引值来表示,然后为每一个语法元素分配上下文变量,最后,通过编码符号的上下文信息选择上下文变量。
411 概率模型在H 1264中用64个有代表性的概率值来表示L PS(L east P robability Sym bo l )的概率。
这64个概率值通过下式产生:p Ρ=Α p Ρ-1 Ρ=1,2,…,63(1)Α=0101875015163, 且p 0=015(2) 由p Ρ和Ξ组成概率模型,Ξ为M PS (M o st P robabilitySym bo l )取“0”或“1”,所以概率状态空间总共有128个状态。
412 上下文变量上下文变量由2个变量组成,分别为概率的索引值和M PS 的值。
实际上上下文变量就是初始值的概率模型变量,初始值由训练序列得到。
上下文集合由下式表示。
(ΡΧ,ΞΧ) 0≤Χ≤398(3) 其中Χ为上下文变量的索引值,Ρ表示概率的索引值,Ξ表示M PS 的值上下文变量分配的索引值如表1所示,从表中可以看出,简单的标志语法元素(如m b _sk i p _flag )分配的上下文变量较少,变化范围较大的残差数据(如cod 2ed _block _flag )分配较多的上下文变量。
413 上下文变量的选择在H 1264中,每一个语法元素有几个上下文变量,CABA C 中的编码符号是二进制化后的二进制串。
上下文变量的分配方式:有些二进制位分配固定的上下文变量,其他的二进制位根据上下文信息选择上下文变量。
上下文信息有4种类型:(1)和当前编码块相邻的已编码块的信息,一般利用当前块的左边和上边相邻块。
(2)利用同一语法元素中已经编码的二进制值为当前编码的二进制值选择上下文模型。
(3)根据当前编码语法元素在编码块的之字行扫描位置。
(4)根据当前块已经编码的残差数据个数。
类型(3),(4)用于残差数据。
表1 ctx Idx分类表语法元素片断类型S I I P SP Bm b_type0 3~1014~2027~35 m b_sk i p_flag11~1324~26sub_m b_type21~2336~69m vd(ho rizontal)40~4640~46m vd(vertical)47~5347~53 ref_idx54~5954~59 m b_qp_delta_60~6360~6360~63 intra_ch rom a_p red_mode64~6764~6764~67 p rev_intra4x4_p red_mode_flag686868 rem_intra4x4_p red_mode696969 m b_field_decoding_flag70~7270~7270~72 coded_block_pattern77~8477~8477~84coded_block_flag85~10485~10485~104significant_coeff_flag[]105~165105~165105~165 277~337277~337277~337last_significant_coeff_flag[]166~266166~266166~266 338~398338~398338~398coeff_abs_level_m inus1[]227~275227~275227~275 end_of_slice_flag276276276下面以宏块类型(m b_type)举例说明:m b_type为P_8×8(由4个8×8子块组成的P帧宏块)的时候,二进制化后为“001”共3位,分别用b0,b1, b2表示。