bradley
驱动老牛
驱动老牛
  • 注册日期2002-10-29
  • 最后登录2004-07-29
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
60楼#
发布于:2003-01-25 09:21
 步骤4: 判断码字流中是否还有码字要译
(1) 如果“是”,就返回到步骤2;
(2) 如果“否”
① 把代表当前前缀P的码字输出到码字流;
② 结束。  
[b][color=blue]知我者谓我心忧,不知我者谓我何求。[/color][/b]
bradley
驱动老牛
驱动老牛
  • 注册日期2002-10-29
  • 最后登录2004-07-29
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
61楼#
发布于:2003-01-25 09:22
LZW编码算法可用伪码表示。开始时假设编码词典包含若干个已经定义的单个码字,例如256个字符的码字,用伪码可以表示成:

--------------------------------------------------------------------

Dictionary[j] ← all n single-character, j=1, 2, …,n

j ← n+1

Prefix ← read first Character in Charstream

while((C ← next Character)!=NULL)

Begin

If Prefix.C is in Dictionary

Prefix ← Prefix.C

else

Codestream ← cW for Prefix

Dictionary[j] ← Prefix.C

j ← n+1

Prefix ← C

end

Codestream ← cW for Prefix

--------------------------------------------------------------------

[b][color=blue]知我者谓我心忧,不知我者谓我何求。[/color][/b]
bradley
驱动老牛
驱动老牛
  • 注册日期2002-10-29
  • 最后登录2004-07-29
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
62楼#
发布于:2003-01-25 09:22
(2) 译码算法

LZW译码算法中还用到另外两个术语:①当前码字(Current code word):指当前正在处理的码字,用cW表示,用string.cW表示当前缀-符串;②先前码字(Previous code word):指先于当前码字的码字,用pW表示,用string.pW表示先前缀-符串。

LZW译码算法开始时,译码词典与编码词典相同,它包含所有可能的前缀根(roots)。LZW算法在译码过程中会记住先前码字(pW),从码字流中读当前码字(cW)之后输出当前缀-符串string.cW,然后把用string.cW的第一个字符扩展的先前缀-符串string.pW添加到词典中。
[b][color=blue]知我者谓我心忧,不知我者谓我何求。[/color][/b]
bradley
驱动老牛
驱动老牛
  • 注册日期2002-10-29
  • 最后登录2004-07-29
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
63楼#
发布于:2003-01-25 09:22
LZW译码算法的具体执行步骤如下:


 步骤1: 在开始译码时词典包含所有可能的前缀根(Root);
 
 步骤2: cW :=码字流中的第一个码字;
 
 步骤3: 输出当前缀-符串string.cW到码字流;
 
 步骤4: 先前码字pW:= 当前码字cW;
 
 步骤5: 当前码字cW := 码字流中的下一个码字;
 
[b][color=blue]知我者谓我心忧,不知我者谓我何求。[/color][/b]
bradley
驱动老牛
驱动老牛
  • 注册日期2002-10-29
  • 最后登录2004-07-29
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
64楼#
发布于:2003-01-25 09:23
 步骤6: 判断先前缀-符串string.pW是否在词典中
(1) 如果“是”:
① 把先前缀-符串string.pW输出到字符流;
② 当前前缀P :=先前缀-符串string.pW;
③ 当前字符C :=当前前缀-符串string.cW的第一个字符;
④ 把缀-符串P+C添加到词典;
(2) 如果“否”:
① 当前前缀P :=先前缀-符串string.pW;
② 当前字符C :=当前缀-符串string.cW的第一个字符;
③ 输出缀-符串P+C到字符流,然后把它添加到词典中。
 
 步骤7: 判断码字流中是否还有码字要译
(1) 如果“是”,就返回到步骤4;
(2) 如果“否”, 结束。  
[b][color=blue]知我者谓我心忧,不知我者谓我何求。[/color][/b]
bradley
驱动老牛
驱动老牛
  • 注册日期2002-10-29
  • 最后登录2004-07-29
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
65楼#
发布于:2003-01-25 09:24
LZW译码算法可用伪码表示如下:

----------------------------------------------------------------

Dictionary[j] ← all n single-character, j=1, 2, …,n

j ← n+1

cW ← first code from Codestream

Charstream ← Dictionary[cW]

pW ← cW

While((cW ← next Code word)!=NULL)

Begin

If cW is in Dictionary

Charstream ← Dictionary[cW]

Prefix ← Dictionary[pW]

cW ← first Character of Dictionary[cW]

Dictionary[j] ← Prefix.cW

j ← n+1

pW ← cW

else

Prefix ← Dictionary[pW]

cW ← first Character of Prefix

Charstream ← Prefix.cW

Dictionary[j] ← Prefix.C

pW ← cW

j ← n+1

end
----------------------------------------------------------------

[b][color=blue]知我者谓我心忧,不知我者谓我何求。[/color][/b]
bradley
驱动老牛
驱动老牛
  • 注册日期2002-10-29
  • 最后登录2004-07-29
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
66楼#
发布于:2003-01-25 09:24
例:编码字符串如表4-16所示,编码过程如表4-17所示。现说明如下:


 “步骤”栏表示编码步骤;
 “位置”栏表示在输入数据中的当前位置;
 “词典”栏表示添加到词典中的缀-符串,它的索引在括号中;
 “输出”栏表示码字输出。
[b][color=blue]知我者谓我心忧,不知我者谓我何求。[/color][/b]
bradley
驱动老牛
驱动老牛
  • 注册日期2002-10-29
  • 最后登录2004-07-29
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
67楼#
发布于:2003-01-25 09:24
表4-16 被编码的字符串

