图像JPEG压缩的matlab实现_第1页
图像JPEG压缩的matlab实现_第2页
图像JPEG压缩的matlab实现_第3页
图像JPEG压缩的matlab实现_第4页
图像JPEG压缩的matlab实现_第5页
已阅读5页,还剩23页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、图像JPEG压缩的matlab实现作者姓名: 专业名称:信息工程指导教师: 讲师摘要随着现代经济的发展,影像风暴已经席卷了我们的日常生活,图像对于人们已经息息相关。人们对计算机实时处理图像的要求就相对有所提高。现在我们就面对一个问题,如何在保证图像质量的前提下,同时能够考虑到实时性和高效性就成了一个大家关注的问题。那么对图像数据信息进行必要的压缩,以便能够保证图像的快速存储和传输。但是,我们通常看到的图像是一种重要的二维信号,所以它本身就包含非常庞大的数据量,为了快速存储和实时传输,就必须对图像信息进行相应的压缩处理。新兴的数学工具是局域DCT变换是一种新兴的数学工具,在现在社会中,图像压缩技

2、术现在正受到大量的关注与研究。本次课题设计在分析近年来,在图像处理领域,对图像压缩普遍方法的基础之上,充分学习和分析了基于DCT变换的图像压缩的相关编码及其基本原理和实现步骤。简单概述了图像压缩的基本原理以及发展现状和方向,全面分析了DCT变换算法以及思路,提出了采用DCT变换压缩的依据和优势。本文同时也介绍了图像压缩过程的重要步骤编码量的方法和原理。为了方便简单,将使用MATLAB2010实现JPEG图像压缩的仿真。 在论文最后,将介绍仿真的过程以及仿真结果说明,阐述用MATLAB来实现离散余弦变换的图像压缩的基本过程,并总结相关方法的优缺点。同时也将充分展示压缩前后的图像,并做相

3、应的比较。关键词:图像 压缩 DCT matlab仿真 Abstract With the development of modern economy, the storm has swept through the image of our daily life, people have been closely related to the image for the. People's requirements on image real-time processing is relatively improved. Now we face a problem, how to g

4、uarantee the quality of the image, at the same time can be old enough considering the real-time and efficiency has become an issue of concern. This information is certain to image compression and processing has become a very important link. However, the image is an important signal, due to the large

5、 amount of data, while the storage and transmission of the compressed. New mathematical tools are discrete cosine transform is a new mathematical tool, based on the discrete cosine transform image compression technology is now being a lot of attention and research. In this paper, based on the analys

6、is of the general methods of image compression in recent years, the basic principles and implementation steps of image compression based on DCT transform are also discussed. In this paper, the principle and development of image compression are introduced briefly, and the DCT transform algorithm is a

7、nalyzed and compared with other compression methods. The basis of DCT transform compression is proposed. The final step of the image compression process is to encode the quantized image. This. We use MATLAB6.5 to realize the simulation of JPEG image compression. The simulation results show that usin

8、g MATLAB to achieve the image discrete cosine transform compression method is simple, fast, small error advantages, greatly improves the efficiency and accuracy of image compression.Keywords: DCT ,matlab,simulation image, compression目录图像JPEG压缩的matlab实现I摘要IAbstractII目录III前言11 绪论31.1论文研究背景及意义31.2 JPEG

9、图像的发展历史及简介41.3 JPEG图像在DCT中压缩的作用51.4 本文研究的主要内容62 图像压缩编码原理82.1 DCT变换的来源82.2基于DCT的JPEG图像压缩编码步骤92.3图像压缩处理技术基本理论103 图像压缩的MATLAB实现133.1离散余弦变换的定义及原理133.2离散余弦变换的算法实现143.3图形用户界面介绍15图像文件读取16图像文件输出174 运行结果及分析194.1 程序流程图194.2 MATLAB仿真结果204.3 实验结果及分析21总结23参考文献24致谢25附件1 图像JPEG压缩的matlab程序26前言在当今,人们大多都都已经迈入了信息化的社会,

10、信息交换技术已经发展出不同的形式,主要的信息分为三种形式:1.文字2.音频3.图像。在我们看来,信息传播发展的历史可以得出结论,人们已经在信息中融入了形象,然而,对我而言,图像更直观,我们的观察,但也有最多的数据量,相应的数据量也最大,是最大的困难。这给图像信息的实时传输与快速存储带来了非常大的挑战。这已经成为图像和信息传输发展的难题,然而数字图像的表示包含非常大的数据流,如果要对其进行处理,就不得不对大量数据进行适当的压缩。人们已经尝试了各种各样的方式对图像数据进行相关的压缩处理,但是有些被压缩的数据可能是对我们有用的。不过它的传输方法,以及传输媒介、以及存储媒介都有着严格的要求。所以,对于

