20世纪70年代后期开始,人们把研究重点放在了与实际应用有关的信源编码问题上。埃利斯在1968年左右发展了香农--费诺码,提出了算术编码的初步思路。而里斯桑内在1976年给出和发展了算术编码。1982年里斯桑内和兰登一起将算数编码系统化,并省去了乘法运算,使它更为简化、更加易于实现。关于通用信源编算法——LZ码是1977年由齐佛和兰佩尔提出的。1978年他们俩又提出了改进算法LZ—77码和LZ—78码,并且齐佛还证明了此方法可以达到信源的熵值。韦尔奇在1984年提出了改进的LZW码。随后,1990年贝尔等在LZ算法基础上又做了一系列变化和改进,如LZSS码、LZRW1-4码、LZP1-4码等。如今,这些字典码已经广泛应用于文本的数据压缩中了。
无损信源压缩编码技术和算法正是在香农第一定理和香农第三定理的指引下才得到了迅速的发展与应用。这两个定理分别从理论上给出了进行无失真信源压缩编码和限失真信源压缩编码的理论极值,而且还指出与论证了最佳理想信源编码是存在的,但是这两个定理并没有给出信源编码的实际构造方法和实用码的结构。为此,随着技术的需求和发展,人们广泛致力于对各种文本、图形、图片、声音、语言、活动图像和影视信号等实际信源进行实用压缩方法和技术的研究,使信源的数据压缩技术得以蓬勃发展和逐渐走向成熟。
信源的信息熵是信源进行无失真编码的理论极限值。换句话说,我们总能够找到某种合适的编码方法使编码后信源的信息传输率 任意逼近信源的信息熵而不存在任何失真。
正是由于信源概率分布的不均匀性,或者说信源是有记忆的、具有相关性,使得信源中或多或少含有一定的冗余度。因此,我们只要找到去除相关性或者改变概率分布不均匀性的手段和方法,就能找到熵编码的具体方法和实用码的结构。
(3)压缩编码的方法
现在已经存在多种编码方式了,其中主要使用的有霍夫曼编码和香农编码以及费诺编码。
1)霍夫曼编码
在实际情况当中我们必须利用适当的熵编码以提高压缩比,而其中最常用的就是霍夫曼编码。
根据霍夫曼编码理论,在变长编码中,如果各码字长度严格按照所对应符号出现概率的大小逆序排列,则其平均码长最小。与它相对应的霍夫曼编码步骤如下:
① 将信源符号按出现概率递减的顺序排列;
② 将两个最小的概率进行相加, 并重复这一步骤,注意始终要将较高的概率分支放在上部, 直到概率达到1.0 为止;
③ 将每对组合中的上面一个指定为1,下面一个指定为0, 或反之;论文网
④ 画出由每个信源符号概率到1.0 处的路径,记下沿路径的1 和0;
⑤ 对每个信源符号都写出1、0 序列,则从右至左得到的就是霍夫曼码。
通过霍夫曼编码方法得到的码一定是即时码,因为霍夫曼编码不会使任一码字的前缀为码字。此外,霍夫曼编码得到的码并非是唯一的。
在霍夫曼编码中,当缩减信源的概率分布重新排列时,应使合并得来的概率和尽量处于最高的位置,这样可以使合并的元素重复编码次数减少,使短码得到充分利用。
经过分析可得,二元霍夫曼编码具有以下三个特点:
第一,霍夫曼码编码方法保证了概率大的符号对应于短码,概率小的符号对应于长码,即 ,有 ,而且霍夫曼码编码方法保证了短码可以得到充分利用。
第二,每次缩减信源的最后两个码字总是最后一位码元不同,前面各位码元均相同(二元编码情况)。