指数哥伦布编码 java_H.264学习笔记6——指数哥伦布编码

一、哥伦布码

哥伦布码就是将编码对象分能成等间隔的若干区间(Group),每个Group有一个索引值:Group Id。

》对于Group Id采用二元码编码;

》对于Group内的编码对象采用定长码。

如下图:

939630015ea4b7f81edfa397ba9130c9.png

对于编码对象n:  n = q * m + r = low(n/m) * m + r。其中q = low(n/m),表示取下整,对应是Group Id; 余数r对应是Group内编码对象。

例如:对于m=5的哥伦布编码如下表

ae0b45daa306b3766a660eae021ad08a.png

二、指数哥伦布码

对于哥伦布码,编码对象分成等间隔区间。而对于指数,编码区间长度是按照指数增长的,如下图:同样

》组号采用二元码编码

》组内编码对象采用定长码编码

601c16fdceebadc0bb2df77f8e0a0860.png

编码结果如下:

10a373f26f7f38aff7251d59949b4be5.png

三、K阶指数哥伦布码

在H.264中,使用CABAC需要进行二值化处理,而指数哥伦布编码就是CABAC的一种二值化处理的方法。k阶指数哥伦布编解码具体过程如下:

A、编码过程:假设待编码数字为CodeNum(必须非负整数)

指数哥伦布编码后的形式为[MZeors][1][Info],MZero表示M个0。

1、将CodeNum以二进制形式表示(若不足k位,前面补0),去掉后面k位(若刚好是k位,去掉k位后得0),将结果(数值)加1,得到二进制数T1;

2、M为二进制数T1的二进制位数减一;

3、然后将第一步中舍去的k位接到T1结尾,就得到[1][Info]。

设[Info]的二进制位数为I,编码过程也可以如下描述:

[1 Info] 是CodeNum+2^k的二进制表示,MZeros中0的个数M = I - k。

于是就有总的编码长度CodeLen = M + 1 + I =2M+k+1。

B、解码过程:

1、读入连续0,连续0的个数就是M;

2、计算CodeLen = 2M+k+1,得到[1 Info]的位数是 I=CodeLen - M =M+K+1;

3、读入I位二进制码字,转换成10进制,假设为W。由W = CodeNum + 2^k,得CodeNum = W-2^K。

C、示例:

对于 k =0时:CodeNum=3。编码如下:

二进制表示为11,去掉k=0位后加1得100;

所以M=2;

所以编码后结果为[MZeros][1][Info] = [MZeros][1 Info] = 00100

解码如下:

读入连续2个0,所以M=2;CodeLen=2M+1+k=5;所以需要再读入3个码流100,[1 Info]就是100,转成十进制结果W为4,所以CodeNum = W-2^K=4-1=3;

同样对于k=0,CodeNum=6时,编码为:00111;

同样对于k=3,CodeNum=3时,编码为:1011;

同样对于k=3,CodeNum=6时,编码为:1110;

同样对于k=3,CodeNum=10时,编码为:010010;

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值