11、快速的图像压缩、以及图像的压缩和编码技术,就是一种十分重要的现代图像数据处理技术,也是一种核心技术。就现在而言图像文件格式的种类也是非常多的,其中常用的静止图像压缩编码的国际标准JPEG格式,因为它具有耗内存小,图像的质量相当非常清晰,目前早已经被广泛的用于信号处理和图像处理领域。整个图像数据的压缩过程和编码的过程我们叫做基本的顺序过程,因此被用户用来作为图像的压缩的实际中进行应用。这是目前图像压缩技术在现实中的最成功的运用之一。除此之外,重建图像与压缩前的图像的视觉效果大致上没有明显区别。DCT变换本身就是在最小均方误差条件下的最完美的正交变换,因此在图像压缩领域具有很好的实用价值,目前已经

12、成为国际上普遍认可的图像压缩的格式标准。余弦函数的核心是DCT变换,它的计算速度在目前来说十分的快,从而大大的提高了图像压缩的效率。MATLAB信号图像处理工具是、math2works公司推出的一款功能强大,编写简单的图形处理软件平台,该平台将数据分析、数据计算、矩阵运算、信号处理和图形显示等多种处理技术融为一体,打造了一个方便的、高效的、快速的处理系统以及友好的用户环境。在本次设计中,将直接在Matlab图形处理工具箱中,调用相关图形文件读取、存储以及具体操作函数和指令来实现基于DCT变换的图像压缩编码过程,并分析相关结果,得出相应的结论。1 绪论1.1论文研究背景及意义随着目前信息技术以及

13、图像识别技术的快速进步,图像信息技术早已经被成熟的应用在图像检测系统和网络多媒体运用技术中,但是在实际运用中图像的数据量往往是海量的。这样庞大的信息量,如果不通过特定方式对信息进行压缩,不但远远超过了一般处理系统的存储能力和处理能力,而且在目前的传输信道的传输速率不大的情况下,根本不能够完成庞大的多媒体信息的实时且快速的传输。所以,为了我们可以有效且快速的存储、处理和传输多媒体图像数据,我们就必须对大数据的图像数据进行有效的压缩,因此必须对图像压缩编码的方法进行仔细全面地研究和分析。因为组成图像的各像素之间,不管是在垂直方向,还是在水平方向上都会存在一定的联系,那么,如果我们采用某种特定的图像

14、压缩编码技术提取或者减少这种联系,最终便可以达到压缩数据的效果。图像信息是人们在生活中感受到的最重要的最直观的信息,在多媒体技术和通讯传输技术的快速发展的今天,图像必然也是信息技术所需要处理的最重要对象。在现在社会中,图像处理技术的发展十分快速,从而也带动了多媒体娱乐、多媒体数字通信、数码高清相机、高清数码摄像头和高清晰度显示屏等各类与图像和视频相关的产品的快速进步。随着目前图像信息的数据量的不断加大,而且很多成像设备的分辨率的越来越高,每一张图像所包含的信息量也就更大,海量的图像数据已经给存储设备的存储空间、通信信道的带宽以及处理器的处理速度带来了很大的压力。如果我们要克服这些挑战,就必须采

15、用某种编码方式对图像进行可逆的有效的压缩处理。数字图像压缩编码的目的就是通过压缩,减小图片的内存,用尽可能最少的比特数来表征一幅图像,同时尽可能的保持原来图像的视觉效果,这必然要求我们对图像编码方式以及解码算法进行深入研究,目前,这个课题已将越来越受到人们的重视,成为近些年信息技术中的核心和热点。如果能够有好的编码技术,将大大提升图像信息的传输以及存储能力。1.2 JPEG图像的发展历史及简介在数十年的岁月里,越来越多的的图像压缩方法和相关理论已经被提出,可以分为传统的压缩编码方法和图像编码的新方法。传统的编码技术,包括脉冲编码调制、量化、熵编码等十种编码方式。但是随着这些传统编码方法的进一步

16、应用,已经发现了这些方法的不足之处:比如在传统编码方法中由于正交变换的差频局部化,变换系数的丢失对原始图像的原来结构的影响。所以,在量化编码不可以用特定的方法;高的压缩比也会造成图像边缘虚化的发生从而发现严重的块效应。由于JPEG目前在图像压缩领域取得了广泛运用,因此,它已经成为了全世界的在图像处理与分析领域的一个标准。同时,他在全球图像压缩领域中,已经成为其中核心的部分。 JPEG本身仅仅只描述了如何把图像信息转换为字节流的数据,然而无法描述如何把这些字节在任何特定的存储介质密封起来。.jpeg /.jpg是使用得比较多的图像文件的格式,由一个图像处理的联合会组织编制的,是一种会丢失部分信息

