- 10
- 0
- 约1.03千字
- 约 40页
- 2018-03-09 发布于湖北
- 举报
信源编码算数编码
第四章: 算数编码
陈超
2017/3/14
回顾Huffman编码
扩展Huffman编码
平均符号长度(码率):1.222比特/字母 0.611比特/符号
信源熵:0.335比特
存储复杂度随扩展阶数成指数增加!
Huffman编码存在的问题
对上述例子,符号集概率严重不平衡:
Huffman码压缩效率太低。
扩展Huffman编码复杂度太高。
问题:如何对这类信源进行压缩编码?
算数编码(arithmetic coding):
思想:利用信源概率分布的累积分布函数。
历史:
1948年Shannon在其开创性论文中提出利用累积分布,提出现在称为Shannon-Fano编码的方法。
Elias在MIT内部公开课提出这一思想的一种递归实现,但未公开。
Abramson于1963年在其信息论著作的一个备注中简要提到这一方法。
Jelinek于1968年在其信息论著作的附录中进一步提及这一思想。
1976年,Rissanen和Pasco各自提出算术编码,解决了有限精度问题。
累积分布函数:
算数编码方法:
概念上,可以分两步考虑:
为符号序列生成标签;
从标签中获得二进制码字。
生成标签:
生成标签例子:
字母顺序(lexicographic order)与词典顺序(dictionary order)
计算标签区间和标签:
标签区间递归计算:
解读标签
解读标签算法:
从标签中生成二进制码字
按照上述过程生成的标签可以唯一的表示符号序列,这意味着该标签的二进制表示可以唯一的表示符号序列。
二进制表示可能是无限长的,唯一性继续保证,但不够有效。
为了保证有效性,可以截断二进制表示,但唯一性如何保证?
截断二进制编码的唯一性
前缀特性
算术编码的效率
每个符号的平均长度满足:
如果各符号之间是独立同分布的(i.i.d),则
因此,
算法实现
增量编码(incremental coding)
精度问题
解决方案:将标签区间进行比例调整。
分三种情况:
例子
整数实现
用频率代替概率
编码算法伪代码:
例子
下一个元素为2。更新标签区间:
最高位都为1,移出(发送)1,左移一位得到:
由于Scale3为1,发送0,Scale3减1,变为0。最高位都为0,移出(发送)0,更新:
最高位都为0,移出(发送)0,更新:
最高位都为1,移出(发送)1,更新:
最高位都为0,移出(发送)0,更新:
原创力文档

文档评论(0)