位置
 1
 2
 3
 4
 5
 6
 7
 8
 9
 
字符  
 A
 B
 B
 A
 B
 A
 B
 A
 C
 
[b][color=blue]知我者谓我心忧,不知我者谓我何求。[/color][/b]
bradley
驱动老牛
驱动老牛
  • 注册日期2002-10-29
  • 最后登录2004-07-29
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
68楼#
发布于:2003-01-25 09:25
表4-17 LZW的编码过程

步骤
 位置  
 词典
 输出
 
    (1)
 A
  
    (2)
 B
  
    (3)
 C
  
1
 1
 (4)
 A B
 (1)
 
2
 2
 (5)
 B B
 (2)
 
3
 3
 (6)
 B A
 (2)
 
4
 4
 (7)
 A B A
 (4)
 
5
 6
 (8)
 A B A C
 (7)
 
6
 --
 --
 --
 (3)
 
[b][color=blue]知我者谓我心忧,不知我者谓我何求。[/color][/b]
bradley
驱动老牛
驱动老牛
  • 注册日期2002-10-29
  • 最后登录2004-07-29
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
69楼#
发布于:2003-01-25 09:25
表4-18解释了译码过程。每个译码步骤译码器读一个码字,输出相应的缀-符串,并把它添加到词典中。例如,在步骤4中,先前码字(2)存储在先前码字(pW)中,当前码字(cW)是(4),当前缀-符串string.cW是输出(“A B”),先前缀-符串string.pW (\"B\")是用当前缀-符串string.cW (\"A\")的第一个字符,其结果(\"B A\") 添加到词典中,它的索引号是(6)
[b][color=blue]知我者谓我心忧,不知我者谓我何求。[/color][/b]
bradley
驱动老牛
驱动老牛
  • 注册日期2002-10-29
  • 最后登录2004-07-29
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
70楼#
发布于:2003-01-25 09:25
表4-18 LZW的译码过程

步骤
 代码
 词典
 输出
 
    (1)
 A
  
    (2)
 B
  
    (3)
 C
  
1
 (1)
 --
 --
 A
 
2  
 (2)
 (4)
 A B
 B
 
3  
 (2)
 (5)
 B B
 B
 
4  
 (4)
 (6)
 B A
 A B
 
5  
 (7)
 (7)
 A B A
 A B A  
 
6  
 (3)
 (8)
 A B A C
 C
 
[b][color=blue]知我者谓我心忧,不知我者谓我何求。[/color][/b]
bradley
驱动老牛
驱动老牛
  • 注册日期2002-10-29
  • 最后登录2004-07-29
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
71楼#
发布于:2003-01-25 09:26
LZW算法得到普遍采用,它的速度比使用LZ77算法的速度快,因为它不需要执行那么多的缀-符串比较操作。对LZW算法进一步的改进是增加可变的码字长度,以及在词典中删除老的缀-符串。在GIF图象格式和UNIX的压缩程序中已经采用了这些改进措施之后的LZW算法。

LZW算法取得了专利,专利权的所有者是美国的一个大型计算机公司―Unisys(优利系统公司),除了商业软件生产公司之外,可以免费使用LZW算
(全文完)
[b][color=blue]知我者谓我心忧,不知我者谓我何求。[/color][/b]
bradley
驱动老牛
驱动老牛
  • 注册日期2002-10-29
  • 最后登录2004-07-29
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
72楼#
发布于:2003-01-25 09:28
这里是全文,有兴趣的可以直接下载。
附件名称/大小 下载次数 最后更新
2003-01-25_第四章 无损数据压缩.htm (155KB)  4
[b][color=blue]知我者谓我心忧,不知我者谓我何求。[/color][/b]
bradley
驱动老牛
驱动老牛
  • 注册日期2002-10-29
  • 最后登录2004-07-29
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
73楼#
发布于:2003-01-25 09:30
还有吗?我快放假了,放假就不能上了 :(
qiu ni,一次贴玩吧! :(  :P
应你的要求,已将后面的及全文全部放了上来,希望能对你有用。
[b][color=blue]知我者谓我心忧,不知我者谓我何求。[/color][/b]
right_wind
驱动中牛
驱动中牛
  • 注册日期2001-10-12
  • 最后登录2018-05-29
  • 粉丝1
  • 关注0
  • 积分60分
  • 威望66点
  • 贡献值0点
  • 好评度5点
  • 原创分0分
  • 专家分0分
  • 社区居民
74楼#
发布于:2003-01-25 09:42
文章中的图没有!如果是本书,可否将整书都放上来! :P
good good study, day day up。
bradley
驱动老牛
驱动老牛
  • 注册日期2002-10-29
  • 最后登录2004-07-29
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
75楼#
发布于:2003-01-25 09:44
文章中的图没有!如果是本书,可否将整书都放上来! :P
我这儿也没图,不好意思。
[b][color=blue]知我者谓我心忧,不知我者谓我何求。[/color][/b]
huiming
驱动小牛
驱动小牛
  • 注册日期2001-05-05
  • 最后登录2009-07-09
  • 粉丝0
  • 关注0
  • 积分1分
  • 威望10点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
76楼#
发布于:2003-01-25 11:35
[quote]还有吗?我快放假了,放假就不能上了 :(
qiu ni,一次贴玩吧! :(  :P
应你的要求,已将后面的及全文全部放了上来,希望能对你有用。 [/quote]
解渴!!!!!!! :P
3x
驿动的心!放飞的心!勇敢的心!
上一页 下一页
游客

返回顶部