格伦布编码——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年的程序员,却不了 ...
随机推荐
- 移动web——媒体查询
基本概念 响应式开发在没有媒体查询前,也可以通过js来实现,但是人们基本不会考虑,特别繁琐.在出现了媒体查询,才开始逐渐推广响应式.实际开发中,在时间与金钱充足的情况下还是别做响应式,影响性能,维护麻 ...
- (三)Python 学习第三天--GUI桌面项目
(代码参考了别人的代码,只做学习用途!!!最近因为写论文,好久没有记录,好内疚...今天学习了一个小案例,做一下) 主要使用模块:tkinter 代码如下: from tkinter import * ...
- CNN结构:色彩空间建模-色彩空间分析
原文: 色彩空间基础 好一个NB的知乎专栏:色彩空间基础 第一章:色彩空间基础 关于色彩分析,引出了专门的数学基础.整个过程给出了完备的数学阐述,虽然没有试验数据,论述的相当精彩. 摘抄出一段: 上 ...
- Centos6.6 安装nfs网络文件系统
一.介绍 nfs网络文件系统的,大部分用在内网文件共享,比如,对集群上传文件做共享,经常用在图片部分,当然数据量大了还是要做分离,做为专门的接口比较好,介绍一下基本安装环境: 1)Cnetos6.6 ...
- day07补充-数据类型总结及拷贝
目录 数据类型总结 按照存一个值 OR 多个值来分 按照有序 OR 无序来分 按照可变 OR 不可变来分 拷贝 && 浅拷贝 && 深拷贝&& .cop ...
- IntelliJ IDEA之windows下载安装、卸载
系统要求 系统支持:Microsoft Windows 8 / 7 / Vista / 2003 / XP(每个系统版本的 32 位和 64 位都可以) JDK 版本:Oracle JDK 1.6 或 ...
- Burnside引理和polay计数 poj2409 Let it Bead
题目描述 "Let it Bead" company is located upstairs at 700 Cannery Row in Monterey, CA. As you ...
- js for 循环 添加tr td 算法
StringBuffer sb=new StringBuffer(); int n = 5; sb.append("<tr>"); List<MenuBean&g ...
- tensorflow的数据输入
tensorflow有两种数据输入方法,比较简单的一种是使用feed_dict,这种方法在画graph的时候使用placeholder来站位,在真正run的时候通过feed字典把真实的输入传进去.比较 ...
- 【codeforces 509A】Maximum in Table
[题目链接]:http://codeforces.com/contest/509/problem/A [题意] 给你一个递推式f[i][j] = f[i-1][j]+f[i][j-1]; 让你求f[i ...