17、的图像压缩格式,同时也是一种能够给保持原因视觉效果的压模式。特别是采用高压缩比以后,图像质量将会得到一定的恢复,但是最后减压之后明显会减少,如果我们需要高质量的图像效果,则高压缩比的方式就不适合使用了。不过,JPEG压缩技术已经非常先进和成熟,它通过有损压缩的形式来删除图像数据的冗余,从而获得非常高的压缩率,显示了一个非常接近原始图像的视觉效果。换一句话来说,用尽可能最少的存储空间来存储较完整的图像是能够实现的。JPEG本身也是一种比较常用的稳定的图像格式,可以根据实际的需要来调节图像的质量,通过设定相应的压缩比可以获取能够满足内存存储的需求,同时支持多级别的分向压缩,压缩比从10:1到40:

18、1,通常压缩比越大,图像数据丢失就越严重,图像的品质自然也就很差;相反,图像品质就越好。例如,你能够将20.3kb BMP位图文件压缩到1.37mb。实际上,你能够在图像质量和文件大小之间找到一个适当的平衡点。现在处理的主要是高频部分,针对JPEG压缩的。在日常生活中,颜色占得分量也是比较多的,在网络上面的运用也是相对完整 。在图像的传输过程中,花费时间也能够得到减少,这样就大大的提高了传输时需要的时间,工作效率也会随之增强。1.3 JPEG图像在DCT中压缩的作用图像压缩这门技术起源于古老的数字电视信号。到现已经有了悠久的历史。随着科技的进步,图像处理的方式也逐步完善,处理的方式也出现了多样

19、化。图像压缩技术也随之得到了比较好的发展。现在主要的热点是DCT的变换、以及图像的处理。在本文中,将对最广泛使用的图像压缩算法进行检讨,并讨论了它们的优点和缺点,以及它们的发展前景。在JPEG算法原理里,把图像以一块一块的方式存在,它们之间不互相干扰,也不会重叠。这些块我们再将它们划分为二维离散余弦变换。它们之间的系数是没有关系的。常用的JPEG主要有以下的特点: 它有几处优点:它已经形成了国际化的标准;以及在中端和高端比特率中的图像质量有一个有效的保证。也有如下的缺点:就是在处理过程中,图像已被分成了块。在处理过程中会产生方块效应。很难用高斯过程来描述。系数在量化的时候也会丢失一部分数据。而

20、且在另一方面图像的压缩比例在当前来看还不太高,还需进一步的努力。JPEG在对图像进行压缩的过程中,会出现方块效应。而方块效应主要体现在信号上面。在这个过程中,图像压缩数据在高频量的数据是可以省略的,但是低频量上的数据包含了一些图像的基本数据。因此,图像压缩过程中必须保证低频数据不被丢失。它是相当于对交叠在一起的数据进行离散余弦的变换。这种方式不仅将大大减少压缩数据对图像的影响,而且将大大提高压缩的稳定性。1.4 本文研究的主要内容在本文毕设中,是以matlab为平台来进行开发研究。主要研究的是JPEG图像在matlab中的使用。分析JPEG图像的原理,以及对原理的升入研究。Matlab这个平台

21、对于初学者来说是比较实用的,本次的设计师用DCT的算法来进行研究。首先,需要理解DCT算法的使用和了解,利用matlab来进行图像的仿真。本次论文的主要研究内容如下:第一章为matlab及JPEG的基础部分,初步的介绍了本文课题研究的方向及意义。还有之后介绍当前图像压缩技术的发展现状和未来发展的方向。 本次论文主要根据以往和当今离散余弦变换在图像压缩中的应用经验,对这次的研究来作一个总结。主要总结了本次论文的主要研究核心的技术,第二章主要介绍了JPEG图像压缩方面的发展及意义和现状,包括图像压缩的相关标准、技术指标和相关分类等等,讨论了图像压缩编码及离散余弦变换的模型的相关原理等;第三章介绍了

22、离散余弦变换的matlab,介绍了MATLAB图像处理工具箱的应用方法,然后概述了JPEG的基本原理、以及离散余弦变换相关算法的实现等,并在本次论文中实现离散余弦变换的图像压缩;第四章主要介绍了离散余弦变换的matlab界面,介绍的图形用户界面功能,采用MATLAB代码的图像压缩编码和界面操作过程中讨论的设计思路和逻辑;在论文的最后,提出了本文的相关结论,提出了需要解决的问题,并提出改进步骤。2 图像压缩编码原理2.1 DCT变换的来源在目前信号的变换编码处理方法中,一般情况下通过将一组相关的基函数的进行信号分解,就能够得到信号的变换域表示法,在变换域中,根据信号在相关特性上比较集中的特点,把

