




已阅读5页,还剩7页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
成绩评阅人 中国矿业大学2015-2016学年第二学期数字视频技术课程小设计考核图像的LZW编码研究专业班级: 信息14-05班 学生姓名: 学生学号: 5 签字: 日期:2017.05.171. 引言1.1 A.Lempel和J.Ziv在1978年首次发表了介绍字典编码方法的文章将其称之为LZ78。在他们的研究基础上,Terry A.Welch在1984年发表了对这种编码算法进行了改进的文章,并首先在高速硬盘控制器上应用了这种算法。因此后来把这种编码方法称为LZW(LempelZiv Walch)压缩编码。近年来越来越多的研究人员注意到图像压缩的重要性,主要原因在于图像文件不仅占据内存空间,而且也占据大量的传输带宽,因此存储和传输前对图像进行压缩就成为必然。信息数字化的高速进行更是给数据压缩带来严峻的挑战,在不同的领域,出现了各种各样的压缩方法,例如基于熵的统计编码(Huffman编码、Shannon编码、算术编码等),基于字典的ARJ,LZH,PKZIP等压缩方法,分形编码、小波变换等变换编码,分块编码,以及JPEG,MPEG等。LZW压缩算法是一种无损压缩算法,它主要是用一种代码来表示数据流中出现的重复串,以达到压缩的目的,并且LZW算法可以大大缩小对通讯带宽的需求,具有较高的实用价值。LZW算法不仅可以用于文字数据的压缩,而且也可以成功地用于某些图像数据的压缩处理,如GIF和TIFF等图像格式,本文正是基于这种LZW编码的。大量数据的图象信息会给存储器的存储容量,通信干线信道的宽度,以及计算机的处理速度增加极大的压力,会使得World Wide Web变成World Wide Wait。单纯靠增加存储器容量,提高信道带宽以及计算机处理速度等方法来解决这个问题是不现实的。很显然,在信道带宽、通信链路一定的前提下,采用编码压缩技术,减少传输数据量,是提高通信速度的重要手段。没有图象编码压缩技术的发展,大容量图象信息的存储与传输是难以实现的,多媒体、信息高速公路等新技术在实际中的应用也会碰到很大的困难。LZW压缩算法是一种常用的数据压缩算法,由于它不依赖于任何数据格式,而且具有很高的综合性能指标,因而得到广泛应用。1.2 LZW编码 LZW算法的词典是根据输入的数据动态创建的。LZW算法先将可能的信源符号创建一个初始词典,然后在编码过程中,遇到词典中没有的短语(信源序列)就加到词典中,动态创建词典。提取原始文本文件数据中的不同字符,基于这些字符创建一个编译表,然后用编译表中的字符的索引来替代原始文本文件数据中的相应字符,减少原始数据大小。看起来和调色板图象的实现原理差不多,但是应该注意到的是,我们这里的编译表不是事先创建好的,而是根据原始文件数据动态创建的,解码时还要从已编码的数据中还原出原来的编译表.2. 设计任务2.1 设计任务 实现灰度图像的LZW编码和解码恢复图像2.2 设计目的(1) 了解LZW编码的基本原理及其特点;(2) 理解并熟练对图像进行LZW编码的算法;(3) 学习和熟悉MATLAB图像处理工具箱;(4) 熟悉和掌握MATLAB程序设计方法;2.3 设计要求要求实现灰度图像的LZW编码和解码恢复图像;处理结果要求最终图像显示,且计算图像的信息熵,平均码字长度,编码效率,压缩比。扩展要求:读写GIF图片。3. 总体设计方案3.1 系统运行环境Windows 8.1/10系统3.2 编程软件平台MATLAB R2013a/R2014a3.3 LZW编码算法原理LZW算法是一种基于字典的编码将变长的输入符号串映射成定长的码字形成 一本短语词典索引(串表),利用字符出现的频率冗余度及串模式高使用率冗余度达到压缩的目的。该算法只需要一遍扫描,且具有自适应的特点,不需要保存和传送串表。(1) LZW压缩算法 初始化: 将所有单个字符的串放入串表ST中(共项,实际操作时不必放入,只 需空出串表的前项,字符对应码字所对应的的串表索引即可); 读首字符入前缀串w; 设置码长codeBits=n+1; 设置串表中当前表项的索引值next=初始码字=; 循环: 读下一输入字符c; 若c=EOF(文件结束符),则输出w的码字,结束循环(输出结束码字); 若wc已在串表中,则w=wc,转到循环开始处; 否则,输出w的码字,将wc放入ST中的next中,next+; 令w=c,转到循环开始处; 若next的位数超过码长(codeBits),则codeBits; 若串表已满(next的位数已超过最大码长12),则清空串表,输出清表 码字,转到初始化开始处。(2) LZW还原算法 初始化: 将所有单个字符串放入串表ST中;(共项【码字为0-1】),实 际操作不必放入,只需空出串表前项,字符对应码字对应字符串表索 引即可) 串表中当前表项索引next=+2; 设置码长codeBits=n+1; 读取首个码字(所对应的单个字符)入老串old,输出该字符; 循环: 读取下一个码字new; 若new=结束码字,结束循环; 若new=清表码字,则清空串表,转到初始化开始处; 若new大于等于next则输出串newStr=old+old【0】(例外处理); 若new小于next,则输出串newStr; 将newStr【0】+old放入串表ST【next】中,next+; 若next的位数超过码长(大于codeBits),则codeBits+,但是若加 1后的codeBits大于12,则重新让codeBits=12;old=newStr,转到循 环处开始,其中:newStr=ST【new】(即串表中索引为new的串);3.4 LZW编码算法的特点(1) LZW压缩技术对于可预测性不大的数据具有较好的处理效果,常用于GIF格式的图像压缩,其平均压缩比在2:1以上,最高压缩比可达到3:1。(2) 对于数据流中连续重复出现的字节和字串,LZW压缩技术具有很高的压缩比。(3) 除了用于图像数据处理以外,LZW压缩技术还被用于文本程序等数据压缩领域。(4) LZW压缩技术有很多变体,例如常见的ARC、RKARC、PKZIP高效压缩程序。(5) 对于任意宽度和像素位长度的图像,都具有稳定的压缩过程。压缩和解压缩速度较快。(6) 对机器硬件条件要求不高,在Intel 80386的计算机上即可进行压缩和解压缩。3.5算法流程图设计3.5.1 主流程图开始加载图像,并将其灰度化计算图像大小并转化格式类型调用LZW编码程序进行压缩调用LZW解码程序进行解码显示原始图像、灰度图像和经编码解码后的图像结束显示平均码长、压缩比、信息熵及编码效率3.5.2 编码流程图 开始初始化读图像序列前缀=新序列加入词典输出前缀码前缀序列新序列在词典中?否是词典已满?是编码完成?否是结束否开始结束读取压缩序列,并存入行词典中解码后的序列解码3.5.3 解码流程图3.6 组员任务分工 李少杰:编写主要程序,编码解码函数程序及相关子程序,修改报告及演示文稿。 李港深:编写部分程序及部分函数程序,撰写报告。李辉:编写部分程序,进行程序调试完善,制作演示文稿。4. 程序实现4.1 主程序clear;clcI = rgb2gray(imread(house1.png);m,n = size(I);x = double(I(:); % 转化格式类型% LZW编码S,sz=LZW(x);% LZW解码A = ;for i = 1:length(sz) A = A Ssz(i);endA = A zeros(1,m*n-length(A);II = uint8(reshape(A,m,n);M,N=size(II);b=length(S);sum=M*N;H=0; %初始化信息熵for i=0:255; r,c=find(II=i); %统计每个灰度值的像素点总数 num(i+1)=length(r); p(i+1)=num(i+1)/sum; %统计每个灰度值的概率 if p(i+1)=0 H=H-p(i+1)*log2(p(i+1); %计算信息熵 endend%计算平均码字长度pjmc=b/sum%计算编码效率bmxl=H/pjmc%计算压缩比ysb=sum*8/bdisp(信息熵);disp(H);disp(平均码字长度);disp(pjmc);disp(编码效率);disp(bmxl);disp(压缩比);disp(ysb);imshow(II);4.2 编解码程序function S,sz=LZW(x)% LZW词典编码% x为输入序列 S为词典 sz为输出n = length(x); % 序列长度S = unique(x); % 初始化词典x = num2cell(x); % 转化为细胞数组S = num2cell(S); % 转化为细胞数组sz = ; % 初始化输出序列temp = ; % 当前序列% 开始编码for i = 1:n temp = temp xi; % 取一个元素放入序列中 for j = 1:length(S) if isequal(Sj,temp) flag = 1; break; else flag = 0; end end if flag = 1 % 如果当前序列在词典中 continue; else % 如果当前序列不在词典中 S = S temp; % 将当前序列加入词典 for j = 1:length(S) if isequal(Sj,temp(1:end-1) T = j; break; end end sz = sz T; temp = temp(end); % 重置temp endendfor j = 1:length(S) if isequal(Sj,temp(end) T = j; break; endendsz = sz T; % 最后一位加入输出 5. 调试结果原图 编解码后信息熵 6.4501平均码字长度 0.7295编码效率 8.8420压缩比 10.9665经过多次测试和调整,最终编码结果正确,解码结果正确,程序运行正确。6. 总结感谢王利娟老师教授数字视频技术课程并为我们安排了这次课程设计。通过这次课设,我们更深地熟悉和掌握了MATLAB程序设计方法和灰度图像LZW的编码解码过程,学会了运用MATLAB平台对图像进行处理和分析。提高我们编程能力的同时,也让我们对编解码算法有了更深入的理解。课程设计是我们专业课程知识综合应用的实践训练,是我们迈向社会,从事职业工作前一个必不少的过程。在这次的课程设计中不仅检验了我们所学习的知识,也引发了我们对如何去把握一件事情,如何去做一件事情,如何完成一件事情等问题的思考。在设计过
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年宠物疾病监测AI专家bi备笔试题
- 2025年安全管理技能考试题库解析
- 2025年汽车电子工程师职业技能评定考试试题及答案解析
- 2025年煤矿安全监察员技能水平测验试卷及答案解析
- 2025年篮球裁判员资格考试试题及答案解析
- 2025年安全员安全文明施工培训规范细则细则细则题及答案
- 2025年建筑装饰工程技术员职业技能考试试题及答案解析
- 2025年建筑设备工程师职业资格考试试题及答案解析
- 2025年水管员选拔面试高频问题与答案
- 2025年机械工程师注册执业资格考试试题及答案解析
- 2025山西晋中昔阳县文化旅游发展有限责任公司社会招聘15人笔试备考题库及答案解析
- 2025-2026学年统编版(2024)初中历史八年级上册教学计划及进度表
- 2025-2026学年统编版小学语文五年级上册教学计划及进度表
- 入职岗前培训之工会知识课件
- 媒介融合传播概论课件
- 2025 - 2026学年教科版科学三年级上册教学计划
- 2025年总工会招聘考试工会知识模拟试卷及答案
- 2026年高考第一轮复习数学第01讲 导数的概念及其意义、导数的运算(复习课件)
- 基层管理员工管理办法
- 《研学旅行指导师实务》课件-第3章 研学旅行课程设计
- 甘肃省兰州市西北中学2024-2025学年高一下学期期末语文试题(含答案)
评论
0/150
提交评论