版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、无损数据压缩实验报告 级: 号: 名: 2012年1月10日 LZW 算法压缩编码技术 1. 设计思路 : LZW就是通过建立一个字符串表 ,用较短的代码来表示较长的 字符串来实现压缩 . 字符串和编码的对应关系是在压缩过程中 动态生成的 , 并且隐含在压缩数据中 , 解压的时候根据表来进行 恢复,是一种无损压缩.在本次实验中我们就进行了 LZW编码以及 译码简单算法的编写。 LZW编码又称字串表编码,是无损压缩技术改进后的压缩方法。 它采用了一种先进的串表压缩,将每个第一次出现的串放在一个串 表当中,用一个数字来表示串,压缩文件只进行数字的存贮,则不 存贮串,从而使图像文件的压缩效率得到了较
2、大的提高。 LZW 压缩算法的基本原理:提取原始文本文件数据中的不同字 符,基于这些字符创建一个编译表,然后用编译表中的字符的索 引来替代原始文本文件数据中的相应字符,减少原始数据大小。 应该注意到的是,这里的编译表不是事先创建好的,而是根据原 始文件数据动态创建的,解码时还要从已编码的数据中还原出原 来的编译表 . 对于字符串流,我们要进行分析,从词典中寻找最长 匹配串,即字符串P在词典中,而字符串P+后一个字符C不在词 典中。此时,输出P对应的码字,将P+C放入词典中。经过努力, 我初步知道了对于一个字符串进行编码的过程。 2.步骤 (1)根据需要得建立一个初始化词典。这里字根分别为A B
3、 C。具体的初始 化算法如下: void init()/ 词典初始化 dic0=A; dic1=B; dic2=C;/ 字根为 A,B,C for(int i=3;i30;i+)/ 其余为空 dici=; (2) 对于编码算法的建立,则需先建立一个查找函数,用于查找返回序号: int find(string s) int temp=-1; for(int i=0;i30;i+) if(dici=s) temp=i+1; (3) return temp; 编写编码算法 : void code(string str) int();/ 初始化 char temp2; temp0=str0;/ 取第一
4、个字符 temp1=0; string w=temp; int i=1; int j=3;/ 目前字典存储的最后一个位置 coutn 编码为: ; for(;) 取下一字符 char t2; t0=stri;/ t1=0; string k=t; if(k=) / 为空,字符串结束 cout -1) w=w+k; i+; else cout find(w); string wk=w+k; dicj+=wk; w=k; i+; coutendl; for(i=0;ij;i+) coutsetw(45)i+1setw(12)diciendl; coutendl; (4) 译码是编码的逆过程。在译码
5、中根缀表仍为 A,B,C 。且定义如下变量 StringP : 前一步码字流 pW : StringP 的第一个字符 StringC : 当前的码字流 cW : StringC 的第一个字符 结合老师给的前两步译码过程,得到译码算法如下: void decode(int c) init(); int pw,cw; cw=c0; H. int j=2; coutn 译码为: coutdiccw-1; for(int i=0;in-1;i+) pw=cw; cw=ci+1; if(cw=j+1) coutdiccw-1; char t2; t0=diccw-10; t1=0; string k=t
6、; j+; dicj=dicpw-1+k; else char t2; t0=dicpw-10; t1=0; string k=t; j+; dicj=dicpw-1+k; coutdiccw-1; coutendl; for(i=0;ij+1;i+) coutsetw(45)i+1setw(12)diciendl; coutendl; (5) 最后的主函数用菜单的方式编写: a. 编码 b. 译码。 3. 程序源代码: #include #include #include using namespace std; string dic30; int n; int find(string s)
7、 int temp=-1; for(int i=0;i30;i+) if(dici=s) temp=i+1; return temp; void init() dic0=A; dic1=B; dic2=C; for(int i=3;i30;i+) dici=; void code(string str) init();/ 初始化 char temp2; temp0=str0; temp1=0; string w=temp; int i=1; int j=3; H. coutn 编码为: for(;) char t2; t0=stri; t1=0; string k=t; if(k=) cout
8、 -1) w=w+k; i+; else cout find(w); string wk=w+k; dicj+=wk; w=k; i+; coutendl; for(i=0;ij;i+) coutsetw(45)i+1setw(12)diciendl; coutendl; void decode(int c) init(); int pw,cw; cw=c0; int j=2; H. coutn 译码为: coutdiccw-1; for(int i=0;in-1;i+) pw=cw; cw=ci+1; if(cw=j+1) coutdiccw-1; char t2; t0=diccw-10;
9、 t1=0; string k=t; j+; dicj=dicpw-1+k; else char t2; t0=dicpw-10; t1=0; string k=t; j+; dicj=dicpw-1+k; coutdiccw-1; coutendl; for(i=0;ij+1;i+) coutsetw(45)i+1setw(12)diciendl; coutendl; void main() string str; while(1) coutnnt1. 编码 t2. 译码 nn; coutcha; if(cha=1) coutstr; code(str); else 输入要编码的字符串(由A
10、、B C组成):; int c30; coutn; coutn for(int i=0;ici; decode(c); 消息码字依次是: H. 4.设计截图 uoU 4in() ttrlik) ftr; cK逢弘 cMr ch4; ClAEh: Iffctia Z 薛为,i 3 Ml tn AC cc cs cotnSi入臭由 C clntr; coil(stri; 狗 * 译衿 Int cl; UMCA啪刊feJtt,- cifl” : cout-n8.W?RX.- format l-:l) 4C04(C; C: Doc use nts “nd =)110200208创天中文VC111102
11、00208. cppj ELJ 厂19:04 译 A W; SfeSff I Sfexft 2iBM/ niO2002Ce NdMI桶宾电 f lU030020e J 送晋鉴=JC:Pocf 8 ond S讥tin”八加t3桌面lebuR卫釦 a序列长K*, 6 t 2 I 3 , 9 力,B*cnc I 勢 2停 i.SBW anioaooace.功ai科矣hojccss. *t*s - ffiffl 15:09 5.心得体会 : 这次设计,刚开始的时候感觉无从下手,因为对 LZW 算法的 不熟悉,总感觉压缩与解压是一个很深奥的东西。 但是通过自己不懈 的努力和同学的帮助,最终我还是完成了实验。 对于我来说, 收获最大的是方法和能力;
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 枣树种植及果实质量检测与认证合同(04版)
- 公司个人股份转让协议书
- 旅游景区文创产品设计与销售合同2024
- 《商务战略》课件
- 美术课件导入
- 简单零星工程合同范本2024年度版
- 病案整改报告范文大全
- 联合体施工合同范本
- 货运线路承包合同模板范本
- 圣诞节幼儿教育课件
- DB11T 2315-2024消防安全标识及管理规范
- 化工行业智能仓储管理优化方案
- 有理数的概念 说课课件2024-2025学年人教版数学七年级上册
- 2024年新华东师大版七年级上册数学全册教案(新版教材)
- 2024-2030年中国消防机器人行业市场深度调研及发展趋势与投资前景研究报告
- 公路桥梁施工安全事故案例
- 企业广告宣传知识产权法律风险防范
- 跟着音乐游中国智慧树知到期末考试答案章节答案2024年广州大学
- 合作分润合同范本
- (完整)车棚施工方案
- CJJT55-2011 供热术语标准
评论
0/150
提交评论