格伦布编码

格伦布编码是一种无失真资料压缩方法,由数学家所罗门·格伦布在1960年代提出。

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)。 正数对应(),负数对应()。

算法

  1. 选择整数作为M
  2. 要编码数值N,找出下列式子
    1. 商数: q = int[N/M]
    2. 余数: r = N除以M
  1. 产生整体编码

    1. 编码形式 : < 商数编码 > < 余数编码 >
    2. 商数编码
      1. 写 q长度位元的1
      2. 写一个0位元
    3. 余数编码
      1. 如果M'是2的次方,编码是二进制形式,需要。(Rice 编码)
    1. 如果M'不是2的次方,令b = \lceil\log_2(M)\rceil</math>

      1. If  使用b-1 个位元编码 r.
      2. If  使用b个位元 编码

范例

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

转载于:https://www.cnblogs.com/bonelee/p/6879315.html

格伦布编码——rice编码无非是golomb编码M为2^x的特例相关推荐

  1. python字符编码用什么储存卡_python字符编码

    一 了解字符编码的知识储备 一 计算机基础知识 二 文本编辑器存取文件的原理(nodepad++,pycharm,word) #1.打开编辑器就打开了启动了一个进程,是在内存中的,所以,用编辑器编写的 ...

  2. oracle查看数据库字符编码,oracle 查看、批改字符集编码

    当前位置:我的异常网» 数据库 » oracle 查看.批改字符集编码 oracle 查看.批改字符集编码 www.myexceptions.net  网友分享于:2013-07-19  浏览:3次 ...

  3. jsp java乱码转换_Java Web 编码问题一:jsp的编码问题

    首先我们来看一张由eclipse生成的jsp文件的头: 图1:JSP文件编码 如上图所示jsp中的三个编码, ①代表的是服务器响应客户端请求的编码方式.服务器会用它来设置http响应头的content ...

  4. 可逼近信道容量编码技术之霍夫曼编码的实现

    可逼近信道容量编码技术之霍夫曼编码的实现 简介 在当今信息爆炸时代,如何采用有效的数据压缩技术来节省数据文件的存储空间和计算机网络的传送时间已越来越引起人们的重视.哈夫曼编码正是一种应用广泛且非常有效 ...

  5. python可以处理任何字符编码文本_python数据类型、字符编码、文件处理

    介绍: 1.什么是数据? 例:x=10,10是我们要存储的数据 2.为何数据要分不同的类型? 数据是用来表示状态的,不同的状态用不同的类型的数据去表示 1.数据类型 1.数字(整形,长整形,浮点型,复 ...

  6. 以太坊智能合约函数参数ABI编码,动态类型string编码,函数参数的ABI编码, 含c++代码

    官方文档讲得不全也不是很清楚,特别是动态类型string.这里补充. 以太坊的智能合约ABI编码,官方文档和说明:https://solidity.readthedocs.io/en/v0.6.8/a ...

  7. No Code的世界绝无代码!GitHub CEO:编码的未来根本就没有编码

    点击上方"AI遇见机器学习",选择"星标"公众号 重磅干货,第一时间送达 [导读]近年来,无代码开发日渐流行.非专业的人员现在也能够参与到开发中了!越来越多的企 ...

  8. Verilog中状态机编码方式的选择:二进制编码(Binary)、格雷码(Gray-code)编码、独热码(One-hot)编码

    一般的,在Verilog中最常用的编码方式有二进制编码(Binary).格雷码(Gray-code)编码.独热码(One-hot)编码. 二进制码和格雷码是压缩状态编码. 若使用格雷编码,则相邻状态转 ...

  9. java web编码详解_java web 开发 编码问题详解

    java web 开发 编码问题详解 浏览器 IE/FireFox ------------->Servlet容器-------------------------->显示页面 编码   ...

最新文章

  1. Java 泛型 T,E,K,V,?,傻傻分不清?
  2. Mars 算法实践——人脸识别
  3. ajax async:false不管用_js 网络请求框架 ajax和axios、fetch的区别
  4. matlab工作区保留或者清除部分变量
  5. react设置默认props
  6. 为什么这么忙,还依然做不好事情?
  7. oracle19c连接MySQL_oracle19c的安装和使用navicat连接oracle数据库
  8. HDOJ(HDU) 2186 悼念512汶川大地震遇难同胞——一定要记住我爱你
  9. 计算机无法安装新字体,如何解决XP系统中无法安装新字体
  10. 戴个美瞳却患上了角膜炎和干眼症?
  11. 员工辞职的真正原因:更想远离这样的领导,而不是这家公司
  12. 记录12306项目抢票成功的经历:CentOS7环境
  13. ElasticSerach 出现 high disk watermark [90%] exceeded on
  14. Opencv测量图片中的物体大小
  15. 未来十年人工智能和机器学习,主要造就了哪些新职位?
  16. Fiddle抓包工具使用
  17. ZZNUOJ_C语言1024:计算字母序号(完整代码)
  18. GNVM版本下载太慢用淘宝镜像速度提百倍哈
  19. 木马逆名欺骗:利用unicode控制符RLO
  20. 找到了腾讯云代金券两个领取入口(太值了)

热门文章

  1. python基础知识笔记简书_Python基础学习笔记
  2. 及时输出_如何降低开关电源输出纹波和噪声
  3. vissim跟驰模型_VISSIM是什么工具?你对VISSIM了解多少?
  4. c#获取父类_C#——父类中的this的指向,及用反射获取当前类所在的Type | 学步园...
  5. 触摸屏中文软件_八招轻松搞定西门子软件安装!
  6. 虚拟机ubuntu搭建ftp服务器配置,虚拟机VMware15 Ubuntu18.04 搭建FTP服务器
  7. jfinal linux 乱码,分享JFinal中renderFile方法中文文件名乱码问题的解决办法
  8. mysql的表最多可设置多少字段?
  9. Linux权限管理(基本权限、默认权限、
  10. mysql的模糊查询以及时间类型整理