LZW 编码算法详解 LZW(Lempel-Ziv & Welch)编码又称字串表编码,是Welch 将Lemple 和Ziv 所提出来的无损压缩技术改进后的压缩方法。GIF 图像文件采用的是一种改良的LZW压缩算法,通常称为GIF-LZW 压缩算法。下面简要介绍GIF-LZW 的编码与解码方程 解:例 现有来源于二色系统的图像数据源(假设数据以字符串表示):aabbbaabb,试对其进行LZW 编码及解码。 1)根据图像中使用的颜色数初始化一个字串表(如表1),字串表中的每个颜色对应一个索引。在初始字串表的LZW_CLEAR 和LZW_EOI 分别为字串表初始化标志和编码结束标志。设置字符串变量S1、S2 并初始化为空。 2)输出LZW_CLEAR 在字串表中的索引3H(见表2 第一行)。 3)从图像数据流中第一个字符开始,读取一个字符a,将其赋给字符串变量S2。判断S1+S2=“a”在字符表中,则 S1=S1+S2=“a”(见表2 第二行)。 4)读取图像数据流中下一个字符a,将其赋给字符串变量S2。判断S1+S2=“aa”不在字符串表中,输出S1=“a”在字串表中的索引0H,并在字串表末尾为S1+S2="aa"添加索引4H,且 S1=S2=“a”(见表2 第三行)。 5)读下一个字符b 赋给S2。判断S1+S2=“ab”不在字符串表中,输出S1=“a”在字串表中的索引0H,并在字串表末尾为 S1+S2=“ab”添加索引5H,且S1=S2=“b”(见表2 第四行)。 6)读下一个字符b 赋给S2。S1+S2=“bb”不在字串表中,输出S1=“b”在字串表中的索引1H,并在字串表末尾为 S1+S2=“bb”添加索引6H,且 S1=S2=“b”(见表2 第五行)。 7)读字符b 赋给S2。S1+S2=“bb”在字串表中,则 S1=S1+S2=“bb”(见表2 第六行)。 8)读字符a 赋给S2。S1+S2=“bba”不在字串表中,输出S1=“bb”在字串表中的索引6H,并在字串表末尾为 S1+S2=“bba”添加索引7H,且 S1=S2=“a”(见表2 第七行)。 9)读字符a 赋给S2。S1+S2=“aa”在字串表中,则 S1=S1+S2=“aa”(见表2第八行)。 10)读字符b 赋给S2。S1+S2=“aab”不在字串表中,输出S1=“aa”在字串表中的索引4H,并在字串表末尾为 S1+S2=“aab”添加索引8H,且 S1=S2=“b”(见表2 第九行)。 11)读字符b 赋给S2。S1+S2=“bb”,在字串表中,则 S1=S1+S2=“b”(见表2 第十行)。 12)输出S1 中的字符串"b"在字串表中的索引1H(见表2 第十一行)。 13)输出结束标志 LZW_EOI 的索引3H,编码完毕。 最后的编码结果为"30016463“。 下面对上述编码结果"30016463"...