基于MATLAB的图像LZW编码研究

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

中国矿业大学2015-2016学年第二学期

《数字视频技术》课程小设计考核

图像的LZW编码研究

专业班级:信息14-05班

学生姓名:李辉、李港深、李少杰

学生学号:04141394、04141393、04141395

本人郑重声明:本人认真、独立完成了查找资料、完成作业、编写程序等考核任务,无抄袭行为。

签字:

日期:2017.05.17

1.引言

1.1 A.Lempel和J.Ziv在1978年首次发表了介绍字典编码方法的文章将其称之为LZ78。在他们的研究基础上,Terry A.Welch在1984年发表了对这种编码算法进行了改进的文章,并首先在高速硬盘控制器上应用了这种算法。因此后来把这种编码方法称为LZW(Lempel—Ziv Walch)压缩编码。

近年来越来越多的研究人员注意到图像压缩的重要性,主要原因在于图像文

件不仅占据内存空间,而且也占据大量的传输带宽,因此存储和传输前对图像进

行压缩就成为必然。信息数字化的高速进行更是给数据压缩带来严峻的挑战,在不同的领域,出现了各种各样的压缩方法,例如基于熵的统计编码(Huffman编码、Shannon编码、算术编码等),基于字典的ARJ,LZH,PKZIP等压缩方法,分形编码、小波变换等变换编码,分块编码,以及JPEG,MPEG等。

LZW压缩算法是一种无损压缩算法,它主要是用一种代码来表示数据流中出现的重复串,以达到压缩的目的,并且LZW算法可以大大缩小对通讯带宽的需求,具有较高的实用价值。LZW算法不仅可以用于文字数据的压缩,而且也可以成功地用于某些图像数据的压缩处理,如GIF和TIFF等图像格式,本文正是基于这种LZW编码的。

大量数据的图象信息会给存储器的存储容量,通信干线信道的宽度,以及计

算机的处理速度增加极大的压力,会使得World Wide Web变成WorldWideWait。单纯靠增加存储器容量,提高信道带宽以及计算机处理速度等方法来解决这个问题是不现实的。很显然,在信道带宽、通信链路一定的前提下,采用编码压缩技术,减少传输数据量,是提高通信速度的重要手段。没有图象编码压缩技术的发展,大容量图象信息的存储与传输是难以实现的,多媒体、信息高速公路等新技术在实际中的应用也会碰到很大的困难。LZW压缩算法是一种常用的数据压缩算法,由于它不依赖于任何数据格式,而且具有很高的综合性能指标,因而得到广泛应用。

1.2 LZW编码

LZW算法的词典是根据输入的数据动态创建的。LZW算法先将可能的信源符号创建一个初始词典,然后在编码过程中,遇到词典中没有的短语(信源序列)就加到词典中,动态创建词典。提取原始文本文件数据中的不同字符,基于这些字符创建一个编译表,然后用编译表中的字符的索引来替代原始文本文件数据中的相应字符,减少原始数据大小。看起来和调色板图象的实现原理差不多,但是应该注意到的是,我们这里的编译表不是事先创建好的,而是根据原始文件数据动态创建的,解码时还要从已编码的数据中还原出原来的编译表.

2.设计任务

2.1设计任务

实现灰度图像的LZW编码和解码恢复图像

2.2设计目的

(1)了解LZW编码的基本原理及其特点;

(2)理解并熟练对图像进行LZW编码的算法;

(3)学习和熟悉MA TLAB图像处理工具箱;

(4)熟悉和掌握MA TLAB 程序设计方法;

2.3设计要求

要求实现灰度图像的LZW编码和解码恢复图像;处理结果要求最终图像显示,且计算图像的信息熵,平均码字长度,编码效率,压缩比。

扩展要求:读写GIF图片。

3.总体设计方案

3.1系统运行环境

Windows 8.1/10系统

3.2编程软件平台

MATLAB R2013a/R2014a

3.3LZW编码算法原理

LZW算法是一种基于字典的编码——将变长的输入符号串映射成定长的码字——形成一本短语词典索引(串表),利用字符出现的频率冗余度及串模式高使用率冗余度达到压缩的目的。该算法只需要一遍扫描,且具有自适应的特点,不需要保存和传送串表。(1)LZW压缩算法

初始化:

将所有单个字符的串放入串表ST中(共n2项,实际操作时不必放入,只

需空出串表的前n2项,字符对应码字所对应的的串表索引即可);

读首字符入前缀串w;

设置码长codeBits=n+1;

设置串表中当前表项的索引值next=初始码字=n2;

循环:

读下一输入字符c;

若c=EOF(文件结束符),则输出w的码字,结束循环(输出结束码字);

若wc已在串表中,则w=wc,转到循环开始处;

否则,输出w的码字,将wc放入ST中的next中,next++;

令w=c,转到循环开始处;

若next的位数超过码长(>codeBits),则codeBits++;

若串表已满(next的位数已超过最大码长12),则清空串表,输出清表码字,转到初始化开始处。

(2)LZW还原算法

初始化:

将所有单个字符串放入串表ST中;(共n2项【码字为0-n2-1】),实

际操作不必放入,只需空出串表前n2项,字符对应码字对应字符串表索

引即可)

串表中当前表项索引next=n2+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算法流程图设计

相关文档
最新文档