【Codecs系列】视频编码中常用熵编码介绍

Date: 2017/10/21

Content:视频编码中常用熵编码方法介绍


1、熵编码

  编码过程中按照熵原理不丢失任何信息的编码,即编码过程中不丢失信息量,保存信息熵。

  熵编码是无损压缩的编码方法。

  常见的熵编码方法:香农编码(shannon)、哈夫曼编码(huffman)、算术编码(arithmetic coding)、哥伦布编码(Golomb Codes)、游程编码等。

2、可变长编码(Variable Length Coding,VLC)

  可变长编码通过给出现概率大的符号赋予较短的码字,改变码字长度达到压缩信息冗余的目的,编码和解码过程完全可逆,又称为统计编码和无失真的压缩编码方法。最常用的可变长编码为Huffman、哥伦布编码、游程长度编码。

3、算术编码(Arithmetic coding)

   算术编码的本质是对输入流分配一个码字,而不是为每个符号分配一个码字。算术编码对整条信息(无论多长),其输出仅仅是一个小数,而且是介于0和1之间(半开区间[0,1))的二进制小数。如果算术编码对某条信息的输出为1010001111,那么表示的是小数0.1010001111,换算成十进制即为0.64。

    3.1 编码

   算术编码不是单独对一个码字进行编码,而是对整条信息进行编码。

编码举例:

     考虑某条信息中可能出现的字符仅有a,b,c三种,我们要编码的字符串为bccb。

(1) 假设三者出现概率一样,即p(a) = p(b) = p(c) = 1/3,将0~1区间按照概率的比例分配给三个字符a b c;

(2) 第一个b在(0.3333, 0.6667),此时三个字符的概率调整后为p(a) = 1/4,p(b) = 2/4,p(c) = 1/4,将(0.3333, 0.6667)区间分配给三个字符。

(3) 输入第二个字符c,c的区间为(0.5834,0.6667);

你可能感兴趣的:(【视音频技术之基础知识】,【视频编解码开发】)