23、重点放在特征提取和分析特点两个部分进行研究。从19世纪20年代以来,傅里叶变换在信号处理方面的应用,是目前应用最广泛的一种分析手段。DCT变换在现实运用比较广泛,它可以实现在频域中进行高精准的定位,也就是具有很高的分辨率,而它在时域中是不具有任何定位性或分辨能力的,但它能够反映的所有相关信号的时间域特征,但它不能提供任何相关的时频率信息。事实上,在我们的日常生活所用到的信号平稳的,其他的频率的特点是随时间来进行变化的。分析傅立叶变换的这种信号,虽然可以知道频率信息包含的信息是什么,但不能知道具体信息的频率在哪一段时间内,因此不能提供这些信号所有完整性的信息。显然,傅立叶变换不适合实时(或瞬时)

24、频域特征信息 离散余弦变换(DCT),其实际上就是一种转换分析信号的方法,如果要在变换的过程中去除来分析的信号,从而提取其特征,我们就需要不得不适当的构造一组基函数,而且这组基函数必须是以某种形式非常类似于我们所需要表示的数据,甚至必须具有与数据相类似的相关结构。在人们日常生活中。通常情况下遇到的信号是在时域和频域都同时具有相关性。在空间上相隔比较近的样值间的相关性,相比于相隔较远样值的大得多,然而在频域上通常是呈带状的。为了分析和表示这样的信号,我们要求相关的基函数在空间域和频域都是局域性的。因为离散余弦函数的频域分辨率与时域分辨率具有反比例的关系,刚好与实际信号长时为低频、短时高频的特性基

25、本一致,不仅可以准确的定位信号的瞬间跳变,同时还能够呈现信号的整体变化规律率。综上所述,离散余弦变换是一种比较理想的进行信号处理的数学工具6,在信号处理及其图像处理领域具有很好的优势,以及良好的实时性。2.2基于DCT的JPEG图像压缩编码步骤1、颜色空间的转换和采样JPEG的文件目前都是使用的颜色空间为1982年推荐的电视图像数字化标准CCIR 601(现为ITU-RB T.601)。在数字化的标准中,信号的变换必须是在时域中进行的,因此需要采用 8位的数字来表示代码。其中Y表示其亮度,CbCr表示其色度。将RGB模式的全彩色图像转换到YCbCr模式,通常采用公式(2-1), (2-1)逆变

26、换公式为: (2-2)2、 二维离散余弦变换通常,二维离散余弦正变换公式如下:式中x,y,u,v=0,1,2.n-1; 其中当u,v=0时:其它都为1;二维离散余弦逆变换公式为:(2-3)JPEG目前是将图像分割成数个8×8的子块,每一个子块的数值在-128到127之间。同时,采用余弦变换可以得出相关的64个变换系数8。变换公式,如图所以: (2-4)2.3图像压缩处理技术基本理论图像数据压缩的核心问题,就是能否在兼顾图像质量的条件下,采用更少的数据量来表示图像,从而大大提高图像实时传输的效率以及快速存储的速度,这就是我们在信息编码中信源编码的基本含义。也就是说,前者在解码

27、后可以最大程度还原图像的视觉效果,尽可能的减少信息的丢失;然而后者在解码时只能近似原图像压缩是通过删除图像数据中冗余的或者采用压缩高频量的方法来减少数据量,从而实现相关图像的压缩。实际上,压缩过程和解压过程这两个过程是一个可逆过程,实际也就是相对于编码和解码的过程,压缩技术分为缺失压缩和完全压缩两种,其实缺失压缩会造成数据量的丢失,而完全压缩会按照相关编码对所有数据进行保留和恢复。 假设有一个没有事先备份的信道,所传输的信息为ai,1iN,发生的事件在发生几率上是可以判断的,记为P(ai)。则其信息量定义为: (2-5)由此可见一个消息出现的可能性越小,其信息量就越多,其出现对信息的贡献量越大

28、,反之亦然7。信源的平均信息量称为“熵”(entropy),可以表示为: (2-6)对其取二为底的对数时,也可写成如下 (2-7)在图像压缩过程中,比较重要衡量指标就是压缩比。一般通过下列公式可以计算压缩比在进行图像压缩编码的过程中通常分为两个过程,第一个过程为利用相关的分析模型和变换模型对图像信号进行处理的;另一个过程是利用变换过程中信号分析和变换特性,再根据相关的编码方式对相关数进行量化处理,编码器与解码器的结构分别如图所示。图像编码压缩模型如图所示:原始数据量化器DCT变换量化编码压缩图像数据 图2.1图像编码压缩模型 首先就是采集数据,对要处理原图像的相关图像信息进行相关采集,然后对采

