图像JPEG压缩的matlab实现.docx
- 文档编号:5975428
- 上传时间:2023-05-09
- 格式:DOCX
- 页数:27
- 大小:440.23KB
图像JPEG压缩的matlab实现.docx
《图像JPEG压缩的matlab实现.docx》由会员分享,可在线阅读,更多相关《图像JPEG压缩的matlab实现.docx(27页珍藏版)》请在冰点文库上搜索。
图像JPEG压缩的matlab实现
图像JPEG压缩的matlab实现
作者姓名:
专业名称:
信息工程
指导教师:
讲师
摘要
随着现代经济的发展,影像风暴已经席卷了我们的日常生活,图像对于人们已经息息相关。
人们对计算机实时处理图像的要求就相对有所提高。
现在我们就面对一个问题,如何在保证图像质量的前提下,同时能够考虑到实时性和高效性就成了一个大家关注的问题。
那么对图像数据信息进行必要的压缩,以便能够保证图像的快速存储和传输。
但是,我们通常看到的图像是一种重要的二维信号,所以它本身就包含非常庞大的数据量,为了快速存储和实时传输,就必须对图像信息进行相应的压缩处理。
新兴的数学工具是局域DCT变换是一种新兴的数学工具,在现在社会中,图像压缩技术现在正受到大量的关注与研究。
本次课题设计在分析近年来,在图像处理领域,对图像压缩普遍方法的基础之上,充分学习和分析了基于DCT变换的图像压缩的相关编码及其基本原理和实现步骤。
简单概述了图像压缩的基本原理以及发展现状和方向,全面分析了DCT变换算法以及思路,提出了采用DCT变换压缩的依据和优势。
本文同时也介绍了图像压缩过程的重要步骤——编码量的方法和原理。
为了方便简单,将使用MATLAB2010实现JPEG图像压缩的仿真。
在论文最后,将介绍仿真的过程以及仿真结果说明,阐述用MATLAB来实现离散余弦变换的图像压缩的基本过程,并总结相关方法的优缺点。
同时也将充分展示压缩前后的图像,并做相应的比较。
关键词:
图像压缩DCTmatlab仿真
Abstract
Withthedevelopmentofmoderneconomy,thestormhassweptthroughtheimageofourdailylife,peoplehavebeencloselyrelatedtotheimageforthe.People'srequirementsonimagereal-timeprocessingisrelativelyimproved.Nowwefaceaproblem,howtoguaranteethequalityoftheimage,atthesametimecanbeoldenoughconsideringthereal-timeandefficiencyhasbecomeanissueofconcern.Thisinformationiscertaintoimagecompressionandprocessinghasbecomeaveryimportantlink.However,theimageisanimportantsignal,duetothelargeamountofdata,whilethestorageandtransmissionofthecompressed.Newmathematicaltoolsarediscretecosinetransformisanewmathematicaltool,basedonthediscretecosinetransformimagecompressiontechnologyisnowbeingalotofattentionandresearch.
Inthispaper,basedontheanalysisofthegeneralmethodsofimagecompressioninrecentyears,thebasicprinciplesandimplementationstepsofimagecompressionbasedonDCTtransformarealsodiscussed.Inthispaper,theprincipleanddevelopmentofimagecompressionareintroducedbriefly,andtheDCTtransformalgorithmisanalyzedandcomparedwithothercompressionmethods.ThebasisofDCTtransformcompressionisproposed.Thefinalstepoftheimagecompressionprocessistoencodethequantizedimage.This.WeuseMATLAB6.5torealizethesimulationofJPEGimagecompression.
ThesimulationresultsshowthatusingMATLABtoachievetheimagediscretecosinetransformcompressionmethodissimple,fast,smallerroradvantages,greatlyimprovestheefficiencyandaccuracyofimagecompression.
Keywords:
DCT,matlab,simulationimage,compression
前言
在当今,人们大多都都已经迈入了信息化的社会,信息交换技术已经发展出不同的形式,主要的信息分为三种形式:
1.文字2.音频3.图像。
在我们看来,信息传播发展的历史可以得出结论,人们已经在信息中融入了形象,然而,对我而言,图像更直观,我们的观察,但也有最多的数据量,相应的数据量也最大,是最大的困难。
这给图像信息的实时传输与快速存储带来了非常大的挑战。
这已经成为图像和信息传输发展的难题,然而数字图像的表示包含非常大的数据流,如果要对其进行处理,就不得不对大量数据进行适当的压缩。
人们已经尝试了各种各样的方式对图像数据进行相关的压缩处理,但是有些被压缩的数据可能是对我们有用的。
不过它的传输方法,以及传输媒介、以及存储媒介都有着严格的要求。
所以,对于快速的图像压缩、以及图像的压缩和编码技术,就是一种十分重要的现代图像数据处理技术,也是一种核心技术。
就现在而言图像文件格式的种类也是非常多的,其中常用的静止图像压缩编码的国际标准JPEG格式,因为它具有耗内存小,图像的质量相当非常清晰,目前早已经被广泛的用于信号处理和图像处理领域。
整个图像数据的压缩过程和编码的过程我们叫做基本的顺序过程,因此被用户用来作为图像的压缩的实际中进行应用。
这是目前图像压缩技术在现实中的最成功的运用之一。
除此之外,重建图像与压缩前的图像的视觉效果大致上没有明显区别。
DCT变换本身就是在最小均方误差条件下的最完美的正交变换,因此在图像压缩领域具有很好的实用价值,目前已经成为国际上普遍认可的图像压缩的格式标准。
余弦函数的核心是DCT变换,它的计算速度在目前来说十分的快,从而大大的提高了图像压缩的效率。
MATLAB信号图像处理工具是、math2works公司推出的一款功能强大,编写简单的图形处理软件平台,该平台将数据分析、数据计算、矩阵运算、信号处理和图形显示等多种处理技术融为一体,打造了一个方便的、高效的、快速的处理系统以及友好的用户环境。
在本次设计中,将直接在Matlab图形处理工具箱中,调用相关图形文件读取、存储以及具体操作函数和指令来实现基于DCT变换的图像压缩编码过程,并分析相关结果,得出相应的结论。
1绪论
1.1论文研究背景及意义
随着目前信息技术以及图像识别技术的快速进步,图像信息技术早已经被成熟的应用在图像检测系统和网络多媒体运用技术中,但是在实际运用中图像的数据量往往是海量的。
这样庞大的信息量,如果不通过特定方式对信息进行压缩,不但远远超过了一般处理系统的存储能力和处理能力,而且在目前的传输信道的传输速率不大的情况下,根本不能够完成庞大的多媒体信息的实时且快速的传输。
所以,为了我们可以有效且快速的存储、处理和传输多媒体图像数据,我们就必须对大数据的图像数据进行有效的压缩,因此必须对图像压缩编码的方法进行仔细全面地研究和分析。
因为组成图像的各像素之间,不管是在垂直方向,还是在水平方向上都会存在一定的联系,那么,如果我们采用某种特定的图像压缩编码技术提取或者减少这种联系,最终便可以达到压缩数据的效果。
图像信息是人们在生活中感受到的最重要的最直观的信息,在多媒体技术和通讯传输技术的快速发展的今天,图像必然也是信息技术所需要处理的最重要对象。
在现在社会中,图像处理技术的发展十分快速,从而也带动了多媒体娱乐、多媒体数字通信、数码高清相机、高清数码摄像头和高清晰度显示屏等各类与图像和视频相关的产品的快速进步。
随着目前图像信息的数据量的不断加大,而且很多成像设备的分辨率的越来越高,每一张图像所包含的信息量也就更大,海量的图像数据已经给存储设备的存储空间、通信信道的带宽以及处理器的处理速度带来了很大的压力。
如果我们要克服这些挑战,就必须采用某种编码方式对图像进行可逆的有效的压缩处理。
数字图像压缩编码的目的就是通过压缩,减小图片的内存,用尽可能最少的比特数来表征一幅图像,同时尽可能的保持原来图像的视觉效果,这必然要求我们对图像编码方式以及解码算法进行深入研究,目前,这个课题已将越来越受到人们的重视,成为近些年信息技术中的核心和热点。
如果能够有好的编码技术,将大大提升图像信息的传输以及存储能力。
1.2JPEG图像的发展历史及简介
在数十年的岁月里,越来越多的的图像压缩方法和相关理论已经被提出,可以分为传统的压缩编码方法和图像编码的新方法。
传统的编码技术,包括脉冲编码调制、量化、熵编码等十种编码方式。
但是随着这些传统编码方法的进一步应用,已经发现了这些方法的不足之处:
比如在传统编码方法中由于正交变换的差频局部化,变换系数的丢失对原始图像的原来结构的影响。
所以,在量化编码不可以用特定的方法;高的压缩比也会造成图像边缘虚化的发生从而发现严重的块效应。
由于JPEG目前在图像压缩领域取得了广泛运用,因此,它已经成为了全世界的在图像处理与分析领域的一个标准。
同时,他在全球图像压缩领域中,已经成为其中核心的部分。
JPEG本身仅仅只描述了如何把图像信息转换为字节流的数据,然而无法描述如何把这些字节在任何特定的存储介质密封起来。
.jpeg/.jpg是使用得比较多的图像文件的格式,由一个图像处理的联合会组织编制的,是一种会丢失部分信息的图像压缩格式,同时也是一种能够给保持原因视觉效果的压模式。
特别是采用高压缩比以后,图像质量将会得到一定的恢复,但是最后减压之后明显会减少,如果我们需要高质量的图像效果,则高压缩比的方式就不适合使用了。
不过,JPEG压缩技术已经非常先进和成熟,它通过有损压缩的形式来删除图像数据的冗余,从而获得非常高的压缩率,显示了一个非常接近原始图像的视觉效果。
换一句话来说,用尽可能最少的存储空间来存储较完整的图像是能够实现的。
JPEG本身也是一种比较常用的稳定的图像格式,可以根据实际的需要来调节图像的质量,通过设定相应的压缩比可以获取能够满足内存存储的需求,同时支持多级别的分向压缩,压缩比从10:
1到40:
1,通常压缩比越大,图像数据丢失就越严重,图像的品质自然也就很差;相反,图像品质就越好。
例如,你能够将20.3kbBMP位图文件压缩到1.37mb。
实际上,你能够在图像质量和文件大小之间找到一个适当的平衡点。
现在处理的主要是高频部分,针对JPEG压缩的。
在日常生活中,颜色占得分量也是比较多的,在网络上面的运用也是相对完整。
在图像的传输过程中,花费时间也能够得到减少,这样就大大的提高了传输时需要的时间,工作效率也会随之增强。
1.3JPEG图像在DCT中压缩的作用
图像压缩这门技术起源于古老的数字电视信号。
到现已经有了悠久的历史。
随着科技的进步,图像处理的方式也逐步完善,处理的方式也出现了多样化。
图像压缩技术也随之得到了比较好的发展。
现在主要的热点是DCT的变换、以及图像的处理。
在本文中,将对最广泛使用的图像压缩算法进行检讨,并讨论了它们的优点和缺点,以及它们的发展前景。
在JPEG算法原理里,把图像以一块一块的方式存在,它们之间不互相干扰,也不会重叠。
这些块我们再将它们划分为二维离散余弦变换。
它们之间的系数是没有关系的。
常用的JPEG主要有以下的特点:
它有几处优点:
它已经形成了国际化的标准;以及在中端和高端比特率中的图像质量有一个有效的保证。
也有如下的缺点:
就是在处理过程中,图像已被分成了块。
在处理过程中会产生方块效应。
很难用高斯过程来描述。
系数在量化的时候也会丢失一部分数据。
而且在另一方面图像的压缩比例在当前来看还不太高,还需进一步的努力。
JPEG在对图像进行压缩的过程中,会出现方块效应。
而方块效应主要体现在信号上面。
在这个过程中,图像压缩数据在高频量的数据是可以省略的,但是低频量上的数据包含了一些图像的基本数据。
因此,图像压缩过程中必须保证低频数据不被丢失。
它是相当于对交叠在一起的数据进行离散余弦的变换。
这种方式不仅将大大减少压缩数据对图像的影响,而且将大大提高压缩的稳定性。
1.4本文研究的主要内容
在本文毕设中,是以matlab为平台来进行开发研究。
主要研究的是JPEG图像在matlab中的使用。
分析JPEG图像的原理,以及对原理的升入研究。
Matlab这个平台对于初学者来说是比较实用的,本次的设计师用DCT的算法来进行研究。
首先,需要理解DCT算法的使用和了解,利用matlab来进行图像的仿真。
本次论文的主要研究内容如下:
第一章为matlab及JPEG的基础部分,初步的介绍了本文课题研究的方向及意义。
还有之后介绍当前图像压缩技术的发展现状和未来发展的方向。
本次论文主要根据以往和当今离散余弦变换在图像压缩中的应用经验,对这次的研究来作一个总结。
主要总结了本次论文的主要研究核心的技术,第二章主要介绍了JPEG图像压缩方面的发展及意义和现状,包括图像压缩的相关标准、技术指标和相关分类等等,讨论了图像压缩编码及离散余弦变换的模型的相关原理等;第三章介绍了离散余弦变换的matlab,介绍了MATLAB图像处理工具箱的应用方法,然后概述了JPEG的基本原理、以及离散余弦变换相关算法的实现等,并在本次论文中实现离散余弦变换的图像压缩;第四章主要介绍了离散余弦变换的matlab界面,介绍的图形用户界面功能,采用MATLAB代码的图像压缩编码和界面操作过程中讨论的设计思路和逻辑;在论文的最后,提出了本文的相关结论,提出了需要解决的问题,并提出改进步骤。
2图像压缩编码原理
2.1DCT变换的来源
在目前信号的变换编码处理方法中,一般情况下通过将一组相关的基函数的进行信号分解,就能够得到信号的变换域表示法,在变换域中,根据信号在相关特性上比较集中的特点,把重点放在特征提取和分析特点两个部分进行研究。
从19世纪20年代以来,傅里叶变换在信号处理方面的应用,是目前应用最广泛的一种分析手段。
DCT变换在现实运用比较广泛,它可以实现在频域中进行高精准的定位,也就是具有很高的分辨率,而它在时域中是不具有任何定位性或分辨能力的,但它能够反映的所有相关信号的时间域特征,但它不能提供任何相关的时频率信息。
事实上,在我们的日常生活所用到的信号平稳的,其他的频率的特点是随时间来进行变化的。
分析傅立叶变换的这种信号,虽然可以知道频率信息包含的信息是什么,但不能知道具体信息的频率在哪一段时间内,因此不能提供这些信号所有完整性的信息。
显然,傅立叶变换不适合实时(或瞬时)频域特征信息
离散余弦变换(DCT),其实际上就是一种转换分析信号的方法,如果要在变换的过程中去除来分析的信号,从而提取其特征,我们就需要不得不适当的构造一组基函数,而且这组基函数必须是以某种形式非常类似于我们所需要表示的数据,甚至必须具有与数据相类似的相关结构。
在人们日常生活中。
通常情况下遇到的信号是在时域和频域都同时具有相关性。
在空间上相隔比较近的样值间的相关性,相比于相隔较远样值的大得多,然而在频域上通常是呈带状的。
为了分析和表示这样的信号,我们要求相关的基函数在空间域和频域都是局域性的。
因为离散余弦函数的频域分辨率与时域分辨率具有反比例的关系,刚好与实际信号长时为低频、短时高频的特性基本一致,不仅可以准确的定位信号的瞬间跳变,同时还能够呈现信号的整体变化规律率。
综上所述,离散余弦变换是一种比较理想的进行信号处理的数学工具[6],在信号处理及其图像处理领域具有很好的优势,以及良好的实时性。
2.2基于DCT的JPEG图像压缩编码步骤
1、颜色空间的转换和采样
JPEG的文件目前都是使用的颜色空间为1982年推荐的电视图像数字化标准CCIR601(现为ITU-RBT.601)。
在数字化的标准中,信号的变换必须是在时域中进行的,因此需要采用8位的数字来表示代码。
其中Y表示其亮度,CbCr表示其色度。
将RGB模式的全彩色图像转换到YCbCr模式,通常采用公式(2-1),
(2-1)
逆变换公式为:
(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图像压缩处理技术基本理论
图像数据压缩的核心问题,就是能否在兼顾图像质量的条件下,采用更少的数据量来表示图像,从而大大提高图像实时传输的效率以及快速存储的速度,这就是我们在信息编码中信源编码的基本含义。
也就是说,前者在解码后可以最大程度还原图像的视觉效果,尽可能的减少信息的丢失;然而后者在解码时只能近似原图像压缩是通过删除图像数据中冗余的或者采用压缩高频量的方法来减少数据量,从而实现相关图像的压缩。
实际上,压缩过程和解压过程这两个过程是一个可逆过程,实际也就是相对于编码和解码的过程,压缩技术分为缺失压缩和完全压缩两种,其实缺失压缩会造成数据量的丢失,而完全压缩会按照相关编码对所有数据进行保留和恢复。
假设有一个没有事先备份的信道,所传输的信息为{ai},1≤i≤N,发生的事件在发生几率上是可以判断的,记为P(ai)。
则其信息量定义为:
(2-5)
由此可见一个消息出现的可能性越小,其信息量就越多,其出现对信息的贡献量越大,反之亦然[7]。
信源的平均信息量称为“熵”(entropy),可以表示为:
(2-6)
对其取二为底的对数时,也可写成如下
(2-7)
在图像压缩过程中,比较重要衡量指标就是压缩比。
一般通过下列公式可以计算压缩比
在进行图像压缩编码的过程中通常分为两个过程,第一个过程为利用相关的分析模型和变换模型对图像信号进行处理的;另一个过程是利用变换过程中信号分析和变换特性,再根据相关的编码方式对相关数进行量化处理,编码器与解码器的结构分别如图所示。
图像编码压缩模型如图所示:
原始数据
DCT变换量化
量化器
编码
压缩图像数据
图2.1图像编码压缩模型
首先就是采集数据,对要处理原图像的相关图像信息进行相关采集,然后对采集到数据进行DCT量化处理,也就是将信息从频域中转化到时域中进行分析,这样做也是便于进行相关的编码分析和处理。
最后在进行进一步量化处理,然后进行相应的压缩编码,最后,就可以实现图像数据的压缩。
这种压缩方式属于有损压缩,因此需要保证其稳定的可恢复性。
3图像压缩的MATLAB实现
3.1离散余弦变换的定义及原理
图像的二维离散余弦变换(DiscreteCosineTransform)简称DCT变换是在最小均方误差条件下求出的一种最佳正交变换,这种变换在信号和图像领域获得广泛的使用,大多数情况下,为了保证图像的质量以及增强其传输的速率,一般使用DCT变换编码对相关图像信息进行必要压缩处理,并已经成为大多数图像编码技术国际标准的核心,实际上,JPEG图像格式的压缩算法采用的就是DCT变换算法。
DCT变换的本质为标准余弦函数变换,其运算速度非常快速,可以大大提高压缩以及数据处理的效果[12],JPEG算法目前已经成为JPEG世界标准,它是世界上第一有关图像彩色、灰度、静止图像的全球标准。
在编码过程中,JPEG算法首先通过把RGB分量分化为两种分量——亮度分量和色差分量,紧接着将相关图像进行分解,最后变成8×8的像素块,随后将每一个个8×8像素块直接导入矩阵的全部值进行平均运算,剩下的63个系数将作为交流量的系数,其中每一个系数都表示一定的压缩量,,紧跟着在离散余弦变换的基础上,对图像数据量进行矩阵量化。
在解压的过程中,第一步是对原来已经编码量化的相关系数进行逆向的解码处理,接下来就就可以求逆量化并使用离散余弦变换的逆变换将DCT每一个相关的系数变成为8×8数据信息块,这样便于对每个信息块进行压缩操作。
离散余弦变换的传统算法就是一种基于FFT(快速傅里叶变换)的基本算法,这种算法就是一种快速的傅里叶变换,目前广泛运用图像处理,视频处理和信号处理领域中。
本论文中主要采用一种全新的变换方法——基于DCT变换矩阵算法[3]。
这种变换矩阵的方法是非常适合做8×8或16×16的图像块的离散余弦变换,因为它具有很快的运算速度,便于处理器快速的处理。
本文主要采用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。
显然,这种调用方式相比于其他的函数要更快,更准确。
关于DCT变换的算法,实际上是一种对高频信息量压缩的处理方式,对其低频信息量进行完整的保留,从而达到最大程度保留原始图像信息,以恢复图像原本的视觉效果的过程。
3.2离散余弦变换的算法实现
第一步是读取指定的图像文件X,然后调用dctmtx函数对图像X进行DCT变换,最终可以得到矩阵T,就是采用语句D=dctmtx(8),接下来,对每一个像素块进行矩阵运算B=T*矩阵x*T’。
随后就可以调用二值掩膜算法对DCT的系数进行相应压缩,通常情况下,只保留DCT变换的10个压缩后的系数就可以了。
最后在对整个图像进行逆DCT变换,也就是进行图像的重构,并在计算机上进行显示。
整个算法的处理过程如下图所示:
离散余弦算法流程图
图3.1离散余弦算法流程图
3.3图形用户界面介绍
传统的用户界面一般是指用户与计算机之间进行相互信息和数据交流的应用平台,目前已经有多种人机交互方式相继出现,目前已经从指令集的交互方式,发展至以图形界面操作为主的更简单直观交互形式。
现在,图形界面己在人机交互方式中占核心地位,这主要是因为其能够更简单,更灵活,更直观,更快速的实现人机的交互通信。
目前基于各种操作
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 图像 JPEG 压缩 matlab 实现