zoukankan      html  css  js  c++  java
  • 无符号整数指数哥伦布码编码

    H 264 无符号整数指数哥伦布码编码

    指数哥伦布码(Exponential-Golomb code, 即Exp-Golomb code)压缩编码方法过程:

    用来表示非负整数的k阶指数哥伦布码可用如下步骤生成:

    1. 将数字以二进制形式写出,去掉最低的k个比特位,之后加1

    2. 计算留下的比特数,将此数减一,即是需要增加的前导零个数

    3.将第一步中去掉的最低k个比特位补回比特串尾部

    比特串格式为“前缀1后缀”。1)1后缀=codeNum+1,如codeNum = 3,则1后缀=4,即为100,后缀为00;2)前缀与后缀的比特数相同,且前缀的各位比特为0,

    下例为对不同codeNum进行的编码结果:

    0 => 1 => 1

    1 => 10 => 010

    2 => 11 => 011

    3 => 100 => 00100

    4 => 101 => 00101

    5 => 110 => 00110

    6 => 111 => 00111

    7 => 1000 => 0001000

    8 => 1001 => 0001001

    与此相反,这些语法元素的解析过程是由比特流当前位置比特开始读取,包括非0 比特,直至leading_bits 的数量为0。具体过程如下所示:

    leadingZeroBits = ?1;
    for( b = 0; !b; leadingZeroBits++ )
    b = read_bits( 1 )
    变量codeNum 按照如下方式赋值:
    codeNum = 2leadingZeroBits ? 1 + read_bits( leadingZeroBits )
    这里read_bits( leadingZeroBits )的返回值使用高位在先的二进制无符号整数表示。

    如下示例:

    二进制比特数 长度 解析值

    1001 1 0

    001 1001 5 5

    01 1010 3 2

    010 3 1

    000 1011 7 10

    0001 001 7 8

    更详尽的说明如下:

    -------------------------------------------------------------------------------------------------
    无符号整数指数哥伦布码编码的算法如下:
    M=floor(log2(codeNum+1));
    INFO=codeNum+1–2^M;
    编码格式如下:
    [Mzeros][1][INFO]。其包括前缀码和信息位两部分,前缀码由M比特的0和一个比特1组成,信息INFO的编码长度为M比特。因此每个Exp_golomb码字的数据长度是(2M+1)。
    例如:如果codeNum=7,则M=floor(log2(7+1))=3,INFO=codeNum+1–2^M=7+1-2^M=0.
    前缀码为0001。信息INFO为0,因为是3比特,所以写为000.
    最终码为:0001000.
    将0~9的编码情况列举如下:
    0=>1
    1=>010
    2=>011
    3=>00100
    4=>00101
    5=>00110
    6=>00111
    7=>0001000
    8=>0001001
    9=>0001010

     
  • 相关阅读:
    C# int类型的GetProperty的PropertyType返回的是Int32,无法通过typeof(int)或者typeof(Int32)进行比较
    MVC5 Authentication身份认证
    java各个类型判断为空
    table固定列宽,每列超出部分用...代替,鼠标悬停显示全部内容
    web前后台数据交互的四种方式(转)
    List<Map<String,String>>操作(遍历,比较)
    JavaScript实现简单的打印功能
    Expected one result (or null) to be returned by selectOne(), but found: 2
    Eclipse Code Template 设置自动加注释(转)
    highcharts动态获取数据生成图表问题
  • 原文地址:https://www.cnblogs.com/shakin/p/3714856.html
Copyright © 2011-2022 走看看