视频数据的基本压缩编码技术与 MPEG 系列标准1. Huffman 编码、算术编码、行程编码的原理、算法及适用范围
1 Huffman 编码HUFFMAN 编码又称哈夫曼编码,是一种可变长编码方式,是由美国数学家 David Huffman 创立的,是二叉树的一种特别转化形式
编码的原理是:将使用次数多的代码转换成长度较短的代码,而使用次数少的可以使用较长的编码,并且保持编码的唯一可解性
Huffman 算法的最根本的原则是:累计的(字符的统计数字*字符的编码长度)为最小,也就是权值(字符的统计数字*字符的编码长度)的和最小
由于 Huffman 编码需要扫描两次,第一次是统计数字,第二次是编码写文件,大大影响了速度,因此有人发明了 enhanced Huffman aglorithm
这种算法只扫描一遍文件,动态产生Huffman 树,即每读 n 个字节就重新编码一次 Huffman 树,以达到提高速度的目的
在解码的过程中使用动态还原技术
Huffman 编码是 Huffman 树的一个应用
Huffman 编码应用广泛,如 JPEG 中就应用了 Huffman 编码
2 算术编码算术编码是图像压缩的主要算法之一
是一种无损数据压缩方法,也是一种熵编码的方法
和其它熵编码方法不同的地方在于,其他的熵编码方法通常是把输入的消息分割为符号,然后对每个符号进行编码,而算术编码是直接把整个输入的消息编码为一个数,一个满足(0
0 ≤ n < 1
0)的小数 n
在给定符号集和符号概率的情况下,算术编码可以给出接近最优的编码结果
使用算术编码的压缩算法通常先要对输入符号的概率进行估量,然后再编码
这个估量越准,编码结果就越接近最优的结果
算术编码是用符号的概率和它的编码间隔两俩个基本参数来描述的(见下文教程)
算术编码可以是静态的或是自适应的
在静态算术编码中,信源