一、哥伦布码

哥伦布码就是将编码对象分能成等间隔的若干区间(Group),每个Group有一个索引值:Group Id。

》对于Group Id采用二元码编码;

》对于Group内的编码对象采用定长码。

如下图:

对于编码对象n:  n = q * m + r = low(n/m) * m + r。其中q = low(n/m),表示取下整,对应是Group Id; 余数r对应是Group内编码对象。

例如:对于m=5的哥伦布编码如下表

二、指数哥伦布码

对于哥伦布码,编码对象分成等间隔区间。而对于指数,编码区间长度是按照指数增长的,如下图:同样

》组号采用二元码编码

》组内编码对象采用定长码编码

编码结果如下:

三、K阶指数哥伦布码

在H.264中,使用CABAC需要进行二值化处理,而指数哥伦布编码就是CABAC的一种二值化处理的方法。k阶指数哥伦布编解码具体过程如下:

A、编码过程:假设待编码数字为CodeNum(必须非负整数)

指数哥伦布编码后的形式为[MZeors][1][Info],MZero表示M个0。

1、将CodeNum以二进制形式表示(若不足k位,前面补0),去掉后面k位(若刚好是k位,去掉k位后得0),将结果(数值)加1,得到二进制数T1;

2、M为二进制数T1的二进制位数减一;

3、然后将第一步中舍去的k位接到T1结尾,就得到[1][Info]。

设[Info]的二进制位数为I,编码过程也可以如下描述:

[1 Info] 是CodeNum+2^k的二进制表示,MZeros中0的个数M = I - k。

于是就有总的编码长度CodeLen = M + 1 + I =2M+k+1。

B、解码过程:

1、读入连续0,连续0的个数就是M;

2、计算CodeLen = 2M+k+1,得到[1 Info]的位数是 I=CodeLen - M =M+K+1;

3、读入I位二进制码字,转换成10进制,假设为W。由W = CodeNum + 2^k,得CodeNum = W-2^K。

C、示例:

对于 k =0时:CodeNum=3。编码如下:

二进制表示为11,去掉k=0位后加1得100;

所以M=2;

所以编码后结果为[MZeros][1][Info] = [MZeros][1 Info] = 00100

解码如下:

读入连续2个0,所以M=2;CodeLen=2M+1+k=5;所以需要再读入3个码流100,[1 Info]就是100,转成十进制结果W为4,所以CodeNum = W-2^K=4-1=3;

同样对于k=0,CodeNum=6时,编码为:00111;

同样对于k=3,CodeNum=3时,编码为:1011;

同样对于k=3,CodeNum=6时,编码为:1110;

同样对于k=3,CodeNum=10时,编码为:010010;

指数哥伦布编码 java_H.264学习笔记6——指数哥伦布编码相关推荐

  1. ADPCM编码与解码学习笔记·

    ADPCM编码与解码学习笔记 一.前言 之前许多次说过,有空的时候写写博客,可是一直没有好好落实.由于工作的原因,经常会接触到一些音视频的编解码技术,而ADPCM就是我第一接触的音频编码技术.所以,本 ...

  2. HEVC学习笔记 第1章 编码结构

    第1章 编码结构 1.1 视频编码标准简介 视频编码标准只是规定了编码码流的语法语义和解码器,只要求视频编码后的码流符合标准的语法结构,解码器就可以根据码流的语法语义进行正常解码.因此,符合某个视频编 ...

  3. 视频编码帧间学习笔记(个人向初学小结)

    以下链接是视频编码的浅析,原理解释的很详细(像素计算过程错了,但原理没错),小白必看. 视频编码技术详解_tiankong19999的博客-CSDN博客_视频编码1.引言 如今我们所处的时代,是移动互 ...

  4. Python学习笔记:字符串和编码

    前言 最近在学习深度学习,已经跑出了几个模型,但Pyhton的基础不够扎实,因此,开始补习Python了,大家都推荐廖雪峰的课程,因此,开始了学习,但光学有没有用,还要和大家讨论一下,因此,写下这些帖 ...

  5. MPEG4 H.264学习笔记之三 ------ 熵编码

    3.5 熵编码 熵编码把一系列用来表示视频序列的元素符号转变为一个用来传输或是存储的压缩码流.输入的符号可能包括量化的变换系数(像上面所说的运行级或零树),运动向量(对于每个运动补偿块的向量值x和y) ...

  6. 返回txt格式的文本使用编码 js_Node.js学习笔记第一天

    01-导入node模块使用流程 // node.js中将不同功能的代码放在不同的js文件中,也叫模块化,核心模块会随着安装node.js时一并安装// 1. 导包 (本质就是得到一个全局对象,存储很多 ...

  7. 【廖雪峰Python学习笔记】字符串与编码

    字符串与编码 三种字符编码 ASCII编码 :计算机由美国人发明,最早只有127个字符编码-- 大小写英文字母.数字和符号 Unicode:把中文.日文.韩文等所有语言统一到一套编码中,2-4byte ...

  8. postfilter中文什么意思_Filterpost请求中文字符编码的过滤器 --学习笔记

    java代码:import java.io.IOException;import java.io.PrintWriter;import javax.servlet.ServletException;i ...

  9. pythonutf-8是不是二进制_python学习笔记8-9(字符编码与二进制)

    字符编码 python解释器在加载.py文件中的代码时,会对内容进行编码(默认ASCII) 二进制 举例:古时候烽火台,点火和不点火只有两种状态,传递信息太少. 约定点火数1,代表1-100 点火数2 ...

最新文章

  1. 重磅!神策数据游戏行业解决方案全面上线,速来围观
  2. 优秀程序员的45个习惯
  3. linux 磁盘控制器,linux – 戴尔R710上的PERC 6 / i RAID:单个控制器上的慢速磁盘…… RAID10?...
  4. Vc中对话框数据交换和验证机制
  5. 3d显卡2003测试软件,3DMark 2003
  6. 微信H5开发,怎样禁止手机横屏
  7. mysql数据库备份机制_mysql备份机制有哪些
  8. Uc页面加载完毕后页面字体变大
  9. GPS从入门到放弃(十七) --- 对流层延时
  10. 服务器不能使用无线键盘,无线键盘突然没反应怎么回事_无线键盘没反应的解决方法...
  11. VMware14虚拟机安装苹果系统
  12. 靠肝的爬塔不优雅——养成手游《古今江湖》
  13. 计算机网络 - 应用层
  14. 永久删除的文件还能找回来吗 永久删除的文件如何恢复
  15. 计算机运维中常见英语单词,芯片常用英文词汇整理.doc
  16. 搞懂分布式技术28:微服务(Microservice)那点事
  17. Seq2Seq模型讲解
  18. 【码农教程】手把手教你Mockito的使用
  19. 朋友圈如何分享pdf
  20. CIFAR10代码解释

热门文章

  1. 配置连接池druid
  2. 当 Vue 处理数组与处理纯对象的方式一样
  3. 在做性能测试之前需要知道什么
  4. java学习笔记:使用dom4j解析xml
  5. JMeter学习笔记--JMeter监听器
  6. java求面积Shape类_Shape-2,形状类,正方形类,长方形类,圆类,求周长面积
  7. 谈谈关于个人提升的一些思考
  8. GNU Radio ieee802-15-4、ZigBee 实现
  9. Linux驱动编程中EXPORT_SYMBOL()介绍
  10. 手机型号大全资料_电子元器件知识资料大全