
算术编码
算术编码在图像数据压缩标准(如 JPEG,JBIG)中扮演了重要的角色。
在算术编码中,消息用 0 到 1 之间的实数进行编码,算术编码用到两个
基本的参数:符号的概率和它的编码间隔。信源符号的概率决定压缩编
码的效率,也决定编码过程中信源符号的间隔,而这些间隔包含在 0 到
1 之间。编码过程中的间隔决定了符号压缩后的输出。算术编码器的编
码过程可用下面的例子加以解释。
假设信源符号为{a, b, c, d},这些符号的概率分别为{ 0.1, 0.4,
0.2, 0.3 },根据这些概率可把间隔[0, 1)分成 4 个子间隔:[0, 0.1),
[0.1, 0.5), [0.5, 0.7), [0.7, 1),其中表示半开放间隔,即包含不
包含。
符号 abcd
概率 0.1 0.4 0.2 0.3
初始编码间隔 [0, 0.1) [0.1, 0.5) [0.5, 0.7) [0.7, 1)
如果二进制消息序列的输入为:cadacdb。编码时首先输入的符号是 c,
找到它的编码范围是[0.5, 0.7)。由于消息中第二个符号 a 的编码范围
是[0, 0.1),因此它的间隔就取[0.5, 0.7)的第一个十分之一作为新间
隔[0.5, 0.52)。依此类推,编码 第 3 个符号 d 时取新间隔为[0.514,
0.52),编码第 4 个符号 a 时,取新间隔为[0.514, 0.5146),… 。消息
的编码输出可以是最后一个间隔中的任意数。
下所示的子间隔:
步骤 输入 符号 编码间隔 编码判决
1 c [0.5, 0.7) 符号的间隔范围[0.5, 0.7)
2 a [0.5, 0.52) [0.5, 0.7)间隔的第一个 1/10
压缩编码的效率
信源符号的间隔
信源符号的概率
符号压缩后的输出