29、集到数据进行DCT量化处理,也就是将信息从频域中转化到时域中进行分析,这样做也是便于进行相关的编码分析和处理。最后在进行进一步量化处理,然后进行相应的压缩编码,最后,就可以实现图像数据的压缩。这种压缩方式属于有损压缩,因此需要保证其稳定的可恢复性。3 图像压缩的MATLAB实现3.1离散余弦变换的定义及原理图像的二维离散余弦变换(Discrete Cosine Transform)简称DCT变换是在最小均方误差条件下求出的一种最佳正交变换,这种变换在信号和图像领域获得广泛的使用,大多数情况下,为了保证图像的质量以及增强其传输的速率,一般使用DCT变换编码对相关图像信息进行必要压缩处理,并已经成

30、为大多数图像编码技术国际标准的核心,实际上,JPEG图像格式的压缩算法采用的就是DCT变换算法。DCT变换的本质为标准余弦函数变换,其运算速度非常快速,可以大大提高压缩以及数据处理的效果12,JPEG算法目前已经成为JPEG世界标准,它是世界上第一有关图像彩色、灰度、静止图像的全球标准。在编码过程中,JPEG算法首先通过把RGB分量分化为两种分量亮度分量和色差分量,紧接着将相关图像进行分解,最后变成 8×8的像素块,随后将每一个个8×8像素块直接导入矩阵的全部值进行平均运算,剩下的63个系数将作为交流量的系数,其中每一个系数都表示一定的压缩量,紧跟着在离散余弦变换的基础上,

31、对图像数据量进行矩阵量化。在解压的过程中,第一步是对原来已经编码量化的相关系数进行逆向的解码处理,接下来就就可以求逆量化并使用离散余弦变换的逆变换将DCT每一个相关的系数变成为8×8数据信息块,这样便于对每个信息块进行压缩操作。离散余弦变换的传统算法就是一种基于FFT(快速傅里叶变换)的基本算法,这种算法就是一种快速的傅里叶变换,目前广泛运用图像处理,视频处理和信号处理领域中。本论文中主要采用一种全新的变换方法基于DCT变换矩阵算法3。这种变换矩阵的方法是非常适合做8×8或16×16的图像块的离散余弦变换,因为它具有很快的运算速度,便于处理器快速的处理。本文主要采

32、用MATLAB工具库中dctmtx函数来计算变换矩阵。要实现A的二维离散余弦变换,只需计算D*A*D。这种计算有时会比利用函数dct2更快,特别是计算大量小的相同尺寸DCT时,因为矩阵D只需计算一次就可以了,因此具有很快的速度12。举一个例子来说,在进行图像的JPEG压缩时,就需要不断地进行变换量化,得到相关的子像素模块,如果要快速实现这种操作,第一步就是要调用函数dctmtx得到矩阵D,即利用语句D=dctmtx(8),然后,对每一个图像块执行运算B=D*A*D。因为变换矩阵D是一个实正交的8x8矩阵,将其进行二维逆DCT为A=D*B*D。显然,这种调用方式相比于其他的函数要更快,更准确。关

33、于DCT变换的算法,实际上是一种对高频信息量压缩的处理方式,对其低频信息量进行完整的保留,从而达到最大程度保留原始图像信息,以恢复图像原本的视觉效果的过程。3.2离散余弦变换的算法实现第一步是读取指定的图像文件X,然后调用dctmtx函数对图像X进行DCT变换,最终可以得到矩阵T,就是采用语句D=dctmtx(8),接下来,对每一个像素块进行矩阵运算B=T*矩阵x*T。随后就可以调用二值掩膜算法对DCT的系数进行相应压缩,通常情况下,只保留DCT变换的10个压缩后的系数就可以了。最后在对整个图像进行逆DCT变换,也就是进行图像的重构,并在计算机上进行显示。整个算法的处理过程如下图所示:离散余弦

34、算法流程图导入图片利用DCT对图像进行余弦变换对图像每个不同8*8数据进行矩阵处理阵利用二值掩膜只保留DTC变换的10个系数 逆DCT变换重构图像显示图片图3.1 离散余弦算法流程图 3.3图形用户界面介绍传统的用户界面一般是指用户与计算机之间进行相互信息和数据交流的应用平台,目前已经有多种人机交互方式相继出现,目前已经从指令集的交互方式,发展至以图形界面操作为主的更简单直观交互形式。现在,图形界面己在人机交互方式中占核心地位,这主要是因为其能够更简单,更灵活,更直观,更快速的实现人机的交互通信。目前基于各种操作系统的用户UI的开发设计已经非常普遍和重要11。因为不是所用用户都是专业

