基于DCT的图像压缩编码算法的MATLAB实现毕业论文

基于DCT的图像压缩编码算法的MATLAB实现毕业论文

ID:260634

大小:423.50 KB

页数:36页

时间:2017-07-15

上传者:chess95660
基于DCT的图像压缩编码算法的MATLAB实现毕业论文_第1页
基于DCT的图像压缩编码算法的MATLAB实现毕业论文_第2页
基于DCT的图像压缩编码算法的MATLAB实现毕业论文_第3页
基于DCT的图像压缩编码算法的MATLAB实现毕业论文_第4页
基于DCT的图像压缩编码算法的MATLAB实现毕业论文_第5页
资源描述:

《基于DCT的图像压缩编码算法的MATLAB实现毕业论文》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库

摘要摘要随着科学技术的发展,图像压缩技术越来越引起人们的关注。为此从众多的图像压缩编码标准中选取了基于DCT变换的JPEG图像压缩编码算法进行研究,并通过对比分析各种软件特性选取了MATLAB进行实验仿真。首先说明了图像压缩在现代通信中的必要性和可行性,然后讲述了MATLAB及其图像处理工具箱的相关知识,并对基于DCT变换的JPEG图像压缩算法进行了详细的研究,重点介绍了JPEG压缩编码的具体过程和方法,详细介绍了编码中DCT变换、量化、熵编码和霍夫曼编码等模块的原理和数学推导以及各模块的功能分析。最后应用MATLAB进行了实验仿真并分析结果得出结论。实验结果表明基于DCT变换的JPEG图像压缩方法简单、方便,既能保证有较高的压缩比,又能保证有较好的图像质量,应用MATLAB仿真出来的结果较好的反应了其编码算法原理。关键词 JPEG图像压缩;DCT;MATLAB;图像处理工具箱IIII II目录III摘要IAbstractII第1章绪论11.1课题背景11.1.1离散余弦变换21.1.2预测技术31.2图像压缩技术的发展和现状31.2.1图像编码技术发展历史31.2.2图像编码技术的现状41.3MATLAB及其图像处理工具箱41.4论文组织结构5第2章图像压缩编码理论算法62.1DCT变换的思想来源62.2基于DCT的JPEG图像压缩编码步骤82.2.1颜色空间的转换和采样82.2.2二维离散余弦变换92.2.3DCT系数的量化122.2.4量化系数的编排132.2.5DC系数的编码142.2.6AC系数的编码152.2.7组成位数据流162.2.8DCT变换在图像压缩中的应用192.3JPEG2000压缩算法192.3.1小波变换202.3.2量化202.3.3熵编码212.3.4位流组织21III 2.4JPEG与JPEG2000的区别212.5本章小结23第3章基于DCT的图像压缩MATLAB仿真实现243.1数字图像文件的读写243.2程序流程图263.3DCT变换的编程实现273.4MATLAB仿真结果273.5实验结果分析293.6本章小结30结论31III 毕业设计(论文)原创性声明和使用授权说明原创性声明本人郑重承诺:所呈交的毕业设计(论文),是我个人在指导教师的指导下进行的研究工作及取得的成果。尽我所知,除文中特别加以标注和致谢的地方外,不包含其他人或组织已经发表或公布过的研究成果,也不包含我为获得及其它教育机构的学位或学历而使用过的材料。对本研究提供过帮助和做出过贡献的个人或集体,均已在文中作了明确的说明并表示了谢意。作者签名:     日 期:     指导教师签名:     日  期:     使用授权说明本人完全了解大学关于收集、保存、使用毕业设计(论文)的规定,即:按照学校要求提交毕业设计(论文)的印刷本和电子版本;学校有权保存毕业设计(论文)的印刷本和电子版,并提供目录检索与阅览服务;学校可以采用影印、缩印、数字化或其它复制手段保存论文;在不以赢利为目的前提下,学校可以公布论文的部分或全部内容。作者签名:     日 期:     6 第1章绪论1.1课题背景随着信息技术的发展,图像信息被广泛应用于多媒体通信和计算机系统中,但是图像数据的一个显著特点就是信息量大。具有庞大的数据量,如果不经过压缩,不仅超出了计算机的存储和处理能力,而且在现有的通信信道的传输速率下,是无法完成大量多媒体信息实时传输的,因此,为了更有效的存储、处理和传输这些图像数据,必须对其进行压缩,因此有必要对图像压缩编码进行研究。由于组成图像的各像素之间,无论是在水平方向还是在垂直方向上都存在着一定的相关性,因此只要应用某种图像压缩编码方法提取或者减少这种相关性,就可以达到压缩数据的目的[1]。数字图像的冗余主要表现在以下几种形式:空间冗余:规则物体和规则背景的表面物理特性都具有相关性,数字化后表现为数字冗余。例如:某图片的画面中有一个规则物体,其表面颜色均匀,各部分的亮度、饱和度相近,把该图片作数字化处理,生成位图后,很大数量的相邻像素的数据是完全一样或十分接近的,完全一样的数据当然可以压缩,而十分接近的数据也可以压缩,因为恢复后人亦分辨不出它与原图有什么区别,这种压缩就是对空间冗余的压缩。时间冗余:序列图像(如电视图像和运动图像)和语音数据的前后有着很强的相关性,经常包含着冗余。在播出该序列图像时,时间发生了推移,但若干幅画面的同一部位没有变化,变化的只是其中某些地方,这就形成了时间冗余。统计冗余:空间冗余和时间冗余是把图像信号看作概率信号时所反应出的统计特性,因此,这两种冗余也被称为统计冗余。编码冗余:同样长度的编码可以表示不同的信息。结构冗余:相似的,对称的结构如果都加以记录就出现结构冗余。6 知识冗余:由图像的记录方式与人对图像的知识差异而产生的冗余。人对许多图像的理解与某些基础知识有很大的相关性。许多规律性的结构,人可以由先验知识和背景知识得到。而计算机存储图像时还得把一个个像素信息存入,这就形成冗余。视觉冗余:视觉系统对于图像场的注意是非均匀和非线性的,视觉系统不是对图像的任何变化都能感知。所谓的图像压缩编码技术就是对要处理的图像数据按一定的规则进行变换和组合,从而达到以尽可能少的数据流(代码)来表示尽可能多的数据信息。在众多的图像压缩编码标准中,JPEG(JointPhotographicExpertsGroup)格式是一种称为联合图像专家组的图像压缩格式,它适用于不同类型、不同分辨率的彩色和黑白静止图像[2]。在JPEG图像压缩算法中,一种是以离散余弦变换(DCT,DiscreteCosineTransform)为基础的有损压缩算法,另一种是以预测技术为基础的无损压缩算法。1.1.1离散余弦变换DCT变换利用傅立叶变换的性质。采用图像边界褶翻将像变换为偶函数形式,然后对图像进行二维傅立叶变换,变换后仅包含余弦项,所以称之为离散余弦变换。6 DCT编码属于正交变换编码方式,用于去除图像数据的空间冗余。变换编码就是将图像光强矩阵(时域信号)变换到系数空间(频域信号)上进行处理的方法。在空间上具有强相关的信号,反映在频域上是在某些特定的区域内能量常常被集中在一起,或者是系数矩阵的分布具有某些规律。我们可以利用这些规律在频域上减少量化比特数,达到压缩的目的。图像经DCT变换以后,DCT系数之间的相关性就会变小。而且大部分能量集中在少数的系数上,因此,DCT变换在图像压缩中非常有用,是有损图像压缩国际标准JPEG的核心。从原理上讲可以对整幅图像进行DCT变换,但由于图像各部位上细节的丰富程度不同,这种整体处理的方式效果不好。为此,发送者首先将输入图像分解为8*8或16*16块,然后再对每个图像块进行二维DCT变换,接着再对DCT系数进行量化、编码和传输;接收者通过对量化的DCT系数进行解码,并对每个图像块进行的二维DCT反变换。最后将操作完成后所有的块拼接起来构成一幅单一的图像。对于一般的图像而言,大多数DCT系数值都接近于0,所以去掉这些系数不会对重建图像的质量产生较大影响。因此,利用DCT进行图像压缩确实可以节约大量的存储空间。在实验中,先将输入的原始lena图像分为8*8块,然后再对每个块进行二维DCT变换。MATLAB图像处理上具箱中提供的二维DCT变换及DCT反变换函数如下。dct2实现图像的二维离散余弦变换。其语法格式为:(1)B=dct2(A)返回图像A的二维离散余弦变换值,其大小与A相同且各元素为离散余弦变换的系数B(K1,k2)。(2)B=dct2(A,in,n)或B=dct2(A,[m,n])如果m和n比图像A大,在对图像进行二维离散余弦变换之前,先将图像A补零至m*n如果m和n比图像A小。则进行变换之前,将图像A剪切。idct2可以实现图像的二维离散余弦反变换,其语法格式为:B=idct2(A);B=idct2(A,m,n)或B=idct2(A,[m,n])。1.1.2预测技术它是利用空间中相邻数据的相关性,利用过去和现在出现过的点的数据情况来预测未来点的数据。通常用的方法是差分脉冲编码调制(DPCM)和自适应差分脉冲编码调制(ADPCM)。1.2图像压缩技术的发展和现状1.2.1图像编码技术发展历史1948年提出电视信号数字化后,图像压缩编码的研究工作就宣告开始了。在这项技术发展的早期,限于客观条件,仅对帧内预测法和亚取样内查复原法进行研究,对视觉特性也做了一些极为有限但可贵的研究工作。1966年J.B.ONeal对比分析了DPCM和PCM并提出了用于电视的实验数据。1969年进行了线性预测编码的实际实验。1969年举行首届图像编码会议。70年代开始进行了帧间预测编码的研究。80年代开始对运动估值和模型编码进行研究[3]。进入90年代,ITU-T和ISO制定了一系列图像编码国际建议,如H.261、JPEG、MPEG-1、H.262、H.263、MPEG-4等。6 变换编码是1968年H.C.Andrews等人提出的,采用的是二维离散傅立叶变换,此后相继出现用其他变换方法的变换编码,其中包括二维离散余弦变换。1.2.2图像编码技术的现状经过几十年的发展,图像编码技术业已成熟,一些国际建议的制定极大地推动了图像编码技术的实现和产业化,从而推动图像编码技术以更快的速度发展,目前的研究方向有两个:(1)更好地实现现有的图像编码国际建议。研制出集成度更高、性能更好的图像编码专用芯片,使编码系统成本更低、可靠性更高。解决好现有的图像编码系统开发中的技术问题。例如:提高图像质量、提高抗码能力等。(2)对图像编码理论和其他图像编码方法的研究。目前已经提出和正在进行研究的图像编码方法有:多分辨率编码、基于表面描述的编码、模型编码、利用人工神经网络的编码、利用分形几何的编码、利用数学形态学的编码等等。1.3MATLAB及其图像处理工具箱如果应用高级语言(如Basic,C,Fortran)编写仿真程序来实现这一基于DCT的图像压缩编码算法比较麻烦,而且仿真效果也不是十分理想。本文主要应用MATLAB发布的图像处理工具箱中的相关函数和命令来实基于DCT的图像压缩编码理论算法的仿真。MATLAB语言是由美国MathWorks公司推出的计算机软件,经过多年的逐步发展与不断完善,现已成为国际公认的最优秀的科学计算与数学应用软件之一,它集数值分析、矩阵运算、信号处理和图形显示于一体,构成了一个方便的、界面友好的用户环境,而且还具有可扩展性特征。MATLAB中的数字图像是以矩阵形式表示的,矩阵运算的语法对MATLAB中的数字图像同样适用,这意味着MATLAB强大的矩阵运算能力对用于图像处理非常有利。图像处理工具箱(ImageProcessing6 Toolbox)提供了一套全方位的参照标准算法和图形工具,用于进行图像处理、分析、可视化和算法开发。可进行图像压缩、空间转换、图像增强、特征检测、降噪、图像分割和图像配准等功能。工具箱中大部分函数均以开放式MATLAB语言编写,这意味着可以检查算法、修改源代码和创建自定义函数。本文利用MATLAB图像处理工具箱对基于DCT的JPEG图像压缩编码理论算法进行仿真,实验证明该软件功能强大,语言简洁易学,工具箱具有丰富的技术支持并集成了该领域专家的智慧,应用简单而效果良好。1.4论文组织结构本文的主要内容是,介绍图像压缩编码算法中的离散余弦变换(DCT)变换算法,和用MATLAB进行仿真。第1章绪论,对于图像压缩的研究意义、可行性、压缩技术的现状和发展、MATLAB图像处理工具进行了简要的介绍。第2章对图像压缩编码理论算法进行了介绍,着重讲解了基于DCT的JPEG图像压缩编码步骤。之后对JPEG2000进行了粗略的介绍,描述了JPEG和JPEG2000的区别。第3章对基于DCT的图像压缩MATLAB仿真实现进行了详细的描述。其中包括利用MATLAB编写程序的流程图,和给出了具体仿真实验结果与结果分析。666 16第2章图像压缩编码理论算法2.1DCT变换的思想来源信号的变换分析方法中,通常是通过一组适当的基函数对信号进行分解,得到信号在变换域的表示方法,利用信号在变换域中某些特征趋于集中的特点来提取其特征从而进行分析。自1822年傅立叶(Fourier)发表“热传导解析理论”以来,傅立叶变换一直是信号处理领域中应用最广泛、效果最好的一种分析手段。但傅立叶变换只是一种纯频域的分析方法,它在频域的定位性是完全准确的(即频域分辨率最高),而在时域无任何定位性(或分辩能力),也即傅立叶变换所反映的是整个信号全部时间下的整体频域特征,而不能提供任何局部时间段上的频率信息。事实上,在我们生活中的常见信号通常都具有非平稳的性质,即其频域性质都是随时间而变化的。对这一类信号用傅立叶变换进行分析,虽然可以知道信号所包含有哪些频率信息,但不能知道这些频率信息具体出现在哪个时间段上,因此不能提供关于信号完整的信息。可见,傅立叶变换不适用于提取局部时间段(或瞬间)的频域特征信息[4]。为了研究信号在局部时间范围的频域特征,1946年Gabor提出了著名的Gabor变换。其基本思想是,取时间函数作为窗口函数,用与待分析函数相乘,然后再进行傅立叶变换。在Gabor变换的基础上,为了适应不同问题的需要,进一步发展了多种形式的窗口函数,如矩形窗、汉宁窗、哈明窗等,这一类加窗的傅立叶变换统称为短时傅立叶变换(STFT)。STFT从本质上讲,是用窗函数截取原始信号的一个待分析段进行傅立叶变换,因而可以描述信号在某一局部时间段上的频率信息。目前,STFT在许多领域获得了广泛的应用,但由于STFT的定义决定了其窗函数的大小和形状均与时间和频率无关,一旦选定窗口就保持固定不变,不利于分析时变信号。实际上一般的高频信号持续时间较短,而低频信号持续时间较长,因此我们期望对于高频信号采用小时间窗,对于低频信号采用大时间窗进行分析。在进行信号分析时,这种变时间窗的要求同STFT的固定时窗(窗不随频率而变化)的特性是相矛盾的[5]。16 离散余弦变换(DCT)从本质上是一种变换分析方法,要在变换时最大的去除分析信号的相关性提取其特征,就必须适当的构造一组基函数,这组基函数以某种形式类似于我们所要表示的数据,甚至具有与数据相同的相关结构。在我们日常生活中常遇到的信号在空间域和频域都具有相关性。在空间上相隔较近的样值间的相关性比相隔较远的大的多,而在频域上通常呈带状。为了分析和表示这样的信号,我们需要基函数在空间域和频域是局域性的。由于离散余弦函数的频域分辨率与时域分辨率成反比,刚好与实际信号长时低频、短时高频的特性相吻合,既能精确定位信号的突发跳变,又能把握信号的整体变化率。由此可见,离散余弦变换是一种比较理想的进行信号处理的数学工具[6]。图像压缩编码的理论算法。(1)基于DCT的JPEG图像压缩编码理论算法基于DCT编码的JPEG编码压缩过程框图,如图2-1所示。压缩数据原始图像数据分成8*8的小块量化器DCT变换熵编码器码表量化表图2-1基于DCT编码的JPEG压缩过程简化图上图是基于DCT变换的图像压缩编码的压缩过程,解压缩与上图的过程相反。在编码过程中,首先将输入图像颜色空间转换后分解为8×8大小的数据块,然后用正向二维DCT把每个块转变成64个DCT系数值,其中1个数值是直流(DC)系数,即8×8空域图像子块的平均值,其余的63个是交流(AC)系数,接下来对DCT系数进行量化,最后将变换得到的量化的DCT系数进行编码和传送,这样就完成了图像的压缩过程。在解码过程中,形成压缩后的图像格式,先对已编码的量子化的DCT系数进行解码,然后求逆量化并把DCT系数转化为8×8样本像块(使用二维DCT反变换),最后将操作完成后的块组合成一个单一的图像。这样就完成了图像的解压过程。16 2.2基于DCT的JPEG图像压缩编码步骤2.2.1颜色空间的转换和采样JPEG文件使用的颜色空间为1982年推荐的电视图像数字化标准CCIR601(现为ITU-RBT.601)。在这个色彩空间中,每个分量、每个像素的电平规定为255级,用8位代码表示。JPEG只支持YCbCr颜色模式。其中Y代表亮度,CbCr代表色度。全彩色图像RGB模式转换到YCbCr模式,用下组公式。(2-1)其逆变换为:(2-2)JPEG是以8×8的块为单位来进行处理的,由于人眼对亮度Y的敏感度比色度CbCr的敏感度大的多,所以采用缩减取样的方式,通常采用YUV422取样,图2-2所示。图2-2YUV422取样示意图即对于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所示方法。16 abcde……b'd'图2-3压缩取样示意图2.2.2二维离散余弦变换在傅里叶级数展开式中,如果被展开的函数是实偶函数,那么,其傅里叶技术中只包含余弦项,在将其离散化由此可导出余弦变换,或称之为离散余弦变换(DCT,DiscreteCosineTransform)[7]。二维离散余弦正变换公式为(2-3)式中,。二维离散余弦逆变换公式为(2-4)式中,。JPEG采用的是8×8大小的子块的二维离散余弦变换。在编码器的输入端,把原始图像顺序地分割成一系列8×8的子块,子块的数值在-128到127之间。采用余弦变换获得64个变换系数[8]。变换公式,如式(2-5)所示。(2-5)16 式中,。在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)),[]);运行结果如图2-4所示。图2-4图像显示及图像DCT变换后频谱显示由运行结果可知,DCT变换具有能量集中的性质,数据集中在左上角。因此进行图像压缩时离散余弦变换矩阵可以舍弃右下角的高频数据。(2)idct2idct2函数实现图像的二维离散余弦逆变换,其语法为:F=idct2(f)在MATLAB图像处理工具箱中,有一个对图像进行块操作的函数blkproc,利用这个函数,可以直接实现图像一系列8×8子块的DCT变换。其语法格式为:16 B=blkproc(A,[mn],fun,parameter1,,parameter2,...)B=blkproc(A,[mn],[mbordernborder],fun,...)B=blkproc(A,'indexed',...)[mn]是指图像以m*n为分块单位,对图像进行处理(如8像素*8像素)Fun:应用此函数对分别对每个m*n分块的像素进行处理parameter1,parameter2:要传给fun函数的参数mbordernborder:对每个m*n块上下进行mborder个单位的扩充,左右进行nborder个单位的扩充,扩充的像素值为0,fun函数对整个扩充后的分块进行处理。如下列程序:I=imread('cameraman.tif');fun=idct2;J=blkproc(I,[88],fun);imagesc(J),colormap(hot)运行结果如图2-5所示。图2-5DCT变换后图像8×16 8的图像经过DCT变换后,其低频分量都集中在左上角,高频分量分布在右下角(DCT变换实际上是空间域的低通滤波器)。由于该低频分量包含了图像的主要信息(如亮度),而高频与之相比,就不那么重要了,所以我们可以忽略高频分量,从而达到压缩的目的。将高频分量去掉,这就要用到量化,它是产生信息损失的根源。这里的量化操作,就是将某一个值除以量化表中对应的值。由于量化表左上角的值较小,右上角的值较大,这样就起到了保持低频分量,抑制高频分量的目的。JPEG使用的颜色是YUV格式。我们提到过,Y分量代表了亮度信息,UV分量代表了色差信息。相比而言,Y分量更重要一些。我们可以对Y采用细量化,对UV采用粗量化,可进一步提高压缩比。所以上面所说的量化表通常有两张,一张是针对Y的,一张是针对UV的。2.2.3DCT系数的量化量化是对经过DCT变换后的频率系数进行量化,其目的是减小非“0”系数的幅度以及增加“0”值系数的数目,它是图像质量下降的最主要原因。对于基于DCT的JPEG图像压缩编码算法使用如图2-6所示的均匀量化器进行量化,量化步距是按照系数所在的位置和每种颜色分量的色调值来确定。因为人眼对亮度信号比对色差信号更敏感,因此使用了表2-1所示的种量化表。此外,由于人眼对低频分量的图像比对高频分量的图像更敏感,因此表中的左上角的量化步距要比右下角的量化步距小[9]。DCT系数输入量化系数输出图2-6均匀量化器亮度和色度因为代表的图像的信息量不同,亮度代表了图像的低频分量,色度代表了图像的高频分量,要分别对亮度和色度进行量化,所以量化表也是不同的。JPEG压缩色度和亮度量化表如表2-1所示。16 表2-1JPEG压缩色度和亮度量化表亮度量化表色度量化表161110162440516117182447999999991212141926586055182126669999999914131624405769562426569999999999141722295187806247669999999999991822375668109103779999999999999999243555648110411392999999999999999949647887103121120101999999999999999979929598112100103999999999999999999量化会产生误差,上图是综合大量的图像测试的实验结果,对于大部分图像都有很好的结果。表中可以看出,高频部分对应的量化值大,目的就是将高频部分编程接近于0,以便以后处理。JPEG可以在压缩比和图像质量间作取舍。方法就是改变量化值。如果量化值放大一倍,则有更多的系数量化为0,提高了压缩比。2.2.4量化系数的编排经过DCT变换后,低频分量集中在左上角,其中F(0,0)(即第一行第一列元素)代表了直流(DC)系数,即8×8子块的平均值,要对它单独编码。由于两个相邻的8×8子块的DC系数相差很小,所以对它们采用差分编码DPCM,可以提高压缩比,也就是说对相邻的子块DC系数的差值进行编码。8×8的其它63个元素是交流(AC)系数,采用行程编码[10]。所以量化后的系数要重新编排,目的是为了增加连续的“0”系数的个数,就是“0”的游程长度,方法是按照Z字形的式样编排。DCT变换后低频分量多呈圆形辐射状向高频率衰减,因此可以看成按Z字形衰减。因此,量化系数按Z字形扫描读数,这样就把一个8×16 8的矩阵变成一个1×64的矢量,频率较低的系数放在矢量的顶部。量化后的DCT系数的编排如图2-7所示。图2-7量化DCT系数的编排量化后的DCT系数的序号如表2-2所示。表2-2量化DCT系数的序号01561415272824713162629423812172530414391118243140445310192332394552542022333846515560213437475056596135364849575862632.2.5DC系数的编码8×16 8子块的64个变换系数经量化后,按直流系数DC和交流系数AC分成两类处理。坐标u=v=0的直流系数DC实质上就是空域图像中64个像素的平均值。图像块经过DCT变换之后得到的DC直流系数有两个特点,一是系数的数值比较大,二是相邻8×8图像块的DC系数值变化不大。根据这个特点,JPEG算法使用了差分脉冲调制编码技术。差分脉冲编码调制(DPCM,DifferentialPulseCodeModulation),是一种对模拟信号的编码模式,先根据前一个抽样值计算出一个预测值,再取当前抽样值和预测值之差作为编码用。此差值称为预测误差。抽样值和预测值非常接近(因为相关性强),预测误差的可能取值范围比抽样值变化范围小。所以可用少几位编码比特来对预测误差编码,从而降低其比特率。这是利用减小冗余度的办法,降低了编码比特率。因此,对DC系数编码进行差分脉冲编码就是对相邻图像块之间量化DC系数的差值(Delta)进行编码,即对相邻块之间的DC系数的差值DIFF=DC-DC编码。DC采用差值脉冲编码的主要原因是由于在连续色调的图像中,其差值多半比原值小,对差值进行编码所需的位数,会比对原值进行编码所需的位数少许多。例如差值为5,它的二进制表示值为101,如果差值为-5,则先改为正整数5,再将其二进制转换成1的补数即可。所谓1的补数,就是将每个Bit若值为0,便改成1;Bit为1,则变成0。差值5应保留的位数为3,列出差值所应保留的Bit数与差值内容的对照。在差值前端另外加入一些差值的霍夫曼码值,例如亮度差值为5(101)的位数为3,则霍夫曼码值应该是100,两者连接在一起即为100101。2.2.6AC系数的编码DCT变换所得系数除直流系数之外的其余63个系数称为交流系数(AC系数)。量化AC系数的特点是1×64矢量中包含有许多“0”系数,并且许多“0”是连续的,因此使用非常简单和直观的游程长度编码(RLE)对它们进行编码。所谓行程编码(Run-LengthEncoding)就是指仅存储一个像素值以及具有相同颜色的像素数目的图像数据编码方式,或称游程编码,常用RLE(Run-LengthEncoding)表示。该压缩编码技术相当直观和经济,运算也相当简单,因此解压缩速度很快。RLE压缩编码尤其适用于计算机生成的图形图像,对减少存储容量很有效果[11]。16 63个AC系数采用行程编码的方式进行编码的格式如图2-8所示。也即在AC01到AC63中,找出每一个非零的AC值,将其表示成(NN/SS)VV的形式,其中:NN表示该AC值前的0的个数。而SS、VV与DC的定义一样。如果连续的非0超过15个时,增加一个扩展字节:(15/0)表示连续16个0。另外若有一串0延伸到AC63,一律用(0/0)表示结束。7654321076543210第一字节第二字节两个非零值之间的连续零的个数下一个非零值所占的比特数下一个非零系数的实际值图2-8AC编码格式对于AC系数,有两个符号。符号1为行程和尺寸,即上面的(RunLength,Size)。(0,0)和(15,0)是两个比较特殊的情况。(0,0)表示块结束标志(EOB),16(15,0)表示ZRL,当行程长度超过15时,用增加ZRL的个数来解决,所以最多有三个ZRL(3×16+15=63)。符号2为幅度值(Amplitude)。对于DC系数,也有两个符号。符号1为尺寸(Size);符号2为幅度值(Amplitude)。对于AC系数,符号1和符号2分别进行编码。零行程长度超过15个时,有一个符号(15,0),块结束时只有一个符号(0,0)。对符号1进行Huffman编码(亮度,色差的Huffman码表不同)。对符号2进行变长整数VLI编码。举例来说:Size=6时,Amplitude的范围是-63~-32,以及32~63,对绝对值相同,符号相反的码字之间为反码关系。所以AC系数为32的码字为100000,33的码字为100001,-32的码字为011111,-33的码字为011110。符号2的码字紧接于符号1的码字之后。对于DC系数,Y和UV的Huffman码表也不同。17 2.2.7组成位数据流JPEG编码的最后一个步骤是把各种标记代码和编码后的图像数据组成一帧一帧的数据,这样做的目的是为了便于传输、存储和译码器进行译码,这样的组织的数据通常称为JPEG位数据流(JPEGbitstream)[12]。举个例子来说明上述过程。下面为8×8的亮度(Y)图像子块经过量化后的系数,如表2-3所示。表2-3亮度量化后的系数150-100000-2-1000000-1-1000000000000000000000000000000000000000000000017可见量化后只有左上角的几个点(低频分量)不为零,这样采用行程编码就会很有效。第一步,熵编码的中间格式表示。先看DC系数。假设前一个8×8子块DC系数的量化值为12,则本块DC系数与它的差为3,根据下表表2-4DC系数表SizeAmplitude001–1,12–3,-2,2,33–7~-4,4~74–15~-8,8~155–31~-16,16~3129 6–63~-32,32~637–127~-64,64~1278–255~-128,128~2559–511~-256,256~51110–1023~512,512~102311–2047~-1024,1024~2047查表得Size=2,Amplitude=3,所以DC中间格式为(2)(3)。下面对AC系数编码。经过Zig-Zag扫描后,遇到的第一个非零系数为-2,其中遇到零的个数为1(即RunLength),根据下面这张AC系数表:表2-5AC系数表SizeAmplitude1–1,12–3,-2,2,33–7~-4,4~74–15~-8,8~155–31~-16,16~316–63~-32,32~637–127~-64,64~1278–255~-128,128~2559–511~-256,256~51110–1023~512,512~102329 查表得Size=2。所以RunLength=1,Size=2,Amplitude=3,所以AC中间格式为(1,2)(-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-6所示。表2-6压缩比与图像质量的关系压缩效率(单位:bits/pixel)图像质量0.25~0.50中~好,可满足某些应用0.50~0.75好~很好,满足多数应用0.75~1.5极好,满足大多数应用1.5~2.0与原始图像几乎一样2.2.8DCT变换在图像压缩中的应用JPEG格式是目前网络上最流行的图像格式,是可以把文件压缩到最小的格式,在Photoshop软件中以JPEG格式储存时,提供11级压缩级别,以0—29 10级表示。其中0级压缩比最高,图像品质最差。即使采用细节几乎无损的10级质量保存时,压缩比也可达5:1。以BMP格式保存时得到4.28MB图像文件,在采用JPG格式保存时,其文件仅为178KB,压缩比达到24:1。经过多次比较,采用第8级压缩为存储空间与图像质量兼得的最佳比例。  JPEG格式的应用非常广泛,特别是在网络和光盘读物上,都能找到它的身影。目前各类浏览器均支持JPEG这种图像格式,因为JPEG格式的文件尺寸较小,下载速度快[13]。2.3JPEG2000压缩算法目前的JPEG静止图像压缩标准,在中高比特率上压缩效果较好,然而在低比特速率的情况下,重构图像存在严重的方块效应,不能很好地适应网络传描图像的需要。尽管目前的JPEG标准有44种操作模式,但是其中的大部分模式是针对不同的应用提出的,不具有通用性,这给交换、传输的压缩图像带来很大的麻烦。为了弥补目前标准的不足,适应21世纪图像压缩的需要,早在1997年ISO/ITU-T组织下的IECJTCl/SC29/WGl小组便开始着手制定新的静止图像压缩标准——JPEG2000。与JPEG不同,JPEG2000基于小波变换,采用当前最新的嵌入式编码技术,在获得优于目前JPEG标准压缩效果的同时,生成的码流有较强的功能,可应用于多个领域。2.3.1小波变换29 不同于传统的DCT变换,小波变换具有对信号进行多分辨率分析和反映信号局部特征的特点。通过对图像片进行离散小波变换,得到小波系数图像,而分解的级数视具体情况而定。小波系数图像由几种子带系数图像组成。这些子带系数图像描述的是图像片水平和垂直方向的空间频率特性。不同子带的小波系数反映图像片不同空间分辨率的特性。通过多级小波分解,小波系数既能表示图像片中局部区域的高频信息(如图像边缘),也能表示图像片中的低频信息(如图像背景)。这样,即使在低比特律的情况下,我们也能保持较多的图像细节(如边缘)。另外,下一级分解得到的系数所表示图像在水平和垂直方向的分辨率只有上一级小波系数所表示的图像的一半。所以,通过对系数图像的不同级数进行解码,就可以得到具有不同空间分辨率(或清晰,或模糊)的图像。小波变换因其具有的这种优点被JPEG2000标准所采用。在编码系统中,对每个图像片进行Mallat塔式小波分解。经过大量的测试,JPEG2000选用两种小波滤波器:LeGall5/3滤波器和Daubechies9/7滤波器。前者可用于有损或无损图像压缩,后者只能用于有损压缩。在JPEG2000标准中,小波滤波器可以有2种实现模式:基于卷积的和基于提升机制的。而具体实现时,对图像边缘都要进行周期对称延伸,这样可以防止滤波器对图像边缘操作时产生失真。另外,为了减小变换时所需空间的开销,标准中还应用了基于行的小波变换技术。2.3.2量化由于人类视觉系统对图像的分辨率要求有一定的局限,通过适当的量化减小变换系数的精度,可在不影响图像主观质量的前提下,达到图像压缩的目的。量化的关键是根据变换后图像的特征、重构图像质量要求等因素设计合理的量化步长。量化操作是有损的,会产生量化误差。不过一种情况除外,那就是量化步长是1,并且小波系数都是整数,利用可恢复整数5/3拍小波滤波器进行小波变换得到的结果就符合这种情况。在JPEG2000标准中,对每一个子带可以有不同的量化步长。但是在一个子带中只有一个量化步长。量化以后,每一个小波系数有2部分来表示:符号和幅值。对量化后的小波系数进行编码。对于无损压缩,量化步长必须是1。2.3.3熵编码图像经过变换、量化后,在一定程度上减少了空域和频域上的冗余度,但是这些数据在统计意义上还存在一定的相关性,为此采用熵编码来消除数据间的统计相关。将量化后的子带系数划分成小的矩形单元——码块(codeblock)。29 2.3.4位流组织为了适合图像交换,更好地应用JPEG2000压缩码流的功能,JPEG2000标准规定了存放压缩位流和解码所需参数的格式,把压缩码流以包为单元进行组织,形成最终的码流。JPEG2000通过采用速率控制方法来计算码流的理想截断点,从而获得给定压缩码率下的最佳重构图像质量。速率控制使用了PCRD率失真优化算法。率失真优化,即给定整个压缩码流的最大编码速率,找出每个码块压缩位流的适当截断点,在满足的条件下,使重构图像失真最小。从而使得嵌入式码块编码具有如下特点:生成的压缩位流可根据需要,被截断成不同长度的位流子集;将所有码块的截断位流组织起来,可重构出一定质量的图像。2.4JPEG与JPEG2000的区别JPEG2000与传统JPEG最大的不同在于它放弃了JPEG所采用的以离散余弦变换(DCT)为主的区块编码方式,转而采用以小波变换(DWT)为主的多解析编码方式[14]。余弦变换是经典的谱分析工具,它考察的是整个时域过程的频域特征或整个频域过程的时域特征,因此对于平稳过程,它有很好的效果,但对于非平稳过程,它却有诸多不足。在JPEG中,离散余弦变换将图像压缩为8×8的小块,然后依次放入文件中,这种算法靠丢弃频率信息实现压缩,因而图像的压缩率越高,频率信息被丢弃的越多。在极端情况下,JPEG图像只保留了反映图像外貌的基本信息,精细的图像细节都损失了。小波变换是现代谱分析工具,它既能考察局部时域过程的频域特征,又能考察局部频域过程的时域特征,因此即使对于非平稳过程,处理起来也得心应手。它能将图像变换为一系列小波系数,这些系数可以被高效压缩和存储,此外,小波的粗略边缘可以更好地表现图像,因为它消除了DCT压缩普遍具有的方块效应。现在网络上的JPEG图像下载时是按“块”29 传输的,因此只能逐行显示,而采用JPEG2000格式的图像支持渐进传输。JPEG2000中的渐进传输有2种,按照分辨率的渐进传输和按照质量的渐进传输。按照质量的渐进传输就是先传输图像轮廓数据,然后再逐步传输细节数据来不断提高图像质量,而按照分辨率的渐进传输则先传输分辨率较低的图像,后一幅图像在前一幅图像的基础上提高其分辨率。图像的渐进传输使得用户不需要像以前那样等图像全部下载后才决定是否需要,有助于快速地浏览和选择大量图片,从而有效的解决了网络传输的不通顺问题[15]。JPEG2000一个极其重要的优点就是ROI(RegionofInterest,感兴趣区域)。用户可以任意指定图片上感兴趣的区域,然后在压缩时对这些区域指定压缩质量,或在恢复时指定某些区域的解压缩要求。这是因为子波在空间和频率域上具有局域性,要完全恢复图像中的某个局部,并不需要所有编码都被精确保留,只要对应他的一部分编码没有误差就可以了。在实际应用中,我们就可以对一幅图像中感兴趣的部分采用低压缩比以获取较好的图像效果,而对其他部分采用高压缩比以节省存储空间。这样就能在保证不丢失重要信息的同时又有效地压缩了数据量,实现了真正的"交互式"压缩。在相同的压缩质量参数下。JPEG2000的峰值信噪比要优于JPEG;且在低位率时JPEG压缩会出现明显的方块效应,JPEG2000则会出现Gibbs效应,但JPEG2000的保真度要优于JPEG[16]。JPEG2000作为JPEG的升级版,其压缩率比JPEG高约30%左右,同时支持有损和无损压缩。JPEG2000格式有一个极其重要的特征在于它能实现渐进传输,即先传输图像的轮廓,然后逐步传输数据,不断提高图像质量,让图像由朦胧到清晰显示。JPEG2000旨在创建一个新的图像编码系统,该压缩编码系统的率失真和主观图像质量优于现有的JPEG标准,能够提供对图像的低码率的压缩,并且对压缩码流可进行灵活的处理,如随机获取部分压缩码流、图像的渐进传输、感兴趣区域的实现以及压缩码流较强的容错性能等,该标准将与现行JPEG标准兼容。JPEG2000和JPEG相比优势明显,且向下兼容,因此可取代传统的JPEG格式。JPEG2000即可应用于传统的JPEG市场,如扫描仪、数码相机等,又可应用于新兴领域,如网路传输、无线通讯等等。29 JPEG不能在单一码流中提供有损和无损压缩,并且不能支持大于64×64K的图像压缩。同时,尽管当前的JPEG标准具有重新启动间隔的规定,但当碰到比特差错时图像质量将受到严重的损坏。虽然JPEG2000比JPEG有很多有点,但是由于它的技术还不成熟,还存在稳定性、复杂性和准备不充分等问题,所以目前基于DCT的JPEG图像压缩编码仍然是世界上图像压缩技术标准应用最广泛的标准[17]。2.5本章小结本章详细介绍了DCT变换思想的来源、基于DCT变换的图像压缩编码的原理和具体的编码步骤,介绍了离散余弦变换在图像在对JPEG2000进行了介绍并对JPEG和JPEG2000进行了详细的比较。29 第3章基于DCT的图像压缩MATLAB仿真实现MATLAB图像处理工具箱支持四种图像类型,分别为RGB图像(真彩色图像)、索引图像、灰度图像、二值图像,由于有的函数对图像类型有限制,这四种类型可以用工具箱的类型转换函数相互转换。MATLAB可操作的图像文件包括BMP、HDF、JPEG、PCX、TIFF、XWD等格式。下面就图像处理的基本过程讨论工具箱所实现的常用功能。MATLAB为用户提供了专门的函数来从图像格式的文件中读写图像数据。这种方法不像其他编程语言,需要编写复杂的代码,只需要简单地调用MATLAB提供的函数即可。3.1数字图像文件的读写数字图像文件的读写步骤。(1)图像文件的读取。MATLAB中利用函数imread来实现图像文件的读取操作。其语法格式为:A=imread(filename,fmt)[X,map]=imread(filename,fmt)[…]=imread(filename)Filename:图像文件名;fmt:图像文件格式。A=imread(filename,fmt)读取图像到A,如果文件是包含灰度图像,A是二维矩阵,如果文件是包含真彩色图像(RGB),A是三维矩阵(M-by-N-by-3)。文件必须在当前目录下,或在matlab的路径上。如果imread不能够找到名称为filename的文件,那么它将找一名为filename.fmt的文件[X,map]=(imreadfilename,fmt)把图像filename读入与它相关的图像色彩信息写入map,图像色彩信息值在范围[0,1]中自动地重新调整。[…]=imread(filename)这种方式是试图得到文件的格式从文件所包含的信息。(2)图像文件的输出。MATLAB中利用函数imwrite来实现图像文件的输出和保存操作。其语法格式为:Imwrite(A,filename,fmt)29 Imwrite(X,map,filename,fmt)Imwrite(…,filename)Imwrite(A,filename,fmt)把图像A写入图像文件filename。Imwrite(X,map,filename,fmt)把X和它的相关色彩信息map写入filename。Imwrite(…,filename)把图像写入图像文件filename,并推测可能的格式用来做filename的扩展名,扩展名必须是fmt中一合法名。(3)图像文件的显示。在MATLAB中,可以调用image函数来显示图像,其语法格式为:Image(C)Image(C)把矩阵C转成一图像。C可以是一M×N或M×N×3维的矩阵,且可以是包含double,uint8,或uint16数据。image是用来显示附标图像,即显示的图像上有x、y坐标轴的显示,可以看到图像的像素大小。但可以加上axisoff命令即可把坐标去掉。在MATLAB的图像处理工具箱中,还提供了一个应用很广泛的图像显示函数,即imshow函数,其调用格式为:Imshow(I,n)Imshow(I,[lowhigh])Imshow(BW)Imshow(X,map)imshow(RGB)imshowfilenameImshow(I,n)显示一幅n个灰度级的图像I。Imshow(I,[lowhigh])一定灰度范围内显示灰度图像,low和high参数分别为数据数组的最小值和最大值。Imshow(BW)显示二进制图像。Imshow(X,map)显示索引图像,其中X代表索引图像的数据矩阵,map为颜色映射表。imshowfilename显示一幅在当前目录下的合法文件。29 imshow(RGB)显示RGB图像。RGB是一个m×n×3的数组。对于RGB中的每个像素(r,c),imshow显示数值(r,c,1:3)所描述的颜色。例如下面的程序:imread(‘zyj.bmp’);imshow(I),title(‘图像读出’)3.2程序流程图基于DCT的图像压缩编码的MATLAB实现的流程图如图3-1所示。开始输入图片分成8*8像素块,DCT变换输入量化表,对变换系数量化对量化系数进行扫描选择一幅图对其进行不同的压缩比变换反量化反DCT变换显示所选图像的信噪比结束图3-1程序流程图29 3.3DCT变换的编程实现DCT变换是数字图像处理中重要的变换,很多重要的图像算法、图像应用都是基于DCT变换的,如JPEG图像编码方式。对于大尺寸的二维数值矩阵,倘若采用普通的DCT变换来进行,其所花费的时间将是让人难以忍受甚至无法达到实用。而要克服这一难点,DCT变换的快速算法是比较好的选择。就目前而言,DCT变换的快速算法无非有以下两种方式:(1)由于FFT算法的普便采用,直接利用FFT来实现DCT变换的快速算法相比来说就相对容易。但是此种方法也有不足:计算过程会涉及到复数的运算。由于DCT变换前后的数据都是实数,计算过程中引入复数,而一对复数的加法相当于两对实数的加法,一对复数的乘法相当于四对实数的乘法和两对实数的加法,显然是增加了运算量,也给硬件存储提出了更高的要求。(2)直接在实数域进行DCT快速变换。显然,这种方法相比于前一种而言,计算量和硬件要求都要优于前者。鉴于此,本文采用第二种方法来实现DCT变换的快速算法。3.4Matlab仿真结果以下是用不同的量化表进行压缩图像所形成的结果。经过不同的压缩比可以很容易的比较出图像压缩后的质量,与表2-6压缩比与图像质量的关系相对应。当图像压缩比增大时,也即压缩效率减小时,图像的质量也将降低,人们可以根据需要的图像的质量来规定压缩比的大小。图像经过不同的压缩比后,图像的质量变化的同时,图像的信噪比也跟着变化。压缩比增大时,则在信道传输的时候丢失的信息就越多,这样使得信号与噪声的比值变小。图像经过不同的量化系数也即不同的压缩比时,图像质量的变化结果如图3-2所示。29 29燕山大学本科生毕业设计(论文)图3-2不同量化表下压缩图像的结果图像的信噪比应该等于信号与噪声的功率谱之比,但通常功率谱难以计算,有一种方法可以近似估计图像信噪比,即信号与噪声的方差之比。首先计算图像所有象素的局部方差,将局部方差的最大值认为是信号方差,最小值是噪声方差,求出它们的比值,再转成dB数,最后用经验公式修正。如果是灰度图像的话,SNR=(洁净图片中的像素点的灰度值之和)/abs(噪声图片的灰度值之和-洁净图片中的灰度值之和)为该图像的信噪比。在MR图像信噪比中,平均次数增加,可以增加信噪比,但也增回扫描时间;层厚增加,可以增加信噪比,但降低了垂直分辨力;FOV增加,可以增加信噪比,但降低了空间分辨力;相位编码增加,虽降低信噪比,但增加空间分辨力、扫描时间、伪影出现的机率;频率编码增加,会降低信噪比,减少磁化伪影,增加空间分辨力;还有部分采集,并行采集技术的应用等等都会有影响的,TR越短,信号越差,信噪比就差,但可以减少扫描时间;带宽变窄,信噪比增加。30 燕山大学本科生毕业设计(论文)结论相关技术日新月异的进步,使得数字图像相关技术的应用越来越广泛。数字图像以其较之于传统文字信息大得多的信息量,更加符合人们接受信息的习惯的特点,已经渗透到社会生活的各个方面。数字图像的固有缺陷是其特别巨大的数据量,与传输网络有限的传输能力形成了一对矛盾,成为制约数字图像应用的瓶颈。因此数字图像的压缩编码与传输是非常有实际使用价值的热点研究问题。本文通过研究设计一个基于DCT变换的图像压缩编码的matlab实现,得到了下面的结论:论文叙述的图像压缩编码算法,采用了JPEG的核心离散余弦变换算法。DCT是正交变换,它可以将8*8图像的空间表达式转换为频率域,只需要用少量的数据点表示图像;DCT产生的系数很容易被量化,因此能获得好的块压缩;DCT算法的性能很好,它有快速算法,因此它在软件中容易实现;而且DCT算法是对称的,所以利用逆DCT算法可以用来解压缩图像。仿真结果说明了压缩比增大时,图像的质量会降低,并且图像的信噪比会变小。利用MATLAB仿真软件来实现离散余弦变换的图像压缩,具有方法简单、速度快、误差小的优点,免去了大量矩阵计算,大大提高了图像压缩的效率和精度。由于本人能力、时间有限,所以本文的内容还存在不足之处,还请老师谅解。30

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。
关闭