格伦布编码——rice编码无非是golomb编码M为2^x的特例
格伦布编码
Rice编码
Robert F. Rice提出Rice 编码,是以哥伦布编码为基础做改良而更简易的前置码。Rice编码可视为适应性编码的一种或是哥伦布编码的特例之一。哥伦布编码有一个可调整参数,可以是任一正整数。而Rice编码则是此调整参数为2的次方情况时。这让Rice编码在电脑运算上快速许多,因为电脑上是已二进制运算为主。 Rice编码是一种熵编码技术,可用在影像及图像压缩上。
编码的建立
哥伦布编码使用可调整参数把输入值分成两部分: 商数
, 除以
的结果及余数
。 商数当做一元编码而余数放在后面做为可缩短的二进制编码。当
哥伦布编码等同于一元编码。
哥伦布-Ric编码可想成用bin(q) 指示位置而bin (r)代表偏移。上述图片显现使用哥伦布-Ric对整数 N编码,另有位置q、偏移r、参数M。 而这两部分如下式表达,是要被编码的数字。
and
最后偏码结果:
是变化的位元数,在Rice编码
则只有b位元数,而在哥伦布编码,
会是b-1或b bits. 假设
. 如果
,则用b-1 位元数编码r. 相反的,如果
,用b位元数编码r'. 当M 是2的次方时,
,则所有的r值都是b个位元.
参数M是伯努利试验函数,其中. M则是中位数或中位数+/-1,如下式:
M愈大愈难抓取
.
哥伦布编码在分布上跟霍夫曼编码有相同概率。
使用记号整数
哥伦布原本是用来编码非负整数,但也可改良用来编码任意整数,利用重新排列数值使正整数排在特定的位置。例如一串数字0, -1, 1, -2, 2, -3, 3, -4, 4 ... ,-n排在nth奇数(2n-1),而mth正数排在mth偶数(2m)。 正数对应(
),负数对应(
)。
算法
- 选择整数作为M
- 要编码数值N,找出下列式子
- 商数: q = int[N/M]
- 余数: r = N除以M
- 产生整体编码
- 编码形式 : < 商数编码 > < 余数编码 >
- 商数编码
- 写 q长度位元的1
- 写一个0位元
- 余数编码
- 如果M'是2的次方,编码是二进制形式,需要
。(Rice 编码)
- 如果M'是2的次方,编码是二进制形式,需要
- 如果M'不是2的次方,令b = \lceil\log_2(M)\rceil</math>
- If
使用b-1 个位元编码 r.
- If
使用b个位元 编码
- If
- 如果M'不是2的次方,令b = \lceil\log_2(M)\rceil</math>
范例
设M = 10. 则 .
当选42作为编码时,42会被拆成q=4及r=2,从上表中为q(4),r(2),编码为11110,010,实际上不需要逗号去分隔两部分,因为商数编码最后的0能代表 余数编码的起始位置。
参考:http://www.wikiwand.com/zh-sg/%E6%A0%BC%E5%80%AB%E5%B8%83%E7%B7%A8%E7%A2%BC
格伦布编码——rice编码无非是golomb编码M为2^x的特例的更多相关文章
- H264所采用的指数格伦布熵编码算法原理及应用
1 指数格伦布熵编码算法原理 1.1 无符号整数k阶指数格伦布算法编码过程: 1) 将数字以二进制形式写出,去掉最低的k个比特位,之后加1 2) 计算留下的比特数,将此数减一,即是需要增加的前导零个数 ...
- 【转】关于URL编码/javascript/js url 编码/url的三个js编码函数
来源:http://www.cnblogs.com/huzi007/p/4174519.html 关于URL编码/javascript/js url 编码/url的三个js编码函数escape(),e ...
- unicode可以通过编码(encode)成为特定编码的str
1.原始字符串python中的原始字符串以r开头,使用原始字符串可以避免字符串中转义字符带来的问题,例如写路径时 path = 'c:\noway',此时用 print path,其结果为:c:owa ...
- 关于URL编码/javascript/js url 编码/url的三个js编码函数
关于URL编码/javascript/js url 编码/url的三个js编码函数escape(),encodeURI(),encodeURIComponent() 本文为您讲述关于js(javasc ...
- openssl ans.1编码规则分析及证书密钥编码方式
1 数据编码格式 openssl的数据编码规则是基于ans.1的,ans.1是什么 ? 先上高大上的解释 ASN.1(Abstract Syntax Notation One), 是一种结构化的描述语 ...
- 拨开字符编码的迷雾--MySQL数据库字符编码
拨开字符编码迷雾系列文章链接: 拨开字符编码的迷雾--字符编码概述 拨开字符编码的迷雾--编译器如何处理文件编码 拨开字符编码的迷雾--字符编码转换 拨开字符编码的迷雾--MySQL数据库字符编码 1 ...
- 关于JAVA字符编码:Unicode,ISO-8859-1,GBK,UTF-8编码及相互转换
我们最初学习计算机的时候,都学过ASCII编码. 但是为了表示各种各样的语言,在计算机技术的发展过程中,逐渐出现了很多不同标准的编码格式, 重要的有Unicode.UTF.ISO-8859-1和中国人 ...
- Java 字符编码(一)Unicode 字符编码
Java 字符编码(一)Unicode 字符编码 Unicode(http://www.unicode.org/versions/#TUS_Latest_Version) 是一个编码方案,说白了希望给 ...
- 编码(1)学点编码知识又不会死:Unicode的流言终结者和编码大揭秘
学点编码知识又不会死:Unicode的流言终结者和编码大揭秘 http://www.freebuf.com/articles/web/25623.html 如果你是一个生活在2003年的程序员,却不了 ...
随机推荐
- Android项目实战_手机安全卫士splash界面
- 根据代码的类型组织包结构 1. 界面 com.hb.mobilesafe.activities 2. 服务 com.hb.mobilesafe.services 3. 业务逻辑 com.hb.mo ...
- win32窗口映射(部分)
先理解一下“窗口”与“视区”的概念.“窗口”是逻辑坐标下的矩形区域,“视区”是设备坐标系下的区域.根据“窗口”和“视区”的大小可以确定x方向和y方向的比例因子. 例子如下: VOID OnPaint( ...
- 【技术累积】【点】【java】【26】@Value默认值
@Value 该注解可以把配置文件中的值赋给属性 @Value("${shit.config}") private String shit; 要在xml文件中设置扫描包+place ...
- pptp服务故障
pptp服务故障记录 原文地址:http://www.cnblogs.com/caoguo/p/4994512.html 1.pptp部署是遇到开了防火墙端口不能拨号,拨号是提示错误如下: 但是关闭防 ...
- element ui 日期控件范围时间限制记录、以及计算两个日期之间的天数
日期的筛选经常会有最小的日期选择,例如:当前日期 :clearable="false" :picker-options="pickerOptions0" val ...
- python SQLALchemy连接数据库。
一.ORM与SQLALchemy简介 ORM 全程object Relational Mapping,对象关系映射.简单的说,ORM将数据库中的表与面向对象中的类建立了一种对应关系.这样在操作数据库时 ...
- (ccf)201703-3markdown
#include<iostream> #include<memory.h> #include<stack> #include<string> #incl ...
- 使用androidstudio 分析内存泄漏
分析内存泄漏 http://www.jianshu.com/p/c49f778e7acf
- 【Codeforces 446A】DZY Loves Sequences
[链接] 我是链接,点我呀:) [题意] 让你找一段连续的区间 使得这一段区间最多修改一个数字就能变成严格上升的区间. 问你这个区间的最长长度 [题解] dp[0][i]表示以i为结尾的最长严格上升长 ...
- 【[Offer收割]编程练习赛13 B】最大子矩阵(自己的思路)
[题目链接]:http://hihocoder.com/contest/offers13/problem/2 [题意] [题解] 算出1..250*250这些数字每个数字的所有因子(成对的那种,即x* ...