35、的计算机人员,所以界面的设计与使用必须十分方便,大多数功能均需要采用菜单按钮和图标,用户可以仅仅通过图标、按钮文字就可以轻松的进行相应的操作。图形用户界面(Graphical User Interfaces,简称GUI)是一种图形化的人机沟通界面,它是在操作系统的帮助下,实现图像信息快速转换为及其指令的过程,大大提高了用户使用的方便性和灵活性,而这些界面上会设计许多必要的按钮、窗口、菜单、图标、根据、键盘操作等对象,以方便可以借助这些用户界面快速调用MATLAB工具来进行图像和信号的运算处理操作。GUI是将来图像分析和处理的发展方向,因为图像的视觉认知在一定程度上更容易被人们所接受。所以,采用

36、用户界面的方式进行图像和信号处理,甚至进行人机交互的信息传输,将大大降低用户的操作难度,增强用户对处理过程的认知。 图像文件读取在我们压缩图像之前首先需要读取图像的像素点,以便进行后续处理。此部分可分为三个过程:原始图像载入,颜色模式转换以及离散余弦变换,第一步是读取指定的图像文件,然后调用dctmtx函数对图像进行DCT变换,从而获得矩阵T,使用语句:D=dctmtx(8),最后,对每一个图像块进行相应的矩阵操作:B=P1*x*P2。(1) 图像文件的读取。MATLAB中一般是直接调用工具库中imread函数来实现图像文件的读取操作的。其语法为: A=imread(filename,fmt)

