zoukankan      html  css  js  c++  java
  • 【Codecs】CABAC深入分析与理解

    ### Date:2018.4.9

    =======================================================

    算术编码的本质是为整个输入序列分配一个码字。

    1、浮点算术编码:

    步骤:1、编码器在开始时将“当前区间”设为[0,1];

               2、对每一事件,按照a,b进行处理:

                   a)编码器将当前区间分为子区间,每个事件一个;

                   b)一个子区间的大小与下一个将出现的事件的概率成比例,编码器选择子区间与下一个确切发生的事件相对应,并使其成为新的当前区间。

                   c)最后输出当前区间的下边界就是该给定事件序列的算术编码。

    2、定点算术编码:

         在浮点算法中区间范围为[0,1),在定点算法中区间范围由寄存器位数而定。以32位寄存器为例,在定点算法中low=0x00000000 , high=0x11111111。由于寄存器位数的限制,可以假设在限制的位数以后还存在着无数个后缀,low后面有无数个0,high后面有无数个1。

          由浮点算法可以得到规律:

    1.low逐步递增;

    2.high逐步递减

    3. high > low

        所以在定点算法过程中,low的最高为1或者high的最高位为0时,在以后的编码中最高位都不会变。当low和high的最高位相同的时候,已经不会影响精度,可以直接移出寄存器,同时在低位补0(low)或者补1(high)。注意:由于high>low,当low的最高位为1的时候,high的最高为必定为1;当high的最高位为0时,low的最高位必定为0。

    3、深入分析和理解

    在此就不重复造轮子了,详细分析可以参考:https://blog.csdn.net/shakingwaves/article/details/52426244




    本文为博主原创文章,未经博主允许不得转载。若允许转载,请注明来源https://www.cnblogs.com/SoaringLee/,否则保留追究法律责任的权利!另外,本人提供付费咨询服务并长期承接各类毕设以及外包项目。联系QQ:2963033731。加Q备注:CSDN外包
  • 相关阅读:
    利用Expression实现DbReader到对象属性的绑定
    致多年后第一次更新
    阿拉伯数字转换成中文大写
    Android程序的入口点是什么,不是Main()吗
    imageButton 和button的区别
    对象和引用的区别
    hdu 4455 Substrings
    Running Rabbits
    ZOJ Problem Set
    几乎就是并查集 (Almost Union-Find,UVa 11987)
  • 原文地址:https://www.cnblogs.com/SoaringLee/p/10532511.html
Copyright © 2011-2022 走看看