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 第六行)