h264算数编码CABAC

CABAC(Context-Adaptive Binary Arithmetic Coding)是H264编码标准中的算术编码方法,用于提高压缩效率。其包括二进制化、上下文建模和码流输出三个阶段。二进制化通过不同转换方式将非二进制数据转为比特流;上下文建模采用概率模型和上下文关联,动态更新概率估计;码流输出则根据概率区间实时输出码字,确保编码效率。CABAC利用概率模型和上下文建模,尤其在连续出现相同符号时,实现高效压缩。
摘要由CSDN通过智能技术生成

由三个部分组成:

一. 二进制化 (主要是将非二制的各语法元素转换成二进制的比特序列,也可以称为对输入流的预编码,经它编码后的输出是MPS概率极高的比特流。)

MPS(高概率符号0或1) 、LPS(低概率符号1 或0)

在算术编码流程中必须的记录状态为:

L 当前区间的下限

R 当前区间的大小长度

Binval 当前字符,即二进制的符号1或0

各字符的概率Px

当前处理的字符为MPS时,区间递进只是子区间的长度发生了改变,而作为影响实际输出值的L却没有发生改变,这个现象意味着如果输入流中连续出现大量的MPS,或者MPS相对LPS出现的概率比较高时, 可以达到极高的压缩效果,编码输出的码率也更接近熵率。

四种转换方式: Unary Binarization(U) ; Truncated unary binarization(TU); Kth order Exp_golomb binarization (UEGK); Fixed_length binarization (FL)

二. 上下文建模

为基本的CABAC 编码过程 , 一种regular coding mode 另一种为 bypass coding mode.

只有regular coding mode 应用了上下文模型,而直通模式用于加速编码流程,当概率近似为50%的时候。这部分主要说明regular coding mode的进程。这里,先说理论,再讲流程。 

理论:  

1,CABAC 算术编码基础

算术编码的复杂度主要体现在概率的估计和更新,

CABAC建立了一个基于查表的概率模型,将0~0.5 划分为64个概率量化值,这些概率对应于LPS字符,而MPS的概率为(1-Plps),概率的估计值被限制在查表内,概率的刷新也是依据于查表。如果当前出现的字符是MPS,则Plps 变小。

划分子区间的乘法运算 R=R x Px

对于这里的乘法运算,CABAC首先建立了一个二维表格,存储预先计算好的乘法结果,表格的入口参数一个来自Px( 对应于theta,概率量化值),另一个来自R(R的量化为:p=(R>>6)&3 ),

流程图:

图中,灰色部分是概率的刷新部分,表TABRangeLPS存储预先计算好的乘法结果,表TransIDxLPS是与对应的概率表。

有三个值是比较特殊的,:

theata=0 时,LPS的概率已达到了最大值0.5,如果下一个出现的是LPS,则此时LPS和MPS的字符交换位置.

Theta=63对应着LPS的最小概率值,但它并没有纳入CABAC的概率估计和更新的范围,这个值被用做特殊场合,传递特殊信息&

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值