37、 X,map=imread(filename,fmt) ,=imread(filename) Filename:图像文件名;fmt:图像文件格式(2) 颜色模式转换及采样(3) DCT变换(4) 对整幅图像进行DCT变换,具体程序实现:RGB=imread(autumn,BMP); %从内存中读取BMP格式的真彩色图像I=rgb2gTay(RGB); %将真彩色图像RGB转换为灰度级亮度图像II=im2double(I); %将I变换为双精度格式I1=idct2(I); %对I进行二维DCT,返回的I1包含DCT系数I1=idct2(I1); %求二维DCT逆变换,重构图像subplot(2,

38、2,1); imshow(I);subplot(2,2,2); imshow(I2);subplot(2,2,3); imshoa,(I1);subplot(2,2,4); imshow(abs(I-I2);figrue,mesh(I1); title(变换谱三维彩色图)colorbar(vert); %在垂直轴旁增加一颜色等级条在MATLAB中,可以调用image函数来显示图像,其语法格式为:Image(C) image就是用来显示原始图像相关数据的,也就是在图像上显示x,y轴,能够很容易看到图像的像素情况。所谓量化过程其实就是一个对图像压缩比的控制过程。在这个过程中可以去除高频量,但是会造

39、成一些高频信息的丢失。不过人类对高频量一般都不会很敏感。因此不会对处理后的图像的视觉效果有所影响。其实对多数的图象信息都是存在于低频量中,经过量化这一过程后,在频率很高的空间上,就会出现一连串的数字0。3“Z”字扫描矢量中出现的连续的数字0片段,可以使用一些处理压缩掉。比如有一组矢量(64个的后63个,已按z字形扫描得到)是57,45,0,0,0,0,23,0-30-16,0,0,1,0,0,0,0,0,0,0, 0经过RLC压缩后就是(0,57) (0,45) (4,23) (1,-30) (0,-16) (2,1), EOB 是一个结束符,说明以后的部分都是0了,一般用(0,0) 来表示E

40、OB。不过,假设这一串数字不以0结束,就没必要用EOB。 图像文件输出YUVI=cat(3,uint8(YI),uint8(UI),uint8(VI);%经过DCT变换和量化后的YUV图像 figure,imshow(YUVI),title('经过DCT变换和量化后的YUV图像'); RI=YI-0.001*UI+1.402*VI; GI=YI-0.344*UI-0.714*VI; BI=YI+1.772*UI+0.001*VI; RGBI=cat(3,RI,GI,BI);%经过DCT变换和量化后的YUV图像 RGBI=uint8(RGBI); figure,imshow RG

41、BI (),title('经过DCT变换和量化后的RGB图像'); imwrite(RGBI,'L:UsersYi FanDesktopend.jpg'); %保存压缩图像 从这段输出图像代码中可以看出,JPEG预处理图像经过了DCT变化和量化后,就保存在桌面上。其实就是经过两次DCT变换,在频域中对相关图像进行像素处理。这样一来就可以对图像进行压缩了。在离散余弦变换处理中得到的64个系数中,低频分量包含了图像的亮度、色度等核心信息。在从空间域到频域的变换中,图像中的缓慢变化比快速变化往往更易引起用户的重视,所以在重建图像时,往往更重视低频量,有时候甚至直接压缩

42、掉高频量。因而在编码过程中可以对高频量进行去除, 这样就可以达到一种压缩的效果,这也是图像量化的根本依据。4 运行结果及分析4.1 程序流程图StartImread( )909 读取图像dctmtx(8) 产生一个CT变换举证 矩阵量化处理 DCT变换 DCT变换 DCT变换 图像输出 DCT变换End图4.1 程序流程图从该流程图可以看出这个MATLAB程序的执行过程,首先就是读取在指定的路径中获取相关的图像信息,紧接着就是通过这些图像像素信息,生成一个8x8的举证,便于后期的量化处理,以及进行DCT变换处理,将一些特定部分像素点进行删减,最终实现图像压缩。其实我们很容易发现其实压缩的核心就

43、是DCT变。4.2 MATLAB仿真结果这一章节,笔者将进行仿真演示,重点演示MATLAB的软件操作,并且给出相关的操作过程。首先打来MATLAB软件后,如图4.2所示,图4.2 MATLAB主界面图在该界面的左上角,点击新建图标会弹出如图4.3所示的编辑窗体,在该窗体即可编写代码,图4.3 编译窗体代码编写完成后,点击第二排菜单中绿色的箭头图标(运行按钮),即可进行编译,但是之前你需要将相应的处理图片放在你自己设定的路径下,以便让系统可以找到处理的图像。运行结果如图4.4所示,图4.4 运行结果4.3 实验结果及分析上一小节笔者演示仿真的过程,这一章节我们一起来研究和分析放在的结果,如下图4

44、.5所示,是处理前的图片: 图4.5 原图像下面是处理后的最终图片,如图4.6所示, 图4.6 压缩后的图像运行MATLAB程序后,显示如上几幅图所示的图像,点击运行图表按钮,在桌面上会立即生成上面两幅图片。进过对比,我们不难发现,两幅图片的整体视觉效果基本一致,清晰度区别不大。说明经过DCT变换压缩处理后的图像,与之前图像相比效果基本一致,这种压缩效果让人比较满意。而且原来图像的大小为13.3Kb,占用内存16.0kb,字节数16384b,压缩之后的图像大小为8.57k,占用内存12k,字节数12288B,很明显,压缩后图像的大小以及内存的消耗明显降低,达到了很好的压缩效果。另外,如果将这种

45、压缩方式作为一种小软件在Windows平台上使用,具有操作灵活简单,处理速度快等优势,具有很好的推广价值。总结论文首先简单阐述了该课题的研究的背景、图像信息压缩技术的发展经历和未来发展的基本思路和方向、DCT中压缩的作用等,并在第一章的最后重点论述了本文研究的主要内容以及含义。然后论文又讨论了图像压缩的编码原理,阐述了涉及到相关问题,接着有简单介绍了DCT(离散余弦变换)的来源,同时论文也讲述了jpeg图像压缩的编码过程和阐述压缩处理技术的基本理论。在前面两个部分的基础上,论文就开始进入matlab程序设计的核心内容,包括图像文件读取、图像文件的输出等一列程序设计过程,并对某些可能难以理解的地

46、方加以阐述和说明。最后,介绍仿真的相关情况,验证程序是否正确。总的来说,这一次毕业设计我确实受益匪浅,从接到这个论题,到自己亲身开始思考,我都学到了许多。包括对matlab的认识,图像压缩的认识以及程序的设计思路和设计逻辑等方面都有长足的进步。我觉得这次毕业设计可以说是对我大学学习的一个很好的检验,同时,也为自己以后参与工作之中做一个很好的铺垫和准备。让我认识自己能力,找准自己的不足点,加强相关点的学习和认知。从另外一个角度来说,也是对自己以后进步的一次鼓励和锻炼。本次的毕业设计,在通过我的指导老师刘晓丽老师的帮助和到图书馆查阅各种资料,对于图像压缩的掌握有了很大的提高,对于自己不懂的知识也完

47、善了学习的方法。对于编程的把握又有了进一步的提高,通过本次毕业设计,我发现自己的编程和纠偏能力都有了很大程度的提升,不过设计过程中遇到的问题很多,但在自己及老师的耐心工作下,它们还是被我们逐个解决,学会了如何面对困难、处理难题,让我知道了只有自己真正的掌握了,困难的东西自然变得不困难。 最后敬请各位专家、老师和同学对论文的不足和谬误之处提出宝贵的指导意见和建议,谢谢。参考文献1 刘 秀敏. 基于MATLAB的DCT变换在JPEG图像压缩中的应用M. 航空航天出版社, 2005.2 崔春艳. 基于DCT变换的数字图像压缩技术及其Matlab实现. 中国纺织出版社, 2003.3 鲍振博

48、, 李连江. 凸轮动态仿真的Matlab实现J. 煤矿机械, 2006.4 曹玉茹;郑戟明. 基于Matlab的图像压缩实现J. 计算机工程与设计;2009.5 陈勇;郭金旭. 一种改进的图像压缩方法及其Matlab实现大众科技, 武汉理工大学学报(信息与管理工程版).2007.6 李莉. 基于DA算法的二维DCT的FPGA实现J.现代电子技术.2006.7 钟文荣,陈建发. 二维DCT算法的高速芯片设计J;厦门大学学报(自然科学版).2005.8 Solid Warehouse Material Management System Based on ERP and Bar Cod Techn

49、ology, International Journal od Plant Engineering and ManagementJ.20049 Choong Moon Lee. The Sillieon Vallery edage M,Stab-ford University Press.2001.致谢在短短4个月的毕业设计的过程中,我不仅学到许多以前在课堂上没有接触的知识和方法,让我的实践操作能力得到了很高的提升。而且还收获了浓浓的同学之谊,师生之情。因此,我需要特别要感谢在整个毕业设计过程中耐心帮助我的同学们和坚持指导我的老师们,是他们给了我完成课题设计的信心,持之以恒的决心,使得我能够克

50、服一个又一个的难题,最终顺利完成我的毕业设计!让我感触最深的是我尊敬的老师*老师,她在matlab编程设计上的造诣让我深深的佩服,当我有疑问向她请教时她总是能够很清晰的找到我问题的关键点,完美为我阐述问题的本质和核心,正是刘晓丽老师的悉心指导让我在程序编写上少走了很多弯路,最终编写完成了完整可行的程序代码。并且在最后的仿真阶段,*老师更是牺牲自己的休息时间为我指导,我要向她表示由衷的感谢!最后,我要再次感谢一直耐心指导,不厌其烦的*老师,感谢陪我一起过关斩将,攻坚克难的室友,感谢学校将实验室有限的资源对我们开放的大力支持,感谢所有朋友在生活上、精神上和知识上对我无私的帮助,时常和他们讨论我在设

51、计过程中遇到的问题,他们了我很多宝贵的意见和想法,为我提供了很多的参考书目,在我最需要的时候给我鼓励和帮助,在这里我深深说一句:谢谢你们! 附件1 图像JPEG压缩的matlab程序RGB=imread('c:UsersyifanDesktop1.jpg');%读取图片 RGB=imresize(RGB,168,224);%因为1.jpg大小为169*220,所以我改为168*224 imwrite(RGB,'c:UsersyifanDesktopstart.jpg'); %保存压缩前图像 %下面是对RGB三个分量进行分离,此时他们依然为整数 R=RGB(:,:

52、,1); G=RGB(:,:,2); B=RGB(:,:,3); figure,imshow(RGB),title('原来的RGB图像'); %下面是进行测试:由压缩前.jpg,压缩后.jpg,压缩后后.jpg,压缩后后后.jpg的大小可以知道,matlab自身对图像有着压缩功能 imwrite(RGB,'c:UsersyifanDesktop压缩前.jpg'); %保存压缩前图像 %由于1.jpg和压缩前.jpg大小差距很大,从中可以看出matlab对图像进行了压缩 RGB=imread('c:UsersyifanDesktop压缩前.jpg'

53、);%读取图片 imwrite(RGB,'c:UsersyifanDesktop压缩后.jpg'); %保存压缩前图像 RGB=imread('c:UsersyifanDesktop压缩后.jpg');%读取图片 imwrite(RGB,'c:UsersyifanDesktop压缩后后.jpg'); %保存压缩前图像 RGB=imread('c:UsersyifanDesktop压缩后后.jpg');%读取图片 imwrite(RGB,'c:UsersyifanDesktop压缩后后后.jpg'); %保存压缩前图

54、像 %测试结束 %RGB->YUV Y=0.299*double(R)+0.587*double(G)+0.114*double(B); U=-0.169*double(R)-0.3316*double(G)+0.5*double(B); V=0.5*double(R)-0.4186*double(G)-0.0813*double(B); YUV=cat(3,Y,U,V);%YUV图像 figure,imshow(uint8(YUV),title('通过计算得到的YUV图像') T=dctmtx(8);%产生一个8*8的DCT变换举证 %进行DCT变换 BY BU BV是double类型 BY=blkproc(Y,8 8,'P1*x*P2',T,T'); BU=blkproc(U,8 8,'P1*x*P2',T,T'); BV=blkproc(V,8 8,'

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论