实验3:LZW编解码算法思想分析

一、LZW基本信息
J.Ziv和A.Lempel在1978年首次发表了介绍第二类词典编码算法的文章。在他们的研究基础上,Terry A.Welch在1984年发表了改进这种编码算法的文章,因此把这种编码方法称为LZW(LempelZiv Walch)压缩编码。
LZW只输出代表词典中的字符串(String)的码字 (code word)。这就意味在开始时词典不能是空的, 它必须包含可能在字符流出现中的所有单个字符。 即在编码匹配时,至少可以在词典中找到长度为1 的匹配串。


二、LZW特点
1)LZW码能有效利用字符出现频率冗余度进行压缩,且字典是自适应生成的,但通常不能有效地利用位置冗余度。
2)对于数据流中连续重复出现的字节和字串,LZW压缩技术具有很高的压缩比。
3)除了用于图像数据处理以外,LZW压缩技术还被用于文本程序等数据压缩领
4)对于任意宽度和像素位长度的图像,都具有稳定的压缩过程。压缩和解压缩速度较快。


三、编码原理
在这里插入图片描述
LZW编码器的输入字符流,输出码字流。
具体步骤:
1:将词典初始化为所有可能出现的单字符,当前前缀P初始化为空。
2:当前字符C=字符流中的下一个字符。
3:判断P+C是否在词典中:
(1)如果“是”,则用C扩展P,即P=P+C,返回步骤2。
(2)如果“否”,则输出与当前前缀P相对应的码字W;将P+C添加到词典中;令P=C,返回到步骤2。


四、解码原理
LZW解码器的输入码字流,输出字符流。核心思想在于解码需要还原出编码时的用的字典。
具体步骤:
在这里插入图片描述具体步骤:

  1. 初始状态,字典里只有所有的默认项(单个字符的码字对应单个字符),此时pW和cW都是空的。
  2. 读入第一个的码字符号cW,解码输出字符。(第一个cW一定能直接解码,而且一定是单个字符)
  3. 赋值pW=cW。
  4. 读入下一个码字cW。
  5. 在字典里查找cW,如果:
    a. cW在字典里:
    (1) 解码cW,输出 Str(cW),即输出对应字符。
    (2) 令P=Str(pW),C=Str(cW)的第一个字符
    (3) 在字典中为P+C添加新码字映射。
    b. cW不在字典里:
    (1) 令P=Str(pW),C=Str(pW)的第一个字符
    (2) 在字典中为P+C添加新的码字映射,这个新的码字一定就是cW。
    (3) 输出P+C。
  6. 返回步骤3重复,直至读完所有码字。

五、实验结果
选取10种不同格式的文件进行压缩编码与解码,并分析了不同格式文件的压缩效率。
在这里插入图片描述
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值