博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
H264所采用的指数格伦布熵编码算法原理及应用
阅读量:4598 次
发布时间:2019-06-09

本文共 1649 字,大约阅读时间需要 5 分钟。

1 指数格伦布熵编码算法原理

1.1 无符号整数k阶指数格伦布算法编码过程:

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

  2) 计算留下的比特数,将此数减一,即是需要增加的前导零个数
  3) 将第一步中去掉的最低k个比特位补回比特串尾部

  例子(1阶指数格伦布算法编码整数9):

  第1步以符号a0表示整数9: a0 = 9;

  第2步将整数9转化为二进制格式表示并以符号a1表示:  a1 = 1001;

  第3步去掉最低1个比特位并保存到符号r0中,剩余部分记作a2:r0 = 1; a2 = 100

  第4步将a2加1并记录为a3:a3 = 101

  第5步a3有3个比特位,减1等于2,所以补2个前导0,以符号a4表示为:a4 = 00101

  第6步将r0中的比特位补到a4的比特位的后面,以符号a5表示: a5 = 001011

  这样无符号整数9最后被编码为001011

1.2 无符号整数k阶指数格伦布算法解码过程:

      解析k阶指数哥伦布码时,首先从比特流的当前位置开始寻找第一个非零比特leadingZeroBits,然后根据公式计算出code_num的值:

  code_num = 2^(leadingZeroBits + k) - 2^k + values;

  其中,values为第一个非零比特其后的(leadingZeroBits + k)个比特的值。

      例子(1阶指数格伦布算法解码001011):leadingZeroBits=2;values=011b=3;code_num=2^3-2^1+3=9

 

2 H264用到的4种指数哥伦布编码算法

   ue(v):无符号指数哥伦布熵编码算法

   se(v):有符号指数哥伦布熵编码算法

   te(v):截断的指数哥伦布熵编码算法

   me(v):映射的指数哥伦布熵编码算法

 注:H264只用了0阶指数哥伦布编码算法,由于其阶数为0所以其有更简化的算解码算法,(针对的是ue即无符号整数)简述如下:

  1)编码算法:将待编码的无符号整数加1,然后转化为二进制表示,计算其二进制位数,然后在前面补二进制位数减1个前缀0,举例:1编码为010,5编码为00110

  2)解码算法:code_num = 2^(leadingZeroBits) - 1 + values,举例:010解码为2^1-1+0=1,00110解码为2^2-1+2=5

  3) 0阶指数哥伦布编码算法即ue(v)编解码过程。

3 se(v)

  1) 编码时先将有符号待编码值转化为无符号待编码值,然后无符号待编码值按ue(v)编码规则编码,其中有符号待编码值转化为无符号待编码值规则为:如果有符号待编码值为正数则乘以2-1,否则直接乘以2以其决对值。举例:-3转化为6,4转化为7

  2)解码时,先用ue(v)解码规则解码,然后将ue(v)输出值记为k,测解码后的有附号解码值为:(–1)k+1 ceil( k÷2 )

4 te(v)

  1) te(v) 只适合非负整数编解码

  2) 编码时先判断待编码值的取值范围的上限,如果大于1,则用ue(v)规则直接编码,否则如果待编码值为1编码后的值为0,如果待编码的值为0则编码后的值为1

  3)解码时先判断待编码值的取值范围的上限,如果大于1,则用ue(v)规则直接解码,否则如果待解码值为1解码后的值为0,如果待解码的值为0则解码后的值为1

5  me(v)

  1) 在H264中用于编码语法元素coded_block_pattern

  2) 编解码时的映射规则参见H264标准9.1.2

 

总结:H264中采用0阶指数哥伦布编解码算法,其本身即ue(v),其它se(v),te(v),me(v),都是结合其身的规则处理后调用ue(v)完成最终的编解码任务。

转载于:https://www.cnblogs.com/oldmanlv/p/5961926.html

你可能感兴趣的文章
C++的new、delete需要注意的一点:使用危险函数导致的越界
查看>>
js执行过程
查看>>
Laravel5.1学习笔记15 数据库1 数据库使用入门
查看>>
nodejs express搭建一个网站整理
查看>>
POJ 2373 Dividing the Path(DP + 单调队列)
查看>>
(转)3ds Max 和 Away3D工作流程
查看>>
STL: distance, unique
查看>>
[Markdown] 03 进阶语法 第一弹
查看>>
使用HashMap编写一程序实现存储某班级学生信息
查看>>
Mvc多级Views目录 asp.net mvc4 路由重写及 修改view 的寻找视图的规则
查看>>
spring整合redis
查看>>
GitLab Runner and CICD
查看>>
【XSY2721】求和 杜教筛
查看>>
常见的SQL优化面试题
查看>>
angular在IE9中的坑
查看>>
[leetcode]35.Search Insert Position
查看>>
xshell鼠标文本设置
查看>>
java中连接各种数据的方法
查看>>
移动端网页头部标签模板
查看>>
每日一练3
查看>>