Golomb编码详解

Golomb编码是针对具有指数衰减概率分布输入的非负的整数编码,计算上比霍夫曼编码还要简单。

给定一个非负整数n和一个正整数除数m,Golomb编码是floor(n/m)的一元编码和mod(n, m)的二进制表示的一个合并,假设这样的Golomb表示为G(n,m),则G(n,m)构建如下:

  1.形成 q = floor(n,m)的一元编码,q的一元编码为q个1紧跟着一个0;

  2.令k=ceil(log2(m)), c=2^k-m, r=mod(n,m),并计算截取的余数r’,例如,使其满足

                      r’= r截短至k-1比特(0<=r<c) or  r+c截短至k比特(其他)

  3.连接1和2中的结果。

例如,计算G(9,4),floor(9,4)=2,得到二的的一元码为110,然后令,k=ceil(log2(4))=2, c=4-4=0, r=mod(9,4)=1, 这样我们可知截取1的两比特01,最后合并就是 11001。

从Golomb编码衍生出来的Golomb-Rice编码:

  对于m=2^k这种情况下,所有的n,r’都截短为k比特。这种将产生Golomb编码所要求的除法变成二进制移位操作和计算上更简单的编码就是Golomb-Rice编码。其实就是把m的值取一些比较特殊的值,这些值是2的幂次方,这样的话,一个非负整数除以它,就是对这个整数进行二进制的移位操作。

Golomb编码只能用于非负整数,并且Golomb码的选择有很多,这种情况下关键的一步是对m的选择。Golomb主要应用与具有几何概率分布的数据的编码,这种情况下的编码压缩比最好。

转载于:https://www.cnblogs.com/renyu310/p/6028119.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值