- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
10.5.2 LZW编码实例 设有一来源于4色(以a、b、c、d表示)图像的数据流aabcabbbbd,现对其进行LZW编码。编码过程如下: 编码前,首先需要初始化一个字符串表。由于图像中只有四种颜色,因而我们可以只用4比特表示字符串表中每个字符串的索引,表中的前4项代表4种颜色, 后两项分别表示初始化和图像结束标志,建立的初始化字符串表如表10-5所示。接着把S1和S2初始化为空(即NULL),输出LZW_CLEAR的在字符串表中的索引值4H, 接下来是对图像数据的编码。 表10-5 初始化字符串表 5 H LZW_EOI 4 H LZW_CLEAR 3 H d 2 H c 1 H b 0 H A 索引 字符串 读取图像数据流的第一个字符“a”,赋给S2, 因S1+S2=“a”已存在字串表中,所以S1=S1+S2=“a”。 接着读入下一个字符“a”赋给S2, 因S1+S2=“aa”不存在于字串表中, 所以输出S1=“a”的索引0H,同时在字符串表末尾添加新字符串“aa”的索引6H, 并使S1=S2=“a”。 依次读取数据流中的每个字符,如果S1+S2没有出现在字符串表中,则输出S1中的字符串的索引,并在字符串表末尾为新字符串S1+S2添加索引,并使S1=S2; 否则,不输出任何结果,只是使S1=S1+S2。所有字符处理完毕后,输出S1中的字符串的索引,最后输出结束标志LZW_EOI的索引。至此,编码完毕,完整的编码过程如表10-6所示, 最后的编码结果为“4001271B35”(以十六进制表示)。 表10-6 GIF-LZW编码过程 下面对上述编码结果“4001271B35”进行解码。按图10-2的解码流程,首先读取第一个编码Code=4H, 由于它为LZW_CLEAR,因此需初始化字符串表, 结果如表10-5所示(在实际应用中,可根据文件头中给定的信息建立初始字符串表)。 读入下一个编码Code=0H,由于它不等于LZW_CLEAR, 因此输出字串表中0H对应的字符串“a”, 同时使OldCode=Code=0H。 读入下一个编码Code=0H,由于字串表中存在该索引,因此输出0H所对应的字符串“a”,然后将OldCode=0H所对应的字符串“a”加上Code=0H所对应的字符串的第一个字符“a”,即“aa”添加到字串表中,其索引为6H,同时使ldCode=Code=0H。 读入下一个编码Code=1H,由于字串表中存在该索引,因此输出1H所对应的字符串“b”,然后将OldCode=0H所对应的字符串“a”加上Code=1H所对应的字符串的第一个字符“b”,即“ab”添加到字串表中,其索引为7H, 同时使OldCode=Code=1H。 读入下一个编码Code=2H,由于字串表中存在该索引, 因此输出2H所对应的字符串“c”,然后将OldCode=1H所对应的字符串“b”加上Code=2H所对应的字符串的第一个字符“c”,即“bc”添加到字串表中, 其索引为8H, 同时使OldCode=Code=2H。 读入下一个编码Code=7H,由于字串表中存在该索引,因此输出7H所对应的字符串“ab”,然后将OldCode=2H所对应的字符串“c”加上Code=7H所对应的字符串的第一个字符“a”, 即“ca”添加到字串表中,其索引为9H,同时使OldCode=Code=7H。 读入下一个编码Code=1H,由于字串表中存在该索引,因此输出1H所对应的字符串“b”,然后将OldCode=7H所对应的字符串“ab”加上Code=1H所对应的字符串的第一个字符“b”,即“abb”添加到字串表中,其索引为AH,同时使OldCode=Code=1H。 读入下一个编码Code=BH,由于字串表中不存在该索引, 因此输出OldCode=1H所对应的字符串“b”加上该字符串的第一个字符“b”,即“bb”,同时将“aa”添加到字串表中,其索引为BH, 同时使OldCode=Code=BH。 读入下一个编码Code=3H,由于字串表中存在该索引, 因此输出其对应的字符串“d”,然后将OldCode=BH所对应的字符串“bb”加上Code=3H所对应的字符串的第一个字符“d”,即“bbd”添加到字串表中,其索引为CH,同时使OldCode=Code=3H。读入下一个编码Code=5H, 它等于LZW_EOI, 数据解码完毕, 最后的解码结果为aabcabbbbd。为清晰起见, 完整的
原创力文档


文档评论(0)