毕业论文静止图像压缩技术JPEG的分析与应用.doc
湖 南 涉 外 经 济 学 院毕 业 设 计( 论 文 )题目静止图像压缩技术JPEG的分析与应用作者彭孟秋学部电气与信息工程专业通信工程学号200801000278指导教师何小年二一二年四月十五日湖南涉外经济学院毕业论文(设计)任务书学生姓名: 彭孟秋 学号: 200801000278 专业班级: 通信工程0802 毕业论文(设计)题目: 静止图象压缩技术JPEG的分析与应用 题目类型: 实验研究 毕业论文(设计)时间: 自 2011 年 12 月 18 日开始至 2012年 4月 15 日止1. 毕业论文(设计)内容要求:1、 课题研究背景和意义2、 说明图象压缩技术的编码理论和编码过程。3、 确立图像压缩编码方法。4、 MATLAB开发工具实现图像压缩的应用5、 MATLAB仿真实现图像压缩。6、 论文写作,论文修改并提交7、 本次课程设计总结。1题目类型:(1)理论研究(2)实验研究(3)工程设计(4)工程技术研究(5)软件开发2.主要参考资料1 胡学龙,许开宇.数字图像处理M.北京: 电子工业出版社,20062 覃凤清.基于DCT的图像压缩及其MATLAB实现J.大众科技.2006(03) 3 张磊,毕靖,郭莲英.Matlab实用教程M.北京:人民邮电出版社,2008.4 张汗灵.MATLAB在图像处理中的应用M.北京:清华大学出版社,2008:7-675 陈普跃,赵新璧,陈斌.二维DCT快速算法及FPGA实现J.电子质量.2008(02) 6 吕世良,曲仕敬.基DCT的图像压缩及Matlab实现J.科技信息(科学教研).2008(14) 7 吴术路.基于DCTJPEG图像压缩及实现J.青海师范大学学报(自然科学版).2010(03) 8 王海,刘彦隆.基于JPEG图像压缩算法的研究J. 科技情报开发与经济.2010(10) 9 郑戟明,曹玉茹.基于MATLAB的图像压缩处理及其实现J.微计算机信息.2010(10) 10 禹蒲阳.DCT和RLE的灰度图像压缩方法J.湖南科技大学学报(自然科学版). 2010(02)3.毕业论文(设计)进度安排阶段阶 段 内 容起止时间第一阶段根据自己所从事实际工作或熟悉的知识选定论文题目1月8日1月20日第二阶段搜集资料,查阅文献(查资料途径:网络搜索、图书馆、有关专业书籍),并记下有用的笔记。1月213月15日第三阶段论文写作,论文修改并提交3月164月5日第四阶段老师对论文进行评阅4月54月14日第五阶段论文答辩4月15日指导教师(签章):_ 日期:_系(教研室)主任(签章) :_ 日期:_二级学院院长(签章) :_ 日期:_注:任务书由指导教师本人填写,经教研室主任(学术小组组长)审核后下发给学生。湖南涉外经济学院毕业论文(设计)指导教师评语主要对学生毕业论文(设计)的工作态度,研究内容与方法,工作量,文献应用,创新性,实用性,科学性,文本(图纸)规范程度,存在的不足等进行综合评价建议成绩: 指导教师: (签章)年 月 日涉外经济学院毕业论文(设计)评阅教师评语主要对学生毕业论文(设计)的文本格式、图纸规范程度,工作量,研究内容与方法,实用性与科学性,结论和存在的不足等进行综合评价建议成绩: 评阅教师: (签章)年 月 日湖南涉外经济学院毕业论文(设计)答辩记录日期: 2012年4月15日 学生姓名: 彭孟秋 学号: 200801000278 专业班级: 通信0802 题目: 静止图象压缩技术JPEG的分析与应用 毕业论文(设计)答辩委员会(小组)意见:主要对学生毕业论文(设计)的研究思路,论文(设计)质量,文本图纸规范程度和对论文(设计)的介绍,回答问题情况等进行综合评价答辩成绩: 评定等级: 答辩委员会(小组)负责人: (签章)委员(小组成员): (签章) (签章) (签章) (签章) 二级学院审查意见: 论文(设计)最终评定等级:_ 负责人: (签章) _年_月_日摘 要随着科学技术的发展,图像压缩技术越来越引起人们的关注。为此从众多的图像压缩编码标准中选取了基于DCT变换的JPEG图像压缩编码算法进行研究,并通过对比分析各种软件特性选取了MATLAB进行实验仿真。首先说明了图像压缩在现代通信中的必要性和可行性,然后讲述了MATLAB及其图像处理工具箱的相关知识,并对基于DCT变换的JPEG图像压缩算法进行了详细的研究,重点介绍了JPEG压缩编码的具体过程和方法 ,详细介绍了编码中DCT变换、量化、熵编码和霍夫曼编码等模块的原理和数学推导以及各模块的功能分析。最后应用MATLAB进行了实验仿真并分析结果得出结论。实验结果表明基于DCT 变换的JPEG 图像压缩方法简单、方便,既能保证有较高的压缩比,又能保证有较好的图像质量,应用MATLAB仿真出来的结果较好的反应了其编码算法原理。关键词:JPEG图像压缩;DCT;MATLAB;图像处理工具箱ABSTRACTImage compression technology has been growing concern with the development of science. To this end a large number of images from the selected coding standard DCT-based JPEG image compression research, and comparative analysis of various software features through the selection experiment MATLAB simulation. First, note the image compression in modern communications and the necessity and feasibility, and then tells the MATLAB and its Image Processing Toolbox of relevant knowledge, and DCT-based JPEG image compression algorithm is studied in detail, the last application of MATLAB to Simulation and experimental results concluded. Experimental results show that the results table: DCT-based JPEG image compression method is simple, not only guarantee a higher compression ratio, but also to ensure both better image quality, MATLAB simulation results reflect a better algorithm principle. Keywords: JPEG Image compression;MATLAB;Image Processing Toolbox; DTC 目 录摘 要IABSTRACTII第一章 前 言11.1 课题研究的背景11.1.1 离散余弦变换11.1.2 预测技术21.2课题研究的任务和目标21.3 论文组织结构2第二章 图像压缩编码理论算法32.1 DCT变换的思想来源32.2基于DCT的JPEG图像压缩编码理论算法42.3 基于DCT的JPEG图像压缩编码步骤42.3.1 颜色空间的转换和采样42.3.2 二维离散余弦变换52.3.3 DCT系数的量化82.3.4 量化系数的编排92.3.5 DC系数的编码102.3.6 AC系数的编码102.3.7 组成位数据流112.4 DCT变换在图像压缩中的应用132.5 本章小结13第三章 基于DCT图像压缩MATLAB仿真143.1 MATLAB中支持的数字图像文件143.2 MATLAB 及其图像处理工具箱143.3 数字图像文件的读写143.3.1图像文件的读取143.3.2 图像文件的输出153.3.3 图像文件的显示153.4程序流程图163.5基于DCT 变换的JPEG 图像压缩的MATLAB 实现173.5.1 MATLAB仿真结果173.5.2实验结果分析18第四章 结论19参 考 文 献20致 谢21附 录:22第一章 前 言 1.1 课题研究的背景 随着信息技术的发展,图像信息被广泛应用于多媒体通信和计算机系统中,但是图像数据的一个显著特点就是信息量大。具有庞大的数据量,如果不经过压缩,不仅超出了计算机的存储和处理能力,而且在现有的通信信道的传输速率下,是无法完成大量多媒体信息实时传输的,因此,为了更有效的存储、处理和传输这些图像数据,必须对其进行压缩,因此有必要对图像压缩编码进行研究。由于组成图像的各像素之间,无论是在水平方向还是在垂直方向上都存在着一定的相关性,因此只要应用某种图像压缩编码方法提取或者减少这种相关性, 就可以达到压缩数据的目的1。所谓的图像压缩编码技术就是对要处理的图像数据按一定的规则进行变换和组合, 从而达到以尽可能少的数据流(代码)来表示尽可能多的数据信息。在众多的图像压缩编码标准中,JPEG(Joint Photographic Experts Group)格式是一种称为联合图像专家组的图像压缩格式,它适用于不同类型、不同分辨率的彩色和黑白静止图像。在JPEG图像压缩算法中,一种是以离散余弦变换(DCT,Discrete Cosine Transform)为基础的有损压缩算法,另一种是以预测技术为基础的无损压缩算法。1.1.1 离散余弦变换 DCT变换利用傅立叶变换的性质。采用图像边界褶翻将像变换为偶函数形式,然后对图像进行二维傅立叶变换,变换后仅包含余弦项,所以称之为离散余弦变换。DCT编码属于正交变换编码方式,用于去除图像数据的空间冗余。变换编码就是将图像光强矩阵(时域信号)变换到系数空间(频域信号)上进行处理的方法。在空间上具有强相关的信号,反映在频域上是在某些特定的区域内能量常常被集中在一起,或者是系数矩阵的分布具有某些规律。我们可以利用这些规律在频域上减少量化比特数,达到压缩的目的。图像经DCT变换以后,DCT系数之间的相关性就会变小。而且大部分能量集中在少数的系数上,因此,DCT变换在图像压缩中非常有用,是有损图像压缩国际标准JPEG的核心。从原理上讲可以对整幅图像进行DCT变换,但由于图像各部位上细节的丰富程度不同,这种整体处理的方式效果不好。为此,发送者首先将输入图像分解为8*8或16*16块,然后再对每个图像块进行二维DCT变换,接着再对DCT系数进行量化、编码和传输;接收者通过对量化的DCT系数进行解码,并对每个图像块进行的二维DCT反变换。最后将操作完成后所有的块拼接起来构成一幅单一的图像。对于一般的图像而言,大多数DCT系数值都接近于0,所以去掉这些系数不会对重建图像的质量产生较大影响。因此,利用DCT进行图像压缩确实可以节约大量的存储空间。1.1.2 预测技术它是利用空间中相邻数据的相关性,利用过去和现在出现过的点的数据情况来预测未来点的数据。通常用的方法是差分脉冲编码调制(DPCM)和自适应差分脉冲编码调制(ADPCM)。1.2课题研究的任务和目标 本课题的选题是静止图象压缩技术JPEG的分析与应用,本课题将通过研究用于图像压缩的离散余弦变换变换算法理论知识,较为深入了解DCT在图像压缩的应用,以及设计JPEG图像压缩的MATLAB技术实现。用MATLAB开发工具实现图像压缩的应用,这是本课题研究的目标。1.3 论文组织结构 本文的主要内容是,介绍图像压缩编码算法中的离散余弦变换(DCT)变换算法,和用MATLAB进行仿真。第一章 介绍了本课题的研究背景,研究任务和目标,以及本文的内容安排第二章 对图像压缩编码理论算法进行了详细介绍,着重讲解了基于DCT的JPEG图像压缩编码步骤。第三章 对基于DCT的图像压缩MATLAB仿真实现进行了详细的描述。其中包括利用MATLAB编写程序的流程图,和给出了具体仿真实验结果与结果分析。第四章 结论第二章 图像压缩编码理论算法2.1 DCT变换的思想来源信号的变换分析方法中,通常是通过一组适当的基函数对信号进行分解,得到信号在变换域的表示方法,利用信号在变换域中某些特征趋于集中的特点来提取其特征从而进行分析。自1822年傅立叶(Fourier)发表“热传导解析理论”以来,傅立叶变换一直是信号处理领域中应用最广泛、效果最好的一种分析手段。但傅立叶变换只是一种纯频域的分析方法,它在频域的定位性是完全准确的(即频域分辨率最高),而在时域无任何定位性(或分辩能力),也即傅立叶变换所反映的是整个信号全部时间下的整体频域特征,而不能提供任何局部时间段上的频率信息。事实上,在我们生活中的常见信号通常都具有非平稳的性质,即其频域性质都是随时间而变化的。对这一类信号用傅立叶变换进行分析,虽然可以知道信号所包含有哪些频率信息,但不能知道这些频率信息具体出现在哪个时间段上,因此不能提供关于信号完整的信息。可见,傅立叶变换不适用于提取局部时间段(或瞬间)的频域特征信息。为了研究信号在局部时间范围的频域特征,1946年Gabor提出了著名的Gabor变换。其基本思想是,取时间函数作为窗口函数,用与待分析函数相乘,然后再进行傅立叶变换。在Gabor变换的基础上,为了适应不同问题的需要,进一步发展了多种形式的窗口函数,如矩形窗、汉宁窗、哈明窗等,这一类加窗的傅立叶变换统称为短时傅立叶变换(STFT)。STFT从本质上讲,是用窗函数截取原始信号的一个待分析段进行傅立叶变换,因而可以描述信号在某一局部时间段上的频率信息。目前,STFT在许多领域获得了广泛的应用,但由于STFT的定义决定了其窗函数的大小和形状均与时间和频率无关,一旦选定窗口就保持固定不变,不利于分析时变信号。实际上一般的高频信号持续时间较短,而低频信号持续时间较长,因此我们期望对于高频信号采用小时间窗,对于低频信号采用大时间窗进行分析。在进行信号分析时,这种变时间窗的要求同STFT的固定时窗(窗不随频率而变化)的特性是相矛盾的。离散余弦变换(DCT)从本质上是一种变换分析方法,要在变换时最大的去除分析信号的相关性提取其特征,就必须适当的构造一组基函数,这组基函数以某种形式类似于我们所要表示的数据,甚至具有与数据相同的相关结构。在我们日常生活中常遇到的信号在空间域和频域都具有相关性。在空间上相隔较近的样值间的相关性比相隔较远的大的多,而在频域上通常呈带状。为了分析和表示这样的信号,我们需要基函数在空间域和频域是局域性的。由于离散余弦函数的频域分辨率与时域分辨率成反比,刚好与实际信号长时低频、短时高频的特性相吻合,既能精确定位信号的突发跳变,又能把握信号的整体变化率。由此可见,离散余弦变换是一种比较理想的进行信号处理的数学工具。2.2基于DCT的JPEG图像压缩编码理论算法 基于DCT编码的JPEG编码压缩过程框图如图2-1所示。源图像YUV图像8×8子块DCT量化编码压缩图像量化表编码表图2-1 基于DCT编码的JPEG压缩过程简化框图在编码过程中,首先将输入图像颜色空间转换后分解为8×8大小的数据块,然后用正向二维DCT把每个块转变成64个DCT系数值,其中1个数值是直流(DC)系数,即8×8空域图像子块的平均值,其余的63个是交流(AC)系数,接下来对DCT系数进行量化,最后将变换得到的量比的DCT系数进行编码和传送,形成压缩后的图像格式在解码过程中,先对已编码的量子化的DCT系数进行解码,然后求逆量化并把DCT系数转化为8×8样本像块(使用二维DCT反变换),最后将操作完成后的块组合成一个单一的图像。这样就完成了图像的压缩和解压过程2.3 基于DCT的JPEG图像压缩编码步骤 2.3.1 颜色空间的转换和采样 JPEG文件使用的颜色空间为1982年推荐的电视图像数字化标准CCIR 601(现为ITU-RB T.601)。在这个色彩空间中,每个分量、每个像素的电平规定为255级,用8位代码表示。JPEG只支持YCbCr颜色模式。其中Y代表亮度,CbCr代表色度。全彩色图像RGB模式转换到YCbCr模式,用下组公式。 (2-1) 其逆变换为: (2-2)JPEG是以8×8的块为单位来进行处理的,由于人眼对亮度Y的敏感度比色度CbCr的敏感度大的多,所以采用缩减取样的方式,通常采用YUV422取样,图2-2所示。图2-2 YUV422取样示意图即对于16×16的块,Y取4个8×8的块,CbCr各取2个8×8的块。也有YUV411方式,Y取4个8×8的块,CbCr各取1个8×8的块。YUV422取样方式,数据减少1/3。YUV411取样方式,数据减少1/2。缩减取样一般采用图2-3所示方法。abcdeb'd'图2-3 压缩取样示意图2.3.2 二维离散余弦变换 在傅里叶级数展开式中,如果被展开的函数是实偶函数,那么,其傅里叶技术中只包含余弦项,在将其离散化由此可导出余弦变换,或称之为离散余弦变换(DCT,Discrete Cosine Transform)。二维离散余弦正变换公式为 (2-3)式中,。二维离散余弦逆变换公式为 (2-4)式中,。 JPEG采用的是8×8大小的子块的二维离散余弦变换。在编码器的输入端,把原始图像顺序地分割成一系列8×8的子块,子块的数值在-128到127之间。采用余弦变换获得64个变换系数8。变换公式,如式(2-5)所示。 (2-5)式中,。 (2-5)在MATLAB的图像处理工具箱中,可以直接调用dct2和idct2来实现二维离散余弦变换及其反变换。(1) dct2dct2函数实现图像的二维离散余弦变换,其语法为:F=dct2(f)运行下列程序:f=imread('cameraman.tif');f=im2double(f);F=dct2(f);subplot(121),imshow(f, );subplot(122),imshow(log(1+20*abs(F), );运行结果如图24所示。图24 图像显示及图像DCT变换后频谱显示由运行结果可知,DCT变换具有能量集中的性质,数据集中在左上角。因此进行图像压缩时离散余弦变换矩阵可以舍弃右下角的高频数据。(2) idct2 idct2函数实现图像的二维离散余弦逆变换,其语法为:F=idct2(f)在MATLAB图像处理工具箱中,有一个对图像进行块操作的函数blkproc,利用这个函数,可以直接实现图像一系列8×8子块的DCT变换。其语法格式为:B = blkproc(A,m n,fun, parameter1,,parameter2, .)B = blkproc(A,m n,mborder nborder,fun,.)B = blkproc(A,'indexed',.)m n是指图像以m*n为分块单位,对图像进行处理(如8像素*8像素)Fun:应用此函数对分别对每个m*n分块的像素进行处理parameter1, parameter2:要传给fun函数的参数mborder nborder:对每个m*n块上下进行mborder个单位的扩充,左右进行nborder个单位的扩充,扩充的像素值为0,fun函数对整个扩充后的分块进行处理。如下列程序:I = imread('cameraman.tif'); fun = idct2;J = blkproc(I,8 8,fun);imagesc(J), colormap(hot)运行结果如图2-5所示。图2-5 DCT变换后图像2.3.3 DCT系数的量化 量化是对经过DCT变换后的频率系数进行量化,其目的是减小非“0”系数的幅度以及增加“0”值系数的数目,它是图像质量下降的最主要原因。对于基于DCT的JPEG图像压缩编码算法使用如图2-6所示的均匀量化器进行量化,量化步距是按照系数所在的位置和每种颜色分量的色调值来确定。因为人眼对亮度信号比对色差信号更敏感,因此使用了表2-1所示的量化表。此外,由于人眼对低频分量的图像比对高频分量的图像更敏感,因此表中的左上角的量化步距要比右下角的量化步距小。DCT系数输入量化系数输出图2-6 均匀量化器亮度和色度因为代表的图像的信息量不同,亮度代表了图像的低频分量,色度代表了图像的高频分量,要分别对亮度和色度进行量化,所以量化表也是不同的。JPEG压缩色度和亮度量化表如表2-1所示。表2-1 JPEG压缩色度和亮度量化表亮度量化表色度量化表161110162440516117182447999999991212141926586055182126669999999914131624405769562426569999999999141722295187806247669999999999991822375668109103779999999999999999243555648110411392999999999999999949647887103121120101999999999999999979929598112100103999999999999999999量化会产生误差,上图是综合大量的图像测试的实验结果,对于大部分图像都有很好的结果。表中可以看出,高频部分对应的量化值大,目的就是将高频部分编程接近于0,以便以后处理。JPEG可以在压缩比和图像质量间作取舍。方法就是改变量化值。如果量化值放大一倍,则有更多的系数量化为0,提高了压缩比。2.3.4 量化系数的编排 量化后的系数要重新编排,目的是为了增加连续的“0”系数的个数,就是“0”的游程长度,方法是按照Z字形的式样编排。DCT变换后低频分量多呈圆形辐射状向高频率衰减,因此可以看成按Z字形衰减,如图2-7所示。因此,量化系数按Z字形扫描读数,这样就把一个8×8的矩阵变成一个1 ×64的矢量,频率较低的系数放在矢量的顶部。图2-7 量化DCT系数的编排2.3.5 DC系数的编码 8×8子块的64个变换系数经量化后,按直流系数DC和交流系数AC分成两类处理。坐标u=v=0的直流系数DC实质上就是空域图像中64个像素的平均值。图像块经过DCT变换之后得到的DC直流系数有两个特点,一是系数的数值比较大,二是相邻8×8图像块的DC系数值变化不大。根据这个特点,JPEG算法使用了差分脉冲调制编码技术差分脉冲编码调制(DPCM ,Differential Pulse Code Modulation),是一种对模拟信号的编码模式,先根据前一个抽样值计算出一个预测值,再取当前抽样值和预测值之差作为编码用.此差值称为预测误差.抽样值和预测值非常接近(因为相关性强),预测误差的可能取值范围比抽样值变化范围小.所以可用少几位编码比特来对预测误差编码,从而降低其比特率.这是利用减小冗余度的办法,降低了编码比特率.因此,对DC系数编码进行差分脉冲编码就是对相邻图像块之间量化DC系数的差值(Delta)进行编码,即对相邻块之间的DC系数的差值DIFF=DC-DC编码。2.3.6 AC系数的编码 DCT变换所得系数除直流系数之外的其余63个系数称为交流系数(AC系数)。量化AC系数的特点是1× 64矢量中包含有许多“0”系数,并且许多“0”是连续的,因此使用非常简单和直观的游程长度编码(RLE)对它们进行编码。所谓行程编码(Run-Length Encoding)就是指仅存储一个像素值以及具有相同颜色的像素数目的图象数据编码方式,或称游程编码,常用RLE(Run-Length Encoding)表示。该压缩编码技术相当直观和经济,运算也相当简单,因此解压缩速度很快。RLE压缩编码尤其适用于计算机生成的图形图像,对减少存储容量很有效果63个AC系数采用行程编码的方式进行编码的格式如图2-8所示7654321076543210第一字节第二字节两个非零值之间的连续零的个数下一个非零值所占的比特数下一个非零系数的实际值图2-8 AC编码格式也即在AC01到AC63中,找出每一个非零的AC值,将其表示成(NN/SS)VV的形式,其中:NN表示该AC值前的0的个数。而SS、VV与DC的定义一样。如果连续的非0超过15个时,增加一个扩展字节:(15/0)表示连续16个0。另外若有一串0延伸到AC63,一律用(0/0)表示结束。2.3.7 组成位数据流 JPEG编码的最后一个步骤是把各种标记代码和编码后的图像数据组成一帧一帧的数据,这样做的目的是为了便于传输、存储和译码器进行译码,这样的组织的数据通常称为JPEG位数据流(JPEG bit stream)。举个例子来说明上述过程。下面为8×8的亮度(Y)图像子块经过量化后的系数,如表2-2所示。表2-2 亮度量化后的系数150-100000-2-1000000-1-10000000000000000000000000000000000000000000000可见量化后只有左上角的几个点(低频分量)不为零,这样采用行程编码就会很有效。第一步,熵编码的中间格式表示。先看DC系数。假设前一个8×8子块DC系数的量化值为12,则本块DC系数与它的差为3,根据表2-3表2-3 DC系数表SizeAmplitude0011,123,-2,2,337-4,47415-8,815531-16,1631663-32,32637127-64,641278255-128,1282559511-256,256511101023512,5121023112047-1024,10242047查表得Size=2,Amplitude=3,所以DC中间格式为(2)(3)。下面对AC系数编码。经过Zig-Zag扫描后,遇到的第一个非零系数为-2,其中遇到零的个数为1(即RunLength),根据表2-4的AC系数表:表2-4 AC系数表 SizeAmplitude11,123,-2,2,337-4,47415-8,815531-16,1631663-32,32637127-64,641278255-128,1282559511-256,256511101023512,5121023查表得Size=2。所以RunLength=1,Size=2,Amplitude=3,所以AC中间格式为(1,)(-2)。其余的点类似,可以求得这个8×8子块熵编码的中间格式为(DC)(2)(3),(1,2)(-2),(0,1)(-1),(0,1)(-1),(0,1)(-1),(2,1)(-1),(EOB)(0,0)第二步,熵编码。对于(2)(3):2查DC亮度Huffman表得到11,3经过VLI编码为011;对于(1,2)(-2):(1,2)查AC亮度Huffman表得到11011,-2是2的反码,为01;对于(0,1)(-1):(0,1)查AC亮度Huffman表得到00,-1是1的反码,为0;.最后,这一8×8子块亮度信息压缩后的数据流为11011,1101101,000, 000, 000,111000,1010。总共31比特,其压缩比是64×8/31=16.5,大约每个象素用半个比特。以上是图像压缩编码的整个过程。从上面的例子可以看出,压缩比和图像质量是呈反比的,以下是压缩效率与图像质量之间的大致关系,可以根据需要,选择合适的压缩比。压缩比和图像质量的关系如表2-5所示。表2-5 压缩比与图像质量的关系压缩效率(单位:bits/pixel)图像质量0.250.50中好,可满足某些应用0.500.75好很好,满足多数应用0.751.5极好,满足大多数应用1.52.0与原始图像几乎一样2.4 DCT变换在图像压缩中的应用 JPEG格式是目前网络上最流行的图像格式,是可以把文件压缩到最小的格式,在 Photoshop软件中以JPEG格式储存时,提供11级压缩级别,以010级表示。其中0级压缩比最高,图像品质最差。即使采用细节几乎无损的10 级质量保存时,压缩比也可达 5:1。以BMP格式保存时得到428MB图像文件,在采用JPG格式保存时,其文件仅为178KB,压缩比达到24:1。经过多次比较,采用第8级压缩为存储空间与图像质量兼得的最佳比例。JPEG格式的应用非常广泛,特别是在网络和光盘读物上,都能找到它的身影。目前各类浏览器均支持JPEG这种图像格式,因为JPEG格式的文件尺寸较小,下载速度快。2.5 本章小结 本章介绍了DCT的JPEG图像压缩编码理论算法,基于DCT变换的图像压缩编码的原理和离散余弦变换的运算过程。以及DCT变换在图像压缩中的应用在图像压缩中的应用。其中详细介绍了基于DCT的JPEG图像压缩编码各个步骤:l 颜色空间的转换和采样l 二维离散余弦变换l DCT系数的量化 l 量化系数的编排l AC系数的编码l 组成位数据流第三章 基于DCT图像压缩MATLAB仿真 3.1 MATLAB中支持的数字图像文件MATLAB图像处理工具箱支持四种图像类型,分别为RGB图像(真彩色图像)、索引图像、灰度图像、二值图像,由于有的函数对图像类型有限制,这四种类型可以用工具箱的类型转换函数相互转换。MATLAB可操作的图像文件包括BMP、HDF、JPEG、PCX、TIFF、XWD等格式。下面就图像处理的基本过程讨论工具箱所实现的常用功能。MATLAB为用户提供了专门的函数来从图像格式的文件中读写图像数据。这种方法不像其他编程语言,需要编写复杂的代码,只需要简单地调用MATLAB提供的函数即可。3.2 MATLAB 及其图像处理工具箱如果应用高级语言(如Basic,C,Fortran)编写仿真程序来实现这一基于DCT的JPEG图像压缩编码算法较为麻烦,而且仿真效果也不是十分理想。本文主要应用MATLAB发布的图像处理工具箱中的相关函数和命令来实基于DCT的JPEG图像压缩编码理论算法的仿真MATLAB语言是由美国MathWorks公司推出的计算机软件,经过多年的逐步发展与不断完善,现已