Cabac

CABAC
Context-based Adaptive Binary Arithmetic Coding 基于自适应二元算术编码


算术编码是一种常用的变字长编码,对出现概率大的符号赋予短码,对概率小的符号赋予长码;它和 Huffman 编码最大的区别在于它不是使用整数码;
算术编码是把各符号出现的概率表示在单位概率[0,1]区间之中,区间的宽度代表概率值的大小。符号出现的概率越大对应于区间愈宽,可用较短码字表示;符号出现概率越小对应于区间愈窄,需要较长码字表示;


CABAC分为三个部份,Binarizer,ContextModeler和ArithmeticCodingEngine。
CABAC的设计概念,对于发生机率>0.5的事件有效地编码,改进了传统霍夫曼编码法需要大量的乘法运算的问题,而在效能与压缩效率上取得相当大的改善空间。
CABAC的生命周期是slice,CABAC与UVLC最大的不同点在于其编码方式具有适应性(adaptive),对于编码过程中各个符号(symbol)出现的机率会一直动态地去统计并更新。


CABAC编码之所以能取得很高的压缩比,是因为:a)根据每一个语法元素的上下文来选取预测模型;b)使用本地的统计数据来估计概率;c)使用算术编码而不是变长编码


编码一个符号需要经过下面几步
1.CABAC使用的算术编码是基于二进制的算术编码,因此非二进制形式的编码首先要转化为二进制的形式表示
2.“上下文模型”是指对二值化后的符号中的bit位进行编码时使用的概率模型,一种regular coding mode 另一种为 bypass coding mode.。概率模型与最近编码的符号相关,会有多个概率模型可供选择。对于每个bit,编码器选择一个合适的概率模型,并通过相邻元素的信息来优化这个概率模型
3.算术编码。算术编码器根据第2步选择的概率模型对每个bit进行编码。需要注意的是每个bit的子范围只有两个数:0和1
4.更新预测模型。根据实际编码的值来更新所选择的预测模型。例如,如果所编码的二进制bit为1,则预测模型中的1计数要增加。


CABAC 不支持 Baseline 以及 Extended profiles.
CABAC论文:http://iphome.hhi.de/marpe/download/cabac_ieee03.pdf


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值