CABAC 学习(4)概率更新模型分析

本文探讨了CABAC(上下文自适应二进制算术编码)中的概率更新模型,解释了算术编码如何根据信源信号的概率进行更精确的估计,以及在H.264/AVC标准中的实现方式。通过单参数指数平滑法模型,结合状态转移有限状态机(FSM),CABAC能够动态调整概率模型,提高编码效率。概率更新涉及当前状态、bin值以及对应context的valMPS,确保编码过程的适应性和准确性。
摘要由CSDN通过智能技术生成


不知道很多人是不是和我一样有疑惑,那个probability estimation 是干什么用的?

就是在CABAC 的第三步, 算术编码完一个bin, 都要update context model. 

在TEncBinCoderCABAC.cpp中的 encodeBin()函数中调用:

    rcCtxModel.updateLPS();
<pre name="code" class="cpp">    rcCtxModel.updateMPS();

 

这个函数来update context ,其实就是更新概率模型。

算术编码克服了哈夫曼只能为整数的缺点,根据概率更新来更准确估计信源信号出现概率,概率估计越精确,编码效果越好。

这里的概率更新模型是单参数指数平滑法模型, 并以CABAC 定义的64个转换状态为index。这只是概率与index的函数的趋势关系, 参考H.264/AVC中那个经典的概率模型图。

但是在CABAC中, 概率更新FSM却是根据当前状态的概率来计算出新的概率。

每个概率在CABAC中其实是隐含着对应的状态的,比如如果得出概率0.04, 那么对应该的pStateIdx 就是48. 这与当前是LPS 还是MPS无关,就是一个概率对应一个确定的pstaeIdx. 

只不过,标准中简化了对概率这种FP类型的数据的应用,直接实施为状态转移FSM,如果编码完一个bin之后, 当前的state是知道

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值