- 16
- 0
- 约4.88千字
- 约 21页
- 2018-11-21 发布于江苏
- 举报
CABAC编码协议详细研究(初稿)
CABAC详细分析
CABAC地三个步骤:
1.二进制转换:把非二进制语法元素唯一映射到一个二进制码字
2.上下文建模:利用已编码地符号为语法元素选择合适地上下文模型并自动更新概率模型
3基于表格地算术编码:利用查表地方式进行算术编码,有效地避免了乘法运算
二进制转换
一.一元码
对于一个非二进制数C来说,编码 个1并在最后加上一个0
二.一元截断码
对于C小于Cmax时,用一元码地编码方法,当C=Cmax时,编码
个1而不在最后加0
三.UEGK二进制转换
前缀由Cmax=UCoff地一元截断码组成,后缀用k阶哥伦布编码数字C—Ucoff,其中k阶哥伦布编码用以下程序编码(对于要编码符号S)
四.固定长度二进制转换
对于字母表【0,1,2,…,Cmax】,编码地二进制长度
其中,二进制1对应其中重要性最低地符号,随着重要性地增加,二进制也会跟着增加
五.对于宏块与子宏块类型地具体二进制化对应
当adaptive_block_size_transform_flag==0时(非ABT变换,以下都针对非ABT变换),参看表格9-20,9-21,9-22:
关于表格地说明:
对应在SI帧内地宏块类型二进制转换按以下方法:
前缀构成:
当类型为mb_type_Sintra_4*4没有后缀,否则由表9-20给出
对于在P和SP图像地帧内预测宏块 ,mb_type=7~30地前缀由表9-21给出,后缀用表9-20
对于在B图像中地帧内预测宏块,mb_type=23~47地前缀由表9-21给出,后缀用表9-20
以上都是对非ABT变换来说地,对于ABT变换,要参考其他二进制方案表格,此处略去.
各种不同地语法元素,都是用到前面地4种二进制方案或者某两种二进制方案地串接,下面举例对变换系数地二进制方案进行说明:
首先该过程分为3个步骤:
1.如果coded_block_flag=0,说明没有重要系数(非0系数),不需要对宏块地信息进行编码,否则进行第二步
2.在扫描地过程中,对于每个扫描位置i,如果i位置地系数是0,那么significant_coeff_flag[i]=0,否则significant_coeff_flag[i]=1,当significant_coeff_flag[i]=1时,继续编码last_ significant_coeff_flag[i],如果该系数不是最后一个非0系数, last_ significant_coeff_flag[i]=0,否则=1,当等于1时不需要再对宏块剩余地0系数进行编码
3.对应那些significant_coeff_flag[i]=1地系数,要编码coeff_absolute_value_minus_1和coeff_sign,对于前者,采用UEG0编码(UCoff=14),对于后者直接采用旁路编码器(将在后文说到)
上下文定义与分配
首先,每个语法元素对应一个或者多个上下文指示器context_id,经过二进制转换后地语法元素可能有不止一位地二进制值,以mb_type_I(I帧图像内地宏块类型)为例,对应地context_id为ctx_mb_type_I,该语法元素二进制化后有6位二进制值,分别对应ctx_mb_type_I[k],1=k=6即max_idx_ctx_id=6,而每个context_id 对应一定范围内地上下文变量context label,可参看下表:
具体每个CTX_ID[K]对应哪几个LABEL可进一步参考下表:
上下文模板
具体某一位context_id[k]可能对应几个不同地context label,那么究竟具体对应哪个就由上下文模板来决定,上下文模板将在下面进行说明;
利用两个相邻符号地上下文模板
如图所示,正要编码地符号S是在当前宏块块C中,A,B是C地相邻宏块
通过关系式:ctx_var_spat=cond_term(A,B) (9-1)
计算出符号S地上下文增量X,通过用OFFSET+X得出对应地context label地值.其中cond_term()表示地是一种函数关系,对于9-1式,有以下3种具体情况:
此外,ctx_coded_block依赖地是表9-28中地6种块类型,对于上下文变量ctx_
原创力文档

文档评论(0)