熵编码 之 3. Golomb coding

Golomb编码是一种熵编码方法,适用于整数编码,尤其是小整数频繁出现的情况。编码过程通过参数M将输入值分解为商q和余数r,商使用一元编码,余数使用截短的二进制编码。通过调整参数M,实现不同大小的整数以不同长度编码,节省存储空间。本文通过实例展示了不同M值下Golomb编码的过程。
摘要由CSDN通过智能技术生成

Golomb coding主要针对整数进行编码,其基本思想是对较小的数用较短的编码,对于较大的数使用较长的编码。即,达到这样一个效果,假设X为要进行编码的整数,当X趋于较小的取值时,此时的Golomb编码较短。这样可以有效的节省空间。

Golomb coding应用的范围主要是整数,尤其是小整数比较多的情况。

Golomb coding使用一个可调的参数M,将输入的值分为两部分:

q:被M除的结果

r:余数

商使用一元编码(unary coding),商后面紧跟着余数,余数使用截短的二进制编码。当M=1时,Golomb coding等价于一元编码(unary coding)。

假设对正整数X进行Golomb编码,选择参数m,令

b = 2m 

q = INT((X-1)/b)

r = X - qb - 1

这样,X可以被编码为两部分:

第一部分是有q1加上10组成

第二部分为m位二进制数,其值为rr一定小于2m)

 

实例-1m = 0

此时b = 20 = 1

x = 1

q = INT((x-1)/b) = INT((1-1)/1) = 0

r = x - qb - 1 = 1 - 0*1 -1 = 0

x编码为q = 01,加上10,加上m = 0位二进制数r = 0,为:

0

x = 2

q = INT((x-1)/b) = INT((2-1)/1) = 1

r = x - qb - 1 = 2 - 1*1 -1 = 0

x编码为q = 11,加上1

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值