毕业论文压缩算法
毕业论文压缩算法
下面的都是毕业论文范文,有用的话,请给我红旗LMX2350/LMX2352芯片简介及电路设计基于LMX2306/16/26 芯片简介及应用电路设计 基于LT5500f 的 GHzLNA/混频器电路设计基于LT5517 40MHZ到90NHZ 积分解调器的设计基于LT5527的400MHz至高信号电平下变频混频器电路设计基于LT5572的芯片简介及应用电路设计基于LT5516的芯片简介及应用电路设计 基于MAX2039的芯片简介及应用电路设计 基于MAX2102/MAX2105芯片简介及应用电路设计基于MAX2106 芯片简介及应用电路设计 基于MAX2323/MAX2325 的芯片简介及应用电路设计 基于MAX2338芯片简介及应用电路设计 基于MAX2511的芯片简介及应用电路设计 基于MAX2685的芯片简介及应用电路设计 基于MAX2753的芯片简介及应用电路设计基于MAX9981芯片简介及应用电路设计基于MAX9994的芯片简介及应用电路设计 基于MAX9995的芯片简介及应用电路设计基于MC12430的芯片简介及应用电路设计基于MC88920芯片简介及应用电路设计基于MPC97H73的简介及电路设计基于MPC9229 芯片简介及应用电路设计 基于mpc9239芯片简介及应用电路设计 基于MPC9992 芯片简介及应用电路设计基于mpc92433芯片的简介及应用电路设计基于TQ5121的无线数据接收器电路设计基于TQ5135的芯片简介及应用电路设计基于TQ5631 3V PCS波段CDMA射频放大混频器电路设计语音信号处理技术及应用网络文档发放与认证管理系统网络配置管理对象分析与应用三维激光扫描仪中图像处理快速算法设计基于分形的自然景物图形的生成图像压缩编码基于奇异值分解的数字图像水印算法研究数字图象融合技术汽车牌照定位与分割技术的研究焦炉立火道温度软测量模型设计加热炉的非线性PID控制算法研究直接转矩控制交流调速系统的转矩数字调节器无线会议系统的设计温度检测控制仪器简易远程心电监护系统基于LabVIEW的测试结果语音表达系统程控交换机房环境监测系统设计单片机控制的微型频率计设计基于DSP的短波通信系统设计(射频单元)等精度数字频率计不对称半桥直直变换器仿真研究基于MATLAB的直流电动机双闭环调速系统无线传输应变型扭矩仪模糊控制在锅炉焊接过程中的应用三层结构的工作流OA的应用与实现基于的永磁直线电机的有限元分析及计算音频信号的数字水印技术低压CMOS零延迟1:11时钟发生器基于ADF4116/4117/4118的芯片简介及应用电路设计ADF4193芯片简介及应用电路设计LMX2310U/LMX2311U/LMX2312U/LMX2313U芯片简介及应用电路设计MAX2754芯片简介及应用电路设计MPC92432芯片简介及应用电路设计高增益矢量乘法器基于400MSPS 14-Bit,直接数字合成器AD9951基于900MHz低压LVPECL时钟合成器的电路设计基于 MAX2450芯片简介及应用电路设计基于AD831低失真有源混频器的电路设计基于AD7008的芯片简介及应用电路设计基于AD8341 芯片简介及应用电路设计基于AD8348的50M-1000M正交解调器基于AD8349的简介及应用电路设计基于AD9511的简介及电路应用基于AD9540的芯片简介及电路设计基于AD9952的芯片简介和应用电路设计基于ADF436的集成数字频率合成器与压控振荡器基于ADF4007简介及电路设计基于ADF4110/ADF4111/ADF4112/ADF4113上的应用电路设计基于ADF4154的芯片简介及应用电路设计基于ADF4360-0的芯片简介及应用电路设计基于ADF4360-3电路芯片简介及应用电路设计基于ADF4360-6的简介及应用电路设计基于ADF4360-7的集成整形N合成器的压控振荡器基于ADL5350的简介及应用电路设计基于CMOS 200 MHZ数字正交上变频器设计基于CMOS 的AD9831芯片数字频率合成器的电路设计基于CX3627ERDE的芯片简介及应用电路设计基于CXA3275Q的芯片简介及应用电路设计基于CXA3556N的芯片简介及应用电路设计基于IMA-93516的芯片简介及应用电路设计VPN技术研究UCOSII在FPGA上的移植IPTV影音信号传输网络设计GSM移动通信网络优化的研究与实现 FSK调制系统DSP处理GPS接收数据的应用研究Boot Loader在嵌入式系统中的应用ADS宽带组网与测试基于FPGA的IIR滤波器设计MP3宽带音频解码关键技术的研究与实现基本门电路和数值比较器的设计编码器和译码器的设计智力竞赛抢答器移位寄存器的设计与实现四选一数据选择器和基本触发器的设计四位二进制加法器和乘法器数字钟的设计与制作数字秒表的设计数控分频器及其应用汽车尾灯控制器的设计交通灯控制器的设计简易电子琴的设计简单微处理器的设计DSP最小系统的设计与开发基于消息队列机制(MSMQ)的网络监控系统基于DSP的电机控制的研究基于数学形态学的织物经纬密度的研究纱条均匀度测试的研究 图像锐化算法的研究及其DSP实现 手写体数字识别有限冲击响应滤波器的设计及其DSP实现 同步电机模型的MATLAB仿真USB通信研究及其在虚拟仪器中的应用设计WLAN的OFDM信道估计算法研究采用S12交换机支持NGN下MEGACO呼叫流程的设计基于语音信号预测编码的数据压缩算法的研究与实现基于小波变换数字图像水印盲算法基于小波变换和神经网络的短期负荷预测研究嵌入式系统建模仿真环境PtolemyII的研究与应用分布式计算环境的设计与实现复合加密系统中DES算法的实现大学自动排课算法设计与实现基于AES的加密机制的实现基于AES算法的HASH函数的设计与应用基于DM642的视频编码器优化和实现基于Huffman编码的数据压缩算法的研究与实现基于internet的嵌入式远程测控终端研制基于Matlab的FMCW(调频连续波)的中频正交处理和脉冲压缩处理 基于MATLAB的对称振子阻抗特性和图形仿真基于windows的串口通信软件设计基于粗糙集和规则树的增量式知识获取算法自适应蚁群算法在DNA序列比对中的应用远程监护系统的数据记录与传输技术研究基于分布式体系结构的工序调度系统的设计基于活动图像编码的数据压缩算法的设计与实现基于宽带声音子带编码的数据压缩算法的设计与实现基于网络数据处理XML技术的设计基于小波变换的数据压缩算法的研究与实现基于小波变换的配电网单相接地故障定位研究及应用英特网上传输文件的签名与验证程序
很多的大学生都会觉得非常苦恼,明明是自己一句一句写出来的论文基本上都是原创,可是在查重的时候却发现重复率太高,那么论文查重应该怎么做?1、巧妙修改论文查重是机器完成的,因为机器是按照算法去进行计算,所以有的时候就会觉得非常的死板,在修改的时候就需要特别的重视方法。如果是专有名词数量过多,这种情况就需要减少专有名词,因为这些专有名词很难去进行替换,可以巧妙的利用一些代词去进行替换,这样专有名词的数量就会减少,而其他的重复的地方也需要特别重视技巧,语言的意义不要发生变化,但是要让语言的表达显得非常的灵活,可以进行转换的方式去进行修改。2、适当的增加或减少内容论文查重不过关,大家需要通读全文,有的小地方只需要去进行替换就可以了,可是在修改的时候,大家需要适当的去删一些内容或者是增加内容。如果发现一段的重复率实在是太高了,已经是达到了6成左右的重复,倒不如直接把这一段全部删掉,然后重新再写,这样反而会节约时间,如果一字一句的去修改,工作量会非常的大,而且也会觉得非常的辛苦。论文查重应该怎么做的方法就为大家介绍这里,写论文是非常辛苦的工作,大家还是应该要摆正心态,不要有投机取巧的思想,也不要去有抄袭的思想,要保持着坚定的诚信的原则。
离散余弦变换是jpeg标准的,你还可以增加jpeg2000的内容,它是以小波变换压缩的,很快将替代jpegjpeg国际标准请参考 上面有详细的背景介绍,标准的发展,以及jpeg的压缩算法要查找相关论文,请上 用关键词jpeg搜索。或者你学校图书馆买IEEE的论文数据库的话可以上
现在的大学,一般都会要求学生对毕业论文进行查重,重复率过高的论文,是不允许参加毕业答辩的。
说实话,如果论文是全部自己写的,在查重时不会出现任何问题。所以写论文的第一步,还是要致力于全部自己写。
但是,由于水平有限,很多学生在写论文,特别是背景介绍、理论基础的相关内容时,会选择一些已有的文章作为参考,甚至是全文借鉴。在这种情况下,查重后的重复率就会特别高。
那么,如果降低重复率呢?就是对你抄袭或者参考的内容部分,进行有针对性的修改。
1、修改字词。一般来说,连续30个字左右完全一致,系统就会认为你的文章中出现了重复。所以,将你借鉴来的内容,按照同义词的方法进行替换,或者增加或者减少标点符号,也能够对降低重复率有所帮助。
2、进行压缩。本身你也不应该通篇应用,更好的方法是总结文献中的相关观点,然后将总结的内容放到你的文章中来。这样,会显得你的文章更有分量。
3、融会贯通。最高境界,就是将若干篇文献的内容根据你的理解打通,将他们的观点用于服务你的文章,达到融会贯通的目的。这个时候,绝不可能出现重复率过高的问题。
总之,纸上得来终觉浅,文章还是要自己写的。
图片压缩算法的研究论文
任何压缩算法的压缩比都不能无限的提高的。最有效地方法就是降低图片的分辨率,即像素值。图片的每个像素占用4个字节,假设一般JPG格式的压缩比为1:10的话,40K字节最多只能储存 40000/4*10 = 10万像素的图片,即图片的长乘以宽不超过10万,一般图片长宽比是4:3;所以图片的大小最好不超过 360 X 270 。降低图片的分辨率就是缩小图片,用Graphics对象、Bitmap对象就能做到。Bitmap bmpDest = new Bitmap(360,270);Bitmap bmpSrc = new Bitmap("");Graphics g = (bmpDest);(bmpSrc, rectDest,rectSrc,); 或者将PictureBox的长和宽限定在360 X 270
数字图像压缩技术的研究及进展摘要:数字图像压缩技术对于数字图像信息在网络上实现快速传输和实时处理具有重要的意义。本文介绍了当前几种最为重要的图像压缩算法:JPEG、JPEG2000、分形图像压缩和小波变换图像压缩,总结了它们的优缺点及发展前景。然后简介了任意形状可视对象编码算法的研究现状,并指出此算法是一种产生高压缩比的图像压缩算法。关键词:JPEG;JPEG2000;分形图像压缩;小波变换;任意形状可视对象编码一 引 言 随着多媒体技术和通讯技术的不断发展,多媒体娱乐、信息高速公路等不断对信息数据的存储和传输提出了更高的要求,也给现有的有限带宽以严峻的考验,特别是具有庞大数据量的数字图像通信,更难以传输和存储,极大地制约了图像通信的发展,因此图像压缩技术受到了越来越多的关注。图像压缩的目的就是把原来较大的图像用尽量少的字节表示和传输,并且要求复原图像有较好的质量。利用图像压缩,可以减轻图像存储和传输的负担,使图像在网络上实现快速传输和实时处理。 图像压缩编码技术可以追溯到1948年提出的电视信号数字化,到今天已经有50多年的历史了[1]。在此期间出现了很多种图像压缩编码方法,特别是到了80年代后期以后,由于小波变换理论,分形理论,人工神经网络理论,视觉仿真理论的建立,图像压缩技术得到了前所未有的发展,其中分形图像压缩和小波图像压缩是当前研究的热点。本文对当前最为广泛使用的图像压缩算法进行综述,讨论了它们的优缺点以及发展前景。二 JPEG压缩 负责开发静止图像压缩标准的“联合图片专家组”(Joint Photographic Expert Group,简称JPEG),于1989年1月形成了基于自适应DCT的JPEG技术规范的第一个草案,其后多次修改,至1991年形成ISO10918国际标准草案,并在一年后成为国际标准,简称JPEG标准。1.JPEG压缩原理及特点 JPEG算法中首先对图像进行分块处理,一般分成互不重叠的 大小的块,再对每一块进行二维离散余弦变换(DCT)。变换后的系数基本不相关,且系数矩阵的能量集中在低频区,根据量化表进行量化,量化的结果保留了低频部分的系数,去掉了高频部分的系数。量化后的系数按zigzag扫描重新组织,然后进行哈夫曼编码。JPEG的特点优点:(1)形成了国际标准;(2)具有中端和高端比特率上的良好图像质量。缺点:(1)由于对图像进行分块,在高压缩比时产生严重的方块效应;(2)系数进行量化,是有损压缩;(3)压缩比不高,小于50。 JPEG压缩图像出现方块效应的原因是:一般情况下图像信号是高度非平稳的,很难用Gauss过程来刻画,并且图像中的一些突变结构例如边缘信息远比图像平稳性重要,用余弦基作图像信号的非线性逼近其结果不是最优的。2. JPEG压缩的研究状况及其前景 针对JPEG在高压缩比情况下,产生方块效应,解压图像较差,近年来提出了不少改进方法,最有效的是下面的两种方法:(1)DCT零树编码 DCT零树编码把 DCT块中的系数组成log2N个子带,然后用零树编码方案进行编码。在相同压缩比的情况下,其PSNR的值比 EZW高。但在高压缩比的情况下,方块效应仍是DCT零树编码的致命弱点。(2)层式DCT零树编码 此算法对图像作 的DCT变换,将低频 块集中起来,做 反DCT变换;对新得到的图像做相同变换,如此下去,直到满足要求为止。然后对层式DCT变换及零树排列过的系数进行零树编码。 JPEG压缩的一个最大问题就是在高压缩比时产生严重的方块效应,因此在今后的研究中,应重点解决 DCT变换产生的方块效应,同时考虑与人眼视觉特性相结合进行压缩。三 JEPG2000压缩 JPEG2000是由ISO/IEC JTCISC29标准化小组负责制定的全新静止图像压缩标准。一个最大改进是它采用小波变换代替了余弦变换。2000年3月的东京会议,确定了彩色静态图像的新一代编码方式—JPEG2000图像压缩标准的编码算法。1.JPEG2000压缩原理及特点 JPEG2000编解码系统的编码器和解码器的框图如图1所示。编码过程主要分为以下几个过程:预处理、核心处理和位流组织。预处理部分包括对图像分片、直流电平(DC)位移和分量变换。核心处理部分由离散小波变换、量化和熵编码组成。位流组织部分则包括区域划分、码块、层和包的组织。 JPEG2000格式的图像压缩比,可在现在的JPEG基础上再提高10%~30%,而且压缩后的图像显得更加细腻平滑。对于目前的JPEG标准,在同一个压缩码流中不能同时提供有损和无损压缩,而在JPEG2000系统中,通过选择参数,能够对图像进行有损和无损压缩。现在网络上的JPEG图像下载时是按“块”传输的,而JPEG2000格式的图像支持渐进传输,这使用户不必接收整个图像的压缩码流。由于JPEG2000采用小波技术,可随机获取某些感兴趣的图像区域(ROI)的压缩码流,对压缩的图像数据进行传输、滤波等操作。2.JPEG2000压缩的前景 JPEG2000标准适用于各种图像的压缩编码。其应用领域将包括Internet、传真、打印、遥感、移动通信、医疗、数字图书馆和电子商务等。JPEG2000图像压缩标准将成为21世纪的主流静态图像压缩标准。四 小波变换图像压缩1.小波变换图像压缩原理小波变换用于图像编码的基本思想就是把图像根据Mallat塔式快速小波变换算法进行多分辨率分解。其具体过程为:首先对图像进行多级小波分解,然后对每层的小波系数进行量化,再对量化后的系数进行编码。小波图像压缩是当前图像压缩的热点之一,已经形成了基于小波变换的国际压缩标准,如MPEG-4标准,及如上所述的JPEG2000标准 。2.小波变换图像压缩的发展现状及前景 目前3个最高等级的小波图像编码分别是嵌入式小波零树图像编码(EZW),分层树中分配样本图像编码(SPIHT)和可扩展图像压缩编码(EBCOT)。(1)EZW编码器 1993年,Shapiro引入了小波“零树”的概念,通过定义POS、NEG、IZ和ZTR四种符号进行空间小波树递归编码,有效地剔除了对高频系数的编码,极大地提高了小波系数的编码效率。此算法采用渐进式量化和嵌入式编码模式,算法复杂度低。EZW算法打破了信息处理领域长期笃信的准则:高效的压缩编码器必须通过高复杂度的算法才能获得,因此EZW编码器在数据压缩史上具有里程碑意义。(2)SPIHT编码器 由Said和Pearlman提出的分层小波树集合分割算法(SPIHT)则利用空间树分层分割方法,有效地减小了比特面上编码符号集的规模。同EZW相比,SPIHT算法构造了两种不同类型的空间零树,更好地利用了小波系数的幅值衰减规律。同EZW编码器一样,SPIHT编码器的算法复杂度低,产生的也是嵌入式比特流,但编码器的性能较EZW有很大的提高。(3)EBCOT编码器优化截断点的嵌入块编码方法(EBCOT)首先将小波分解的每个子带分成一个个相对独立的码块,然后使用优化的分层截断算法对这些码块进行编码,产生压缩码流,结果图像的压缩码流不仅具有SNR可扩展而且具有分辨率可扩展,还可以支持图像的随机存储。比较而言,EBCOT算法的复杂度较EZW和SPIHT有所提高,其压缩性能比SPIHT略有提高。小波图像压缩被认为是当前最有发展前途的图像压缩算法之一。小波图像压缩的研究集中在对小波系数的编码问题上。在以后的工作中,应充分考虑人眼视觉特性,进一步提高压缩比,改善图像质量。并且考虑将小波变换与其他压缩方法相结合。例如与分形图像压缩相结合是当前的一个研究热点。五 分形图像压缩 1988年,Barnsley通过实验证明分形图像压缩可以得到比经典图像编码技术高几个数量级的压缩比。1990年,Barnsley的学生提出局部迭代函数系统理论后,使分形用于图像压缩在计算机上自动实现成为可能。1. 分形图像压缩的原理 分形压缩主要利用自相似的特点,通过迭代函数系统(Iterated Function System, IFS)实现。其理论基础是迭代函数系统定理和拼贴定理。 分形图像压缩把原始图像分割成若干个子图像,然后每一个子图像对应一个迭代函数,子图像以迭代函数存储,迭代函数越简单,压缩比也就越大。同样解码时只要调出每一个子图像对应的迭代函数反复迭代,就可以恢复出原来的子图像,从而得到原始图像。2.几种主要分形图像编码技术 随着分形图像压缩技术的发展,越来越多的算法被提出,基于分形的不同特征,可以分成以下几种主要的分形图像编码方法。(1)尺码编码方法 尺码编码方法是基于分形几何中利用小尺度度量不规则曲线长度的方法,类似于传统的亚取样和内插方法,其主要不同之处在于尺度编码方法中引入了分形的思想,尺度 随着图像各个组成部分复杂性的不同而改变。(2)迭代函数系统方法 迭代函数系统方法是目前研究最多、应用最广泛的一种分形压缩技术,它是一种人机交互的拼贴技术,它基于自然界图像中普遍存在的整体和局部自相关的特点,寻找这种自相关映射关系的表达式,即仿射变换,并通过存储比原图像数据量小的仿射系数,来达到压缩的目的。如果寻得的仿射变换简单而有效,那么迭代函数系统就可以达到极高的压缩比。(3)A-E-Jacquin的分形方案 A-E-Jacquin的分形方案是一种全自动的基于块的分形图像压缩方案,它也是一个寻找映射关系的过程,但寻找的对象域是将图像分割成块之后的局部与局部的关系。在此方案中还有一部分冗余度可以去除,而且其解码图像中存在着明显的方块效应。3.分形图像压缩的前景 虽然分形图像压缩在图像压缩领域还不占主导地位,但是分形图像压缩既考虑局部与局部,又考虑局部与整体的相关性,适合于自相似或自仿射的图像压缩,而自然界中存在大量的自相似或自仿射的几何形状,因此它的适用范围很广。六 其它压缩算法 除了以上几种常用的图像压缩方法以外,还有:NNT(数论变换)压缩、基于神经网络的压缩方法、Hibert扫描图像压缩方法、自适应多相子带压缩方法等,在此不作赘述。下面简单介绍近年来任意形状纹理编码的几种算法[10]~ [13]。(1)形状自适应DCT(SA-DCT)算法 SA-DCT把一个任意形状可视对象分成 的图像块,对每块进行DCT变换,它实现了一个类似于形状自适应Gilge DCT[10][11]变换的有效变换,但它比Gilge DCT变换的复杂度要低。可是,SA-DCT也有缺点,它把像素推到与矩形边框的一个侧边相平齐,因此一些空域相关性可能丢失,这样再进行列DCT变换,就有较大的失真了[11][14][15]。(2)Egger方法 Egger等人[16][17]提出了一个应用于任意形状对象的小波变换方案。在此方案中,首先将可视对象的行像素推到与边界框的右边界相平齐的位置,然后对每行的有用像素进行小波变换,接下来再进行另一方向的小波变换。此方案,充分利用了小波变换的局域特性。然而这一方案也有它的问题,例如可能引起重要的高频部分同边界部分合并,不能保证分布系数彼此之间有正确的相同相位,以及可能引起第二个方向小波分解的不连续等。(3)形状自适应离散小波变换(SA-DWT) Li等人提出了一种新颖的任意形状对象编码,SA-DWT编码[18]~[22]。这项技术包括SA-DWT和零树熵编码的扩展(ZTE),以及嵌入式小波编码(EZW)。SA-DWT的特点是:经过SA-DWT之后的系数个数,同原任意形状可视对象的像素个数相同;小波变换的空域相关性、区域属性以及子带之间的自相似性,在SA-DWT中都能很好表现出来;对于矩形区域,SA-DWT与传统的小波变换一样。SA-DWT编码技术的实现已经被新的多媒体编码标准MPEG-4的对于任意形状静态纹理的编码所采用。 在今后的工作中,可以充分地利用人类视觉系统对图像边缘部分较敏感的特性,尝试将图像中感兴趣的对象分割出来,对其边缘部分、内部纹理部分和对象之外的背景部分按不同的压缩比进行压缩,这样可以使压缩图像达到更大的压缩比,更加便于传输。七 总结 图像压缩技术研究了几十年,取得了很大的成绩,但还有许多不足,值得我们进一步研究。小波图像压缩和分形图像压缩是当前研究的热点,但二者也有各自的缺点,在今后工作中,应与人眼视觉特性相结合。总之,图像压缩是一个非常有发展前途的研究领域,这一领域的突破对于我们的信息生活和通信事业的发展具有深远的影响。参考文献:[1] 田青. 图像压缩技术[J]. 警察技术, 2002, (1):30-31.[2] 张海燕, 王东木等. 图像压缩技术[J]. 系统仿真学报, 2002, 14(7):831-835.[3] 张宗平, 刘贵忠. 基于小波的视频图像压缩研究进展[J]. 电子学报, 2002, 30(6):883-889.[4] 周宁, 汤晓军, 徐维朴. JPEG2000图像压缩标准及其关键算法[J]. 现代电子技术, 2002, (12):1-5.[5] 吴永辉, 俞建新. JPEG2000图像压缩算法概述及网络应用前景[J]. 计算机工程, 2003, 29(3):7-10.[6] J M Shaprio. Embedded image coding using zerotree of wavelet coefficients[J]. IEEE Trans. on Signal Processing, 1993, 41(12): 3445-3462.[7] A Said, W A Pearlman. A new fast and efficient image codec based on set partitioning in hierarchical trees[J]. IEEE Trans. on Circuits and Systems for Video Tech. 1996, 6(3): 243-250.[8] D Taubman. High performance scalable image compression with EBCOT[J]. IEEE Transactions on Image Processing, 2000, 9(7): 1158–1170.[9] 徐林静, 孟利民, 朱建军. 小波与分行在图像压缩中的比较及应用. 中国有线电视, 2003, 03/04:26-29.[10] M Gilge, T Engelhardt, R Mehlan. Coding of arbitrarily shaped image segments based on a generalized orthogonal transform[J]. Signal Processing: Image Commun., 1989, 1(10): 153–180.[11] T Sikora, B Makai. Shape-adaptive DCT for generic coding of video[J]. IEEE Trans. Circuits Syst. Video Technol., 1995, 5(1): 59–62.[12] T Sikora, S Bauer, B Makai. Efficiency of shape-adaptive 2-D transforms for coding of arbitrarily shaped image segments[J]. IEEE Trans. Circuits Syst. Video Technol., 1995, 5(3): 254–258.[13]邓家先 康耀红 编著 《信息论与编码》
1.用matlab实现图像压缩时,如何将图片仿真 图像压缩是当今信息时代迫切需求的一门图像处理技术,它极大的减少了图像的数据量,为图像的存储,传输提供了方便。 小波变换,是一种广泛用于图像压缩的方法。它能让图像按不同的分辨率分析。 根据Mallat算法的思想,图像能分解成一个轮廓信号(低频子图)和水平,垂直,对角线三个方向上的细节信号(高频子图)。而轮廓信号又可以进一步分解。 而图像的主要能量部分是低频部分,而且人眼视觉系统对低频部分更为敏感,所以可以对低频部分采用较低压缩比;对高频部分采用较大压缩比来进行压缩。 本文提出的是一种结合小波变换,DCT变换和矢量量化的压缩方法。根据人眼的视觉特性,首先对图像进行小波分解,然后,对低频分量进行压缩比不大的DCT变换;对不同方向不同分辨率的高频分量进行不同码字大小的矢量量化编码,然后对反变换和解码后的系数进行小波重构。矢量量化过程中的码书设计采用的是LBG算法。 这样,根据对图像质量的不同要求,我们可以改变小波分解的层数,来得到不同压缩比的图像。本篇论文只对小波分解一层和两层后压缩进行了仿真和分析,表明该方案结合了各种压缩方法的优点,在满足图像质量的同时能得到较大的压缩比。 目前,在包装装潢设计中常用的图形处理软件有Pho-toshop,CorelDraw,AutoCAD等。但是这些软件中很少涉及到对图像进行压缩处理,以满足图像进行传输和储存的需要。 基于这一点考虑,在此尝试着用MATLAB编程来处理包装装潢图像的压缩,实现包装与计算机的紧密结合。 1 MATLAB MATLAB是MathWorks公司推出的一套高性能的数值计算和可视化软件,它集数值分析、矩阵运算、信号处理和图像显示于一体,它附带的小波分析工具箱功能强大,可以完成小波分析的绝大部分工作。 MATLAB工具箱的出现避免了程序设计中的重复性劳动,缩短了开发周期,降低了成本,因而受到工科院校师生和研究人员的青睐。 在介绍利用MATLAB小波工具压缩图像的文献中,总是将真彩色RGB图像转换为灰度级索引图像进行处理.经过这种处理以后,图像的存储数据能得到一定的压缩,但由压缩后的数据难以恢复成理想的彩色图像。 文中用MATLAB中有关函数处理图像压缩,而且由压缩后的数据可以还原出图像.实验结果表明,还原出的图像效果是理想的。文中主要以lena图像的处理为例,对它进行二进小波多层分解后,将低频和高频近似的系数矩阵作相应的处理,来研究用MATLAB中的小波工具箱压缩图像的方法。 2 图像压缩方法 在实际应用中,首先需要从图像文件中读取图像数据.MATLAB使用imreed()函数完这一任务.例如,在电脑D盘中有一彩色图像文件,则可由下述语句读取: X=imread(′D:\picl.′); MATLAB图像处理工具箱支持4种基本图像类型:索引图像、灰度图像、二进制图像和RGB图像.MATLAB直接从图像文件中读取的图像为RGB图像.它存储在三维数组中。这个三维数组有3个面,依次对应子红(Red)、绿(Green)、蓝(Blue)3种颜色,而面中的数据则分别是这3种颜色的强度值,面中的元素对应于图像中的像素点。 索引图像数据包括图像矩阵X与颜色图数组map,其中颜色图map是按图像中颜色值进行排序后的数组。对于每个像素,图像矩阵X包含一个值,这个值就是颜色图数组map中的索引。 颜色图map为m*3双精度矩阵,各行分别指定红、绿、蓝(R、G、B)单色值,map=〔RGB〕,R、C、B为值域为〔0,1〕的实数值,m为索引图像包含的像素个数.然后可根据情况采用不同的小波函数,进行索引图像的分解压缩。这里对上面产生的索引图像X用dbl小波进行2层分解。 〔c,l〕=wavedec2(X,2,′dbl′)。 在这里,一个索引图像作小波分解后,可得到一系列不同分辨率的子图像,不同分辨率的子图像对应的频率是不相同的.高分辨率(即高频细节)子图像上大部分点的数值接近于0,越是高频这种现象越明显.对一个图像来说,表现一个图像最主要的部分是低频(即近似)部分。 多层小波分解的所有成分系数均保存在向量c中,低频近似与高频细节的系数需从向量C中提取。MATLAB分别使用appcoet2()和detcoef2()函数来完成这一工作。 这种方法是对低频和高频部分进行处理,因而提取低频和高频近似系数。 cAl=appcoef2(c,1,′dbl,′1);cH1=detcoef2(′h′,c,1,1); cDl=detcoef2(′d′,c,l,1);cVl=detcoef2(′v′,c,l,1)。 matlab实现离散余弦变换压缩(JPEG压缩原理) JPEG图像压缩算法: 输入图像被分成8*8或16*16的小块,然后对每一小块进行二维DCT(离散余弦变换)变换,变换后的系数量化、编码并传输; JPEG文件解码量化了的DCT系数,对每一块计算二维逆DCT变换,最后把结果块拼接成一个完整的图像。在DCT变换后舍弃那些不严重影响图像重构的接近0的系数。 DCT变换的特点是变换后图像大部分能量集中在左上角,因为左上放映原图像低频部分数据,右下反映原图像高频部分数据。而图像的能量通常集中在低频部分。 实例程序: function Jpeg I=imread('D:\MATLAB7\toolbox\images\imdemos\'); %该图片在安装matlab的目录中找,原图为灰度图象 。 2.使用MATLAB图像压缩怎么做 I = imread(''); % 输入图像 I = im2double(I); % 数据类型转换 T = dctmtx(8); % 计算二维离散DCT矩阵 dct = @(x)T * x * T'; % 设置函数句柄 B = blkproc(I,[8 8],dct); % 图像块处理 mask = [1 1 1 1 0 0 0 0 % 掩膜 1 1 1 0 0 0 0 0 1 1 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0]; B2 = blkproc(B,[8 8],@(x)mask.* x); % 图像块处理 invdct = @(x)T' * x * T; % 设置函数句柄 I2 = blkproc(B2,[8 8],invdct); % 图像块处理 imshow(I), figure, imshow(I2) % 显示原始图像和压缩重构图像 3.用matlab把11张tif图片做成一个连续动画 使用如下代码方式可以达到你想要的效果。 clear; clc; for i=2:50 c=strcat('a',num2str(i));%这里可以根据自己图片名字儿作相应的修改 c=strcat(c,'.bmp'); I=imread(c); % I=rgb2gray(I) figure(1); imshow(I); end 图片的保存方式如:,这样可以实现你的汽车动画。如果想要使用你的汽车图片做的话,请把汽车图片发给我,我帮你看看。
无损压缩算法研究与实现论文
多媒体图像压缩技术姓名:Vencent Lee摘要:多媒体数据压缩技术是现代网络发展的关键性技术之一。由于图像和声音信号中存在各种各样的冗余,为数据压缩提供了可能。数据压缩技术有无损压和有损压缩两大类,这些压缩技术又各有不同的标准。一、多媒体数据压缩技术仙农(C.E.Shannon)在创立信息论时,提出把数据看作是信息和冗余度的组合。早期的数据压缩之所以成为信息论的一部分是因为它涉及冗余度问题。而数据之所以能够被压缩是因为其中存在各种各样的冗余;其中有时间冗余性、空间冗余性、信息熵冗余、先验知识冗余、其它冗余等。时间冗余是语音和序列图像中常见的冗余,运动图像中前后两帧间就存在很强的相关性,利用帧间运动补兴就可以将图像数据的速率大大压缩。语音也是这样。尤其是浊音段,在相当长的时间内(几到几十毫秒)语音信号都表现出很强的周期性,可以利用线性预测的方法得到较高的压缩比。空间冗余是用来表示图像数据中存在的某种空间上的规则性,如大面积的均匀背景中就有很大的空间冗余性。信息熵冗余是指在信源的符号表示过程中由于未遵循信息论意义下最优编码而造成的冗余性,这种冗余性可以通过熵编码来进行压缩,经常使用的如Huff-man编码。先验知识冗余是指数据的理解与先验知识有相当大的关系,如当收信方知道一个单词的前几个字母为administrato时,立刻就可以猜到最后一个字母为r,那么在这种情况下,最后一个字母就不带任何信息量了,这就是一种先验知识冗余。其它冗余是指那些主观无法感受到的信息等带来的冗余。通常数据压缩技术可分为无损压缩(又叫冗余压缩)和有损压缩(又叫熵压缩)两大类。无损压缩就是把数据中的冗余去掉或减少,但这些冗余量是可以重新插入到数据中的,因而不会产生失真。该方法一般用于文本数据的压缩,它可以保证完全地恢复原始数据;其缺点是压缩比小(其压缩比一般为2:1至5:1)。有损压缩是对熵进行压缩,因而存在一定程度的失真;它主要用于对声音、图像、动态视频等数据进行压缩,压缩比较高(其压缩比一般高达20:1以上。最新被称为“E—igen—ID”的压缩技术可将基因数据压缩1.5亿倍)。对于多媒体图像采用的有损压缩的标准有静态图像压缩标准(JPEG标准,即‘JointPhotographicExpertGroup’标准)和动态图像压缩标准(MPEG标准,即‘MovingPictureExpertGroup’标准)。JPEG利用了人眼的心理和生理特征及其局限性来对彩色的、单色的和多灰度连续色调的、静态图像的、数字图像的压缩,因此它非常适合不太复杂的以及一般来源于真实景物的图像。它定义了两种基本的压缩算法:一种是基于有失真的压缩算法,另一种是基于空间线性预测技术(DPCM)无失真的压缩算法。为了满足各种需要,它制定了四种工作模式:无失真压缩、基于DCT的顺序工作方式、累进工作方式和分层工作方式。MPEG用于活动影像的压缩。MPEG标准具体包三部分内容:(1)MPEG视频、(2)MPEG音频、(3)MP系统(视频和音频的同步)。MPEG视频是标准的核心分,它采用了帧内和帧间相结合的压缩方法,以离散余变换(DCT)和运动补偿两项技术为基础,在图像质量基不变的情况下,MPEG可把图像压缩至1/100或更MPEG音频压缩算法则是根据人耳屏蔽滤波功能。利用音响心理学的基本原理,即“某些频率的音响在重放其频率的音频时听不到”这样一个特性,将那些人耳完全不到或基本上听到的多余音频信号压缩掉,最后使音频号的压缩比达到8:1或更高,音质逼真,与CD唱片可媲美。按照MPEG标准,MPEG数据流包含系统层和压层数据。系统层含有定时信号,图像和声音的同步、多分配等信息。压缩层包含经压缩后的实际的图像和声数据,该数据流将视频、音频信号复合及同步后,其数据输率为1.5MB/s。其中压缩图像数据传输率为1.2M压缩声音传输率为0.2MB/s。MPEG标准的发展经历了MPEG—I,MPEG一2、MPEG一4、MPEG-7、MPEG一21等不同层次。在MPEG的不同标准中,每—个标准都是建立在前面的标准之上的,并与前面的标准向后的兼容。目前在图像压缩中,应用得较多的是MPEG一4标准,MPEG-是在MPEG-2基础上作了很大的扩充,主要目标是多媒体应用。在MPEG一2标准中,我们的观念是单幅图像,而且包含了一幅图像的全部元素。在MPEG一4标准下,我们的观念变为多图像元素,其中的每—个多图像元素都是独立编码处理的。该标准包含了为接收器所用的指令,告诉接收器如何构成最终的图像。上图既表示了MPEG一4解码器的概念,又比较清楚地描绘了每个部件的用途。这里不是使用单一的视频或音频解码器,而是使用若干个解码器,其中的每一个解码器只接收某个特定的图像(或声音)元素,并完成解码操作。每个解码缓冲器只接收属于它自己的灵敏据流,并转送给解码器。复合存储器完成图像元素的存储,并将它们送到显示器的恰当位置。音频的情况也是这样,但显然不同点是要求同时提供所有的元素。数据上的时间标记保证这些元素在时间上能正确同步。MPEG一4标准对自然元素(实物图像)和合成元素进行区分和规定,计算机生成的动画是合成元素的一个例子。比如,一幅完整的图像可以包含一幅实际的背景图,并在前面有一幅动画或者有另外一幅自然图像。这样的每一幅图像都可以作最佳压缩,并互相独立地传送到接收器,接收器知道如何把这些元素组合在一起。在MPEG一2标准中,图像被看作一个整体来压缩;而在MPEG一4标准下,对图像中的每一个元素进行优化压缩。静止的背景不必压缩到以后的I帧之中去,否则会使带宽的使用变得很紧张。而如果这个背景图像静止10秒钟,就只要传送一次(假设我们不必担心有人在该时间内切人此频道),需要不断传送的仅是前台的比较小的图像元素。对有些节目类型,这样做会节省大量的带宽。MPEG一4标准对音频的处理也是相同的。例如,有一位独唱演员,伴随有电子合成器,在MPEG一2标准下,我们必须先把独唱和合成器作混合,然后再对合成的音频信号进行压缩与传送。在MPEG一4标准下,我们可以对独唱作单独压缩,然后再传送乐器数字接口的声轨信号,就可以使接收器重建伴音。当然,接收器必须能支持MIDI放音。与传送合成的信号相比,分别传送独唱信号和MIDI数据要节省大量的带宽。其它的节目类型同样可以作类似的规定。MPEG一7标准又叫多媒体内容描述接口标准。图像可以用色彩、纹理、形状、运动等参数来描述,MPEG一7标准是依靠众多的参数对图像与声音实现分类,并对它们的数据库实现查询。二、多媒体数据压缩技术的实现方法目前多媒体压缩技术的实现方法已有近百种,其中基于信源理论编码的压缩方法、离散余弦变换(DCT)和小波分解技术压缩算法的研究更具有代表性。小波技术突破了传统压缩方法的局限性,引入了局部和全局相关去冗余的新思想,具有较大的潜力,因此近几年来吸引了众多的研究者。在小波压缩技术中,一幅图像可以被分解为若干个叫做“小片”的区域;在每个小片中,图像经滤波后被分解成若干个低频与高频分量。低频分量可以用不同的分辨率进行量化,即图像的低频部分需要许多的二进制位,以改善图像重构时的信噪比。低频元素采用精细量化,高频分量可以量化得比较粗糙,因为你不太容易看到变化区域的噪声与误差。此外,碎片技术已经作为一种压缩方法被提出,这种技术依靠实际图形的重复特性。用碎片技术压缩图像时需要占用大量的计算机资源,但可以获得很好的结果。借助于从DNA序列研究中发展出来的模式识别技术,能减少通过WAN链路的流量,最多时的压缩比率能达到90%,从而为网络传送图像和声音提供更大的压缩比,减轻风络负荷,更好地实现网络信息传播。三、压缩原理由于图像数据之间存在着一定的冗余,所以使得数据的压缩成为可能。信息论的创始人Shannon提出把数据看作是信息和冗余度(redundancy)的组合。所谓冗余度,是由于一副图像的各像素之间存在着很大的相关性,可利用一些编码的方法删去它们,从而达到减少冗余压缩数据的目的。为了去掉数据中的冗余,常常要考虑信号源的统计特性,或建立信号源的统计模型。图像的冗余包括以下几种:(1) 空间冗余:像素点之间的相关性。(2) 时间冗余:活动图像的两个连续帧之间的冗余。(3) 信息熵冗余:单位信息量大于其熵。(4) 结构冗余:图像的区域上存在非常强的纹理结构。(5) 知识冗余:有固定的结构,如人的头像。(6) 视觉冗余:某些图像的失真是人眼不易觉察的。对数字图像进行压缩通常利用两个基本原理:(1) 数字图像的相关性。在图像的同一行相邻像素之间、活动图像的相邻帧的对应像素之间往往存在很强的相关性,去除或减少这些相关性,也就去除或减少图像信息中的冗余度,即实现了对数字图像的压缩。(2) 人的视觉心理特征。人的视觉对于边缘急剧变化不敏感(视觉掩盖效应),对颜色分辨力弱,利用这些特征可以在相应部分适当降低编码精度,而使人从视觉上并不感觉到图像质量的下降,从而达到对数字图像压缩的目的。编码压缩方法有许多种,从不同的角度出发有不同的分类方法,比如从信息论角度出发可分 为两大类:(1)冗余度压缩方法,也称无损压缩,信息保持编码或熵编码。具体讲就是解码图像和压缩 编码前的图像严格相同,没有失真,从数学上讲是一种可逆运算。(2)信息量压缩方法,也称有损压缩,失真度编码或熵压缩编码。也就是讲解码图像和原始图像是有差别的,允许有一定的失真。应用在多媒体中的图像压缩编码方法,从压缩编码算法原理上可以分类为:(1)无损压缩编码种类 •哈夫曼编码 •算术编码 •行程编码 •Lempel zev编码(2)有损压缩编码种类 •预测编码:DPCM,运动补偿 •频率域方法:正文变换编码(如DCT),子带编码 •空间域方法:统计分块编码 •模型方法:分形编码,模型基编码 •基于重要性:滤波,子采样,比特分配,矢量量化(3)混合编码 •JBIG,H261,JPEG,MPEG等技术标准衡量一个压缩编码方法优劣的重要指标(1)压缩比要高,有几倍、几十倍,也有几百乃至几千倍;(2)压缩与解压缩要快,算法要简单,硬件实现容易;(3)解压缩的图像质量要好。四、JPEG图像压缩算法1..JPEG压缩过程JPEG压缩分四个步骤实现:1.颜色模式转换及采样;变换;3.量化;4.编码。2.1.颜色模式转换及采样RGB色彩系统是我们最常用的表示颜色的方式。JPEG采用的是YCbCr色彩系统。想要用JPEG基本压缩法处理全彩色图像,得先把RGB颜色模式图像数据,转换为YCbCr颜色模式的数据。Y代表亮度,Cb和Cr则代表色度、饱和度。通过下列计算公式可完成数据转换。Y=+128人类的眼晴对低频的数据比对高频的数据具有更高的敏感度,事实上,人类的眼睛对亮度的改变也比对色彩的改变要敏感得多,也就是说Y成份的数据是比较重要的。既然Cb成份和Cr成份的数据比较相对不重要,就可以只取部分数据来处理。以增加压缩的比例。JPEG通常有两种采样方式:YUV411和YUV422,它们所代表的意义是Y、Cb和Cr三个成份的资料取样比例。2.变换DCT变换的全称是离散余弦变换(Discrete Cosine Transform),是指将一组光强数据转换成频率数据,以便得知强度变化的情形。若对高频的数据做些修饰,再转回原来形式的数据时,显然与原始数据有些差异,但是人类的眼睛却是不容易辨认出来。压缩时,将原始图像数据分成8*8数据单元矩阵,例如亮度值的第一个矩阵内容如下:JPEG将整个亮度矩阵与色度Cb矩阵,饱和度Cr矩阵,视为一个基本单元称作MCU。每个MCU所包含的矩阵数量不得超过10个。例如,行和列采样的比例皆为4:2:2,则每个MCU将包含四个亮度矩阵,一个色度矩阵及一个饱和度矩阵。当图像数据分成一个8*8矩阵后,还必须将每个数值减去128,然后一一代入DCT变换公式中,即可达到DCT变换的目的。图像数据值必须减去128,是因为DCT转换公式所接受的数字范围是在-128到+127之间。DCT变换公式:x,y代表图像数据矩阵内某个数值的坐标位置f(x,y)代表图像数据矩阵内的数个数值u,v代表DCT变换后矩阵内某个数值的坐标位置F(u,v)代表DCT变换后矩阵内的某个数值u=0 且 v=0 c(u)c(v)=1/>0 或 v>0 c(u)c(v)=1经过DCT变换后的矩阵数据自然数为频率系数,这些系数以F(0,0)的值最大,称为DC,其余的63个频率系数则多半是一些接近于0的正负浮点数,一概称之为AC。3.3、量化图像数据转换为频率系数后,还得接受一项量化程序,才能进入编码阶段。量化阶段需要两个8*8矩阵数据,一个是专门处理亮度的频率系数,另一个则是针对色度的频率系数,将频率系数除以量化矩阵的值,取得与商数最近的整数,即完成量化。当频率系数经过量化后,将频率系数由浮点数转变为整数,这才便于执行最后的编码。不过,经过量化阶段后,所有数据只保留整数近似值,也就再度损失了一些数据内容,JPEG提供的量化表如下:2.4、编码Huffman编码无专利权问题,成为JPEG最常用的编码方式,Huffman编码通常是以完整的MCU来进行的。编码时,每个矩阵数据的DC值与63个AC值,将分别使用不同的Huffman编码表,而亮度与色度也需要不同的Huffman编码表,所以一共需要四个编码表,才能顺利地完成JPEG编码工作。DC编码DC是彩采用差值脉冲编码调制的差值编码法,也就是在同一个图像分量中取得每个DC值与前一个DC值的差值来编码。DC采用差值脉冲编码的主要原因是由于在连续色调的图像中,其差值多半比原值小,对差值进行编码所需的位数,会比对原值进行编码所需的位数少许多。例如差值为5,它的二进制表示值为101,如果差值为-5,则先改为正整数5,再将其二进制转换成1的补码即可。所谓1的补码,就是将每个Bit若值为0,便改成1;Bit为1,则变成0。差值5应保留的位数为3,下表即列出差值所应保留的Bit数与差值内容的对照。在差值前端另外加入一些差值的霍夫曼码值,例如亮度差值为5(101)的位数为3,则霍夫曼码值应该是100,两者连接在一起即为100101。下列两份表格分别是亮度和色度DC差值的编码表。根据这两份表格内容,即可为DC差值加上霍夫曼码值,完成DC的编码工作。AC编码AC编码方式与DC略有不同,在AC编码之前,首先得将63个AC值按Zig-zag排序,即按照下图箭头所指示的顺序串联起来。63个AC值排列好的,将AC系数转换成中间符号,中间符号表示为RRRR/SSSS,RRRR是指第非零的AC之前,其值为0的AC个数,SSSS是指AC值所需的位数,AC系数的范围与SSSS的对应关系与DC差值Bits数与差值内容对照表相似。如果连续为0的AC个数大于15,则用15/0来表示连续的16个0,15/0称为ZRL(Zero Rum Length),而(0/0)称为EOB(Enel of Block)用来表示其后所剩余的AC系数皆等于0,以中间符号值作为索引值,从相应的AC编码表中找出适当的霍夫曼码值,再与AC值相连即可。例如某一组亮度的中间符为5/3,AC值为4,首先以5/3为索引值,从亮度AC的Huffman编码表中找到1111111110011110霍夫曼码值,于是加上原来100(4)即是用来取[5,4]的Huffman编码1111111110011110100,[5,4]表示AC值为4的前面有5个零。由于亮度AC,色度AC霍夫曼编码表比较长,在此省略去,有兴趣者可参阅相关书籍。实现上述四个步骤,即完成一幅图像的JPEG压缩。
1. 原理部分:有两种形式的重复存在于计算机数据中,zip 就是对这两种重复进行了压缩。一种是短语形式的重复,即三个字节以上的重复,对于这种重复,zip用两个数字:1.重复位置距当前压缩位置的距离;2.重复的长度,来表示这个重复,假设这两个数字各占一个字节,于是数据便得到了压缩,这很容易理解。一个字节有 0 - 255 共 256 种可能的取值,三个字节有 256 * 256 * 256 共一千六百多万种可能的情况,更长的短语取值的可能情况以指数方式增长,出现重复的概率似乎极低,实则不然,各种类型的数据都有出现重复的倾向,一篇论文中,为数不多的术语倾向于重复出现;一篇小说,人名和地名会重复出现;一张上下渐变的背景图片,水平方向上的像素会重复出现;程序的源文件中,语法关键字会重复出现(我们写程序时,多少次前后copy、paste?),以几十 K 为单位的非压缩格式的数据中,倾向于大量出现短语式的重复。经过上面提到的方式进行压缩后,短语式重复的倾向被完全破坏,所以在压缩的结果上进行第二次短语式压缩一般是没有效果的。第二种重复为单字节的重复,一个字节只有256种可能的取值,所以这种重复是必然的。其中,某些字节出现次数可能较多,另一些则较少,在统计上有分布不均匀的倾向,这是容易理解的,比如一个 ASCII 文本文件中,某些符号可能很少用到,而字母和数字则使用较多,各字母的使用频率也是不一样的,据说字母 e 的使用概率最高;许多图片呈现深色调或浅色调,深色(或浅色)的像素使用较多(这里顺便提一下:png 图片格式是一种无损压缩,其核心算法就是 zip 算法,它和 zip 格式的文件的主要区别在于:作为一种图片格式,它在文件头处存放了图片的大小、使用的颜色数等信息);上面提到的短语式压缩的结果也有这种倾向:重复倾向于出现在离当前压缩位置较近的地方,重复长度倾向于比较短(20字节以内)。这样,就有了压缩的可能:给 256 种字节取值重新编码,使出现较多的字节使用较短的编码,出现较少的字节使用较长的编码,这样一来,变短的字节相对于变长的字节更多,文件的总长度就会减少,并且,字节使用比例越不均匀,压缩比例就越大。在进一步讨论编码的要求以及办法前,先提一下:编码式压缩必须在短语式压缩之后进行,因为编码式压缩后,原先八位二进制值的字节就被破坏了,这样文件中短语式重复的倾向也会被破坏(除非先进行解码)。另外,短语式压缩后的结果:那些剩下的未被匹配的单、双字节和得到匹配的距离、长度值仍然具有取值分布不均匀性,因此,两种压缩方式的顺序不能变。在编码式压缩后,以连续的八位作为一个字节,原先未压缩文件中所具有的字节取值不均匀的倾向被彻底破坏,成为随机性取值,根据统计学知识,随机性取值具有均匀性的倾向(比如抛硬币试验,抛一千次,正反面朝上的次数都接近于 500 次)。因此,编码式压缩后的结果无法再进行编码式压缩。短语式压缩和编码式压缩是目前计算机科学界研究出的仅有的两种无损压缩方法,它们都无法重复进行,所以,压缩文件无法再次压缩(实际上,能反复进行的压缩算法是不可想象的,因为最终会压缩到 0 字节)。短语式重复的倾向和字节取值分布不均匀的倾向是可以压缩的基础,两种压缩的顺序不能互换的原因也说了,下面我们来看编码式压缩的要求及方法:首先,为了使用不定长的编码表示单个字符,编码必须符合?前缀编码?的要求,即较短的编码决不能是较长编码的前缀,反过来说就是,任何一个字符的编码,都不是由另一个字符的编码加上若干位 0 或 1 组成,否则解压缩程序将无法解码。看一下前缀编码的一个最简单的例子:符号 编码A 0B 10C 110D 1110E 11110有了上面的码表,你一定可以轻松地从下面这串二进制流中分辨出真正的信息内容了:1110010101110110111100010 - DABBDCEAAB要构造符合这一要求的二进制编码体系,二叉树是最理想的选择。考察下面这棵二叉树:根(root) 0| 1 +-------+--------+0 |1 0 | 1 +-----+------++----+----+ ||| | a |d e0|1+-----+-----+| |b c要编码的字符总是出现在树叶上,假定从根向树叶行走的过程中,左转为0,右转为1,则一个字符的编码就是从根走到该字符所在树叶的路径。正因为字符只能出现在树叶上,任何一个字符的路径都不会是另一字符路径的前缀路径,符合要求的前缀编码也就构造成功了:a - 00 b - 010 c - 011 d - 10 e - 11接下来来看编码式压缩的过程:为了简化问题,假定一个文件中只出现了 a,b,c,d ,e四种字符,它们的出现次数分别是a : 6次b : 15次c : 2次d : 9次e : 1次如果用定长的编码方式为这四种字符编码: a : 000 b : 001 c : 010 d : 011 e : 100那么整个文件的长度是 3*6 + 3*15 + 3*2 + 3*9 + 3*1 = 99用二叉树表示这四种编码(其中叶子节点上的数字是其使用次数,非叶子节点上的数字是其左右孩子使用次数之和): 根 |+---------33---------+| | +----32---+ +----1---+ || | |+-21-+ +-11-+ +--1--+ | | | | | |6 15 29 1(如果某个节点只有一个子节点,可以去掉这个子节点。) 根| +------33------+ || +-----32----+ 1 | | +--21--+ +--11--+ || || 6 152 9现在的编码是: a : 000 b : 001 c : 010 d : 011 e : 1 仍然符合?前缀编码?的要求。第一步:如果发现下层节点的数字大于上层节点的数字,就交换它们的位置,并重新计算非叶子节点的值。先交换11和1,由于11个字节缩短了一位,1个字节增长了一位,总文件缩短了10位。 根 | +----------33---------+ || +-----22----++----11----+ | || |+--21--+ 1 2 9| |6 15再交换15和1、6和2,最终得到这样的树: 根 | +----------33---------+ || +-----18----+ +----15----+ | | | |+--3--+ 156 9| |2 1这时所有上层节点的数值都大于下层节点的数值,似乎无法再进一步压缩了。但是我们把每一层的最小的两个节点结合起来,常会发现仍有压缩余地。第二步:把每一层的最小的两个节点结合起来,重新计算相关节点的值。在上面的树中,第一、二、四三层都只有一或二个节点,无法重新组合,但第三层上有四个节点,我们把最小的3和6结合起来,并重新计算相关节点的值,成为下面这棵树。 根 | +----------33---------+ | | +------9-----+ +----24----+ | | | | +--3--+ 6159 | |21然后,再重复做第一步。这时第二层的9小于第三层的15,于是可以互换,有9个字节增长了一位,15个字节缩短了一位,文件总长度又缩短了6位。然后重新计算相关节点的值。 根 | +----------33---------+ || 15 +----18----+||+------9-----+ 9| | +--3--+6 | | 21这时发现所有的上层节点都大于下层节点,每一层上最小的两个节点被并在了一起,也不可能再产生比同层其他节点更小的父节点了。这时整个文件的长度是 3*6 + 1*15 + 4*2 + 2*9 + 4*1 = 63这时可以看出编码式压缩的一个基本前提:各节点之间的值要相差比较悬殊,以使某两个节点的和小于同层或下层的另一个节点,这样,交换节点才有利益。所以归根结底,原始文件中的字节使用频率必须相差较大,否则将没有两个节点的频率之和小于同层或下层其他节点的频率,也就无法压缩。反之,相差得越悬殊,两个节点的频率之和比同层或下层节点的频率小得越多,交换节点之后的利益也越大。在这个例子中,经过上面两步不断重复,得到了最优的二叉树,但不能保证在所有情况下,都能通过这两步的重复得到最优二叉树,下面来看另一个例子:根|+---------19--------+||+------12------+7||+---5---++---7---+||||+-2-++-3-++-3-++-4-+||||||||11121222这个例子中,所有上层节点都大于等于下层节点,每一层最小的两个节点结合在了一起,但仍然可以进一步优化:根|+---------19--------+||+------12------+7||+---4---++---8---+||||+-2-++-2-++-4-++-4-+||||||||11112222通过最低一层的第4第5个节点对换,第3层的8大于第2层的7。到这里,我们得出这样一个结论:一棵最优二叉编码树(所有上层节点都无法和下层节点交换),必须符合这样两个条件:1.所有上层节点都大于等于下层节点。2.某节点,设其较大的子节点为m,较小的子节点为n,m下的任一层的所有节点都应大于等于n下的该层的所有节点。当符合这两个条件时,任一层都无法产生更小的节点去和下层节点交换,也无法产生更大的节点去和上层节点交换。上面的两个例子是比较简单的,实际的文件中,一个字节有256种可能的取值,所以二叉树的叶子节点多达256个,需要不断的调整树形,最终的树形可能非常复杂,有一种非常精巧的算法可以快速地建起一棵最优二叉树,这种算法由(戴·霍夫曼)提出,下面我们先来介绍霍夫曼算法的步骤,然后再来证明通过这么简单的步骤得出的树形确实是一棵最优二叉树。霍夫曼算法的步骤是这样的:·从各个节点中找出最小的两个节点,给它们建一个父节点,值为这两个节点之和。·然后从节点序列中去除这两个节点,加入它们的父节点到序列中。重复上面两个步骤,直到节点序列中只剩下唯一一个节点。这时一棵最优二叉树就已经建成了,它的根就是剩下的这个节点。仍以上面的例子来看霍夫曼树的建立过程。最初的节点序列是这样的:a(6) b(15) c(2) d(9) e(1)把最小的c和e结合起来 | (3)a(6) b(15) d(9)+------+------+| |ce不断重复,最终得到的树是这样的: 根 | +-----33-----+||15 +----18----+ | | 9 +------9-----+ | | 6 +--3--+ | | 21这时各个字符的编码长度和前面我们说过的方法得到的编码长度是相同的,因而文件的总长度也是相同的: 3*6 + 1*15 + 4*2 + 2*9 + 4*1 = 63考察霍夫曼树的建立过程中的每一步的节点序列的变化:6 152916 1593159 9151833下面我们用逆推法来证明对于各种不同的节点序列,用霍夫曼算法建立起来的树总是一棵最优二叉树:对霍夫曼树的建立过程运用逆推法:当这个过程中的节点序列只有两个节点时(比如前例中的15和18),肯定是一棵最优二叉树,一个编码为0,另一个编码为1,无法再进一步优化。然后往前步进,节点序列中不断地减少一个节点,增加两个节点,在步进过程中将始终保持是一棵最优二叉树,这是因为:1.按照霍夫曼树的建立过程,新增的两个节点是当前节点序列中最小的两个,其他的任何两个节点的父节点都大于(或等于)这两个节点的父节点,只要前一步是最优二叉树,其他的任何两个节点的父节点就一定都处在它们的父节点的上层或同层,所以这两个节点一定处在当前二叉树的最低一层。2.这两个新增的节点是最小的,所以无法和其他上层节点对换。符合我们前面说的最优二叉树的第一个条件。3.只要前一步是最优二叉树,由于这两个新增的节点是最小的,即使同层有其他节点,也无法和同层其他节点重新结合,产生比它们的父节点更小的上层节点来和同层的其他节点对换。它们的父节点小于其他节点的父节点,它们又小于其他所有节点,只要前一步符合最优二叉树的第二个条件,到这一步仍将符合。这样一步步逆推下去,在这个过程中霍夫曼树每一步都始终保持着是一棵最优二叉树。由于每一步都从节点序列中删除两个节点,新增一个节点,霍夫曼树的建立过程共需 (原始节点数 - 1) 步,所以霍夫曼算法不失为一种精巧的编码式压缩算法。附:对于 huffman 树,《计算机程序设计艺术》中有完全不同的证明,大意是这样的:1.二叉编码树的内部节点(非叶子节点)数等于外部节点(叶子节点)数减1。2.二叉编码树的外部节点的加权路径长度(值乘以路径长度)之和,等于所有内部节点值之和。(这两条都可以通过对节点数运用数学归纳法来证明,留给大家做练习。)3.对 huffman 树的建立过程运用逆推,当只有一个内部节点时,肯定是一棵最优二叉树。4.往前步进,新增两个最小的外部节点,它们结合在一起产生一个新的内部节点,当且仅当原先的内部节点集合是极小化的,加入这个新的内部节点后仍是极小化的。(因为最小的两个节点结合在一起,并处于最低层,相对于它们分别和其他同层或上层节点结合在一起,至少不会增加加权路径长度。)5.随着内部节点数逐个增加,内部节点集合总维持极小化。2.实现部分如果世界上从没有一个压缩程序,我们看了前面的压缩原理,将有信心一定能作出一个可以压缩大多数格式、内容的数据的程序,当我们着手要做这样一个程序的时候,会发现有很多的难题需要我们去一个个解决,下面将逐个描述这些难题,并详细分析 zip 算法是如何解决这些难题的,其中很多问题带有普遍意义,比如查找匹配,比如数组排序等等,这些都是说不尽的话题,让我们深入其中,做一番思考。我们前面说过,对于短语式重复,我们用?重复距当前位置的距离?和?重复的长度?这两个数字来表示这一段重复,以实现压缩,现在问题来了,一个字节能表示的数字大小为 0 -255,然而重复出现的位置和重复的长度都可能超过 255,事实上,二进制数的位数确定下来后,所能表示的数字大小的范围是有限的,n位的二进制数能表示的最大值是2的n次方减1,如果位数取得太大,对于大量的短匹配,可能不但起不到压缩作用,反而增大了最终的结果。针对这种情况,有两种不同的算法来解决这个问题,它们是两种不同的思路。一种称为 lz77 算法,这是一种很自然的思路:限制这两个数字的大小,以取得折衷的压缩效果。例如距离取15 位,长度取 8 位,这样,距离的最大取值为 32 k - 1,长度的最大取值为 255,这两个数字占 23 位,比三个字节少一位,是符合压缩的要求的。让我们在头脑中想象一下 lz77 算法压缩进行时的情况,会出现有意思的模型:最远匹配位置->当前处理位置->───┸─────────────────╂─────────────>压缩进行方向已压缩部分┃未压缩部分在最远匹配位置和当前处理位置之间是可以用来查找匹配的?字典?区域,随着压缩的进行,?字典?区域从待压缩文件的头部不断地向后滑动,直到达到文件的尾部,短语式压缩也就结束了。解压缩也非常简单:┎────────拷贝────────┒匹配位置┃当前处理位置┃┃<──匹配长度──>┃┠─────?────┨───┸──────────┸───────╂──────────┸─>解压进行方向已解压部分┃未解压部分不断地从压缩文件中读出匹配位置值和匹配长度值,把已解压部分的匹配内容拷贝到解压文件尾部,遇到压缩文件中那些压缩时未能得到匹配,而是直接保存的单、双字节,解压时只要依次直接拷贝到文件尾部即可,直到整个压缩文件处理完毕。lz77算法模型也被称为?滑动字典?模型或?滑动窗口?模型,由于它限制匹配的最大长度,对于某些存在大量的极长匹配的文件来说,这种折衷算法显出了缺陷。另有一种lzw算法对待压缩文件中存在大量极长匹配的情况进行了完全不同的算法设计,并且只用一个数字来表示一段短语,下面来描述一下lzw的压缩解压过程,然后来综合比较两者的适用情况。lzw的压缩过程:1) 初始化一个指定大小的字典,把 256 种字节取值加入字典。2) 在待压缩文件的当前处理位置寻找在字典中出现的最长匹配,输出该匹配在字典中的序号。3) 如果字典没有达到最大容量,把该匹配加上它在待压缩文件中的下一个字节加入字典。4) 把当前处理位置移到该匹配后。5) 重复 2、3、4 直到文件输出完毕。lzw 的解压过程:1) 初始化一个指定大小的字典,把 256 种字节取值加入字典。2) 从压缩文件中顺序读出一个字典序号,根据该序号,把字典中相应的数据拷贝到解压文件尾部。3) 如果字典没有达到最大容量,把前一个匹配内容加上当前匹配的第一个字节加入字典。4) 重复 2、3 两步直到压缩文件处理完毕。从 lzw 的压缩过程,我们可以归纳出它不同于 lz77 算法的一些主要特点:1) 对于一段短语,它只输出一个数字,即字典中的序号。(这个数字的位数决定了字典的最大容量,当它的位数取得太大时,比如 24 位以上,对于短匹配占多数的情况,压缩率可能很低。取得太小时,比如 8 位,字典的容量受到限制。所以同样需要取舍。)2) 对于一个短语,比如 abcd ,当它在待压缩文件中第一次出现时,ab 被加入字典,第二次出现时,abc 被加入字典,第三次出现时,abcd 才会被加入字典,对于一些长匹配,它必须高频率地出现,并且字典有较大的容量,才会被最终完整地加入字典。相应地,lz77 只要匹配在?字典区域?中存在,马上就可以直接使用。3) 一个长匹配被加入字典的过程,是从两个字节开始,逐次增长一个字节,确定了字典的最大容量,也就间接确定了匹配的可能的最大长度。相对于 lz77 用两个数字来表示一个短语,lzw 只用一个数字来表示一个短语,因此,?字典序号?的位数可以取得多一点(二进制数多一位,意味着数值大一倍),也就是说最长匹配可以比 lz77 更长,当某些超长匹配高频率地出现,直到被完整地加入字典后,lzw将开始弥补初期的低效,逐渐显出自己的优势。可以看出,在多数情况下,lz77 拥有更高的压缩率,而在待压缩文件中占绝大多数的是些超长匹配,并且相同的超长匹配高频率地反复出现时,lzw 更具优势,GIF 就是采用了 lzw 算法来压缩背景单一、图形简单的图片。zip 是用来压缩通用文件的,这就是它采用对大多数文件有更高压缩率的 lz77 算法的原因。
毕业论文压缩稿
主要是你研究这个课题的重要性和目前存在的不足(即必要性);引言的主要任务是向读者勾勒出全文的基本内容和轮廓。它可以包括以下五项内容中的全部或其中几项: 介绍某研究领域的背景、意义、发展状况、目前的水平等.
6000字还压缩过的.!
进行压缩的话,你可以把你的论文放到一个文件夹里,然后右击文件夹,选择压缩就好了。
如果是用于发表的话可以联系我
优秀毕业论文压缩
主要是你研究这个课题的重要性和目前存在的不足(即必要性);引言的主要任务是向读者勾勒出全文的基本内容和轮廓。它可以包括以下五项内容中的全部或其中几项: 介绍某研究领域的背景、意义、发展状况、目前的水平等.
如果是用于发表的话可以联系我
6000字还压缩过的.!