基于dct的图像压缩编码算法的matlab实现(终稿).doc





《基于dct的图像压缩编码算法的matlab实现(终稿).doc》由会员分享,可在线阅读,更多相关《基于dct的图像压缩编码算法的matlab实现(终稿).doc(33页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、摘要摘要随着科学技术的发展,图像压缩技术越来越引起人们的关注。为此从众多的图像压缩编码标准中选取了基于DCT变换的JPEG图像压缩编码算法进行研究,并通过对比分析各种软件特性选取了MATLAB进行实验仿真。首先说明了图像压缩在现代通信中的必要性和可行性,然后讲述了MATLAB及其图像处理工具箱的相关知识,并对基于DCT变换的JPEG图像压缩算法进行了详细的研究,重点介绍了JPEG压缩编码的具体过程和方法 ,详细介绍了编码中DCT变换、量化、熵编码和霍夫曼编码等模块的原理和数学推导以及各模块的功能分析。最后应用MATLAB进行了实验仿真并分析结果得出结论。实验结果表明基于DCT 变换的JPEG
2、图像压缩方法简单、方便,既能保证有较高的压缩比,又能保证有较好的图像质量,应用MATLAB仿真出来的结果较好的反应了其编码算法原理。关键词JPEG图像压缩;DCT;MATLAB;图像处理工具箱III 目 录IV摘要IAbstractII第1章 绪论11.1 课题背景11.1.1 离散余弦变换21.1.2 预测技术31.2 图像压缩技术的发展和现状31.2.1 图像编码技术发展历史31.2.2 图像编码技术的现状41.3 MATLAB 及其图像处理工具箱41.4 论文组织结构5第2章 图像压缩编码理论算法62.1 DCT变换的思想来源62.2 基于DCT的JPEG图像压缩编码步骤82.2.1 颜
3、色空间的转换和采样82.2.2 二维离散余弦变换92.2.3 DCT系数的量化122.2.4 量化系数的编排132.2.5 DC系数的编码142.2.6 AC系数的编码152.2.7 组成位数据流162.2.8 DCT变换在图像压缩中的应用192.3 JPEG2000压缩算法192.3.1 小波变换202.3.2 量化202.3.3 熵编码212.3.4 位流组织212.4 JPEG与JPEG2000的区别212.5 本章小结23第3章 基于DCT的图像压缩MATLAB仿真实现243.1 数字图像文件的读写243.2 程序流程图263.3 DCT变换的编程实现273.4 MATLAB仿真结果2
4、73.5 实验结果分析293.6 本章小结30结论31第1章 绪论1.1 课题背景随着信息技术的发展,图像信息被广泛应用于多媒体通信和计算机系统中,但是图像数据的一个显著特点就是信息量大。具有庞大的数据量,如果不经过压缩,不仅超出了计算机的存储和处理能力,而且在现有的通信信道的传输速率下,是无法完成大量多媒体信息实时传输的,因此,为了更有效的存储、处理和传输这些图像数据,必须对其进行压缩,因此有必要对图像压缩编码进行研究。由于组成图像的各像素之间,无论是在水平方向还是在垂直方向上都存在着一定的相关性,因此只要应用某种图像压缩编码方法提取或者减少这种相关性, 就可以达到压缩数据的目的1。数字图像
5、的冗余主要表现在以下几种形式:空间冗余:规则物体和规则背景的表面物理特性都具有相关性,数字化后表现为数字冗余。例如:某图片的画面中有一个规则物体,其表面颜色均匀,各部分的亮度、饱和度相近,把该图片作数字化处理,生成位图后,很大数量的相邻像素的数据是完全一样或十分接近的,完全一样的数据当然可以压缩,而十分接近的数据也可以压缩,因为恢复后人亦分辨不出它与原图有什么区别,这种压缩就是对空间冗余的压缩。时间冗余:序列图像(如电视图像和运动图像)和语音数据的前后有着很强的相关性,经常包含着冗余。在播出该序列图像时,时间发生了推移,但若干幅画面的同一部位没有变化,变化的只是其中某些地方,这就形成了时间冗余
6、。统计冗余:空间冗余和时间冗余是把图像信号看作概率信号时所反应出的统计特性,因此,这两种冗余也被称为统计冗余。编码冗余:同样长度的编码可以表示不同的信息。结构冗余:相似的,对称的结构如果都加以记录就出现结构冗余。知识冗余:由图像的记录方式与人对图像的知识差异而产生的冗余。人对许多图像的理解与某些基础知识有很大的相关性。许多规律性的结构,人可以由先验知识和背景知识得到。而计算机存储图像时还得把一个个像素信息存入,这就形成冗余。视觉冗余:视觉系统对于图像场的注意是非均匀和非线性的,视觉系统不是对图像的任何变化都能感知。所谓的图像压缩编码技术就是对要处理的图像数据按一定的规则进行变换和组合, 从而达
7、到以尽可能少的数据流(代码)来表示尽可能多的数据信息。在众多的图像压缩编码标准中,JPEG(Joint Photographic Experts Group)格式是一种称为联合图像专家组的图像压缩格式,它适用于不同类型、不同分辨率的彩色和黑白静止图像2。在JPEG图像压缩算法中,一种是以离散余弦变换(DCT,Discrete Cosine Transform)为基础的有损压缩算法,另一种是以预测技术为基础的无损压缩算法。1.1.1 离散余弦变换 DCT变换利用傅立叶变换的性质。采用图像边界褶翻将像变换为偶函数形式,然后对图像进行二维傅立叶变换,变换后仅包含余弦项,所以称之为离散余弦变换。DCT
8、编码属于正交变换编码方式,用于去除图像数据的空间冗余。变换编码就是将图像光强矩阵(时域信号)变换到系数空间(频域信号)上进行处理的方法。在空间上具有强相关的信号,反映在频域上是在某些特定的区域内能量常常被集中在一起,或者是系数矩阵的分布具有某些规律。我们可以利用这些规律在频域上减少量化比特数,达到压缩的目的。图像经DCT变换以后,DCT系数之间的相关性就会变小。而且大部分能量集中在少数的系数上,因此,DCT变换在图像压缩中非常有用,是有损图像压缩国际标准JPEG的核心。从原理上讲可以对整幅图像进行DCT变换,但由于图像各部位上细节的丰富程度不同,这种整体处理的方式效果不好。为此,发送者首先将输
9、入图像分解为8*8或16*16块,然后再对每个图像块进行二维DCT变换,接着再对DCT系数进行量化、编码和传输;接收者通过对量化的DCT系数进行解码,并对每个图像块进行的二维DCT反变换。最后将操作完成后所有的块拼接起来构成一幅单一的图像。对于一般的图像而言,大多数DCT系数值都接近于0,所以去掉这些系数不会对重建图像的质量产生较大影响。因此,利用DCT进行图像压缩确实可以节约大量的存储空间。在实验中,先将输入的原始lena图像分为8*8块,然后再对每个块进行二维DCT变换。MATLAB图像处理上具箱中提供的二维DCT变换及DCT反变换函数如下。dct2实现图像的二维离散余弦变换。其语法格式为
10、:(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
11、)和自适应差分脉冲编码调制(ADPCM)。1.2 图像压缩技术的发展和现状1.2.1 图像编码技术发展历史1948年提出电视信号数字化后,图像压缩编码的研究工作就宣告开始了。在这项技术发展的早期,限于客观条件,仅对帧内预测法和亚取样内查复原法进行研究,对视觉特性也做了一些极为有限但可贵的研究工作。1966年J.B.O Neal对比分析了DPCM和PCM并提出了用于电视的实验数据。1969年进行了线性预测编码的实际实验。1969年举行首届图像编码会议。70年代开始进行了帧间预测编码的研究。80年代开始对运动估值和模型编码进行研究3。进入90年代,ITU-T和ISO制定了一系列图像编码国际建议,如
12、H.261、JPEG、MPEG-1、H.262、H.263、MPEG-4等。 变换编码是1968年H.C.Andrews等人提出的,采用的是二维离散傅立叶变换,此后相继出现用其他变换方法的变换编码,其中包括二维离散余弦变换。1.2.2 图像编码技术的现状经过几十年的发展,图像编码技术业已成熟,一些国际建议的制定极大地推动了图像编码技术的实现和产业化,从而推动图像编码技术以更快的速度发展,目前的研究方向有两个:(1) 更好地实现现有的图像编码国际建议。 研制出集成度更高、性能更好的图像编码专用芯片,使编码系统成本更低、可靠性更高。解决好现有的图像编码系统开发中的技术问题。例如:提高图像质量、提高
13、抗码能力等。 (2) 对图像编码理论和其他图像编码方法的研究。 目前已经提出和正在进行研究的图像编码方法有:多分辨率编码、基于表面描述的编码、模型编码、利用人工神经网络的编码、利用分形几何的编码、利用数学形态学的编码等等。1.3 MATLAB 及其图像处理工具箱 如果应用高级语言(如Basic,C,Fortran)编写仿真程序来实现这一基于DCT的图像压缩编码算法比较麻烦,而且仿真效果也不是十分理想。本文主要应用MATLAB发布的图像处理工具箱中的相关函数和命令来实基于DCT的图像压缩编码理论算法的仿真。MATLAB语言是由美国MathWorks公司推出的计算机软件,经过多年的逐步发展与不断完
14、善,现已成为国际公认的最优秀的科学计算与数学应用软件之一,它集数值分析、矩阵运算、信号处理和图形显示于一体,构成了一个方便的、界面友好的用户环境,而且还具有可扩展性特征。MATLAB中的数字图像是以矩阵形式表示的,矩阵运算的语法对MATLAB中的数字图像同样适用,这意味着MATLAB强大的矩阵运算能力对用于图像处理非常有利。图像处理工具箱(Image Processing Toolbox)提供了一套全方位的参照标准算法和图形工具,用于进行图像处理、分析、可视化和算法开发。可进行图像压缩、空间转换、图像增强、特征检测、降噪、图像分割和图像配准等功能。工具箱中大部分函数均以开放式 MATLAB 语
15、言编写,这意味着可以检查算法、修改源代码和创建自定义函数。本文利用MATLAB图像处理工具箱对基于DCT的JPEG图像压缩编码理论算法进行仿真,实验证明该软件功能强大,语言简洁易学,工具箱具有丰富的技术支持并集成了该领域专家的智慧,应用简单而效果良好。1.4 论文组织结构本文的主要内容是,介绍图像压缩编码算法中的离散余弦变换(DCT)变换算法,和用MATLAB进行仿真。第1 章绪论,对于图像压缩的研究意义、可行性、压缩技术的现状和发展、MATLAB图像处理工具进行了简要的介绍。第2章对图像压缩编码理论算法进行了介绍,着重讲解了基于DCT的JPEG图像压缩编码步骤。之后对JPEG2000进行了粗
16、略的介绍,描述了JPEG和JPEG2000的区别。第3章对基于DCT的图像压缩MATLAB仿真实现进行了详细的描述。其中包括利用MATLAB编写程序的流程图,和给出了具体仿真实验结果与结果分析。516第2章 图像压缩编码理论算法2.1 DCT变换的思想来源信号的变换分析方法中,通常是通过一组适当的基函数对信号进行分解,得到信号在变换域的表示方法,利用信号在变换域中某些特征趋于集中的特点来提取其特征从而进行分析。自1822年傅立叶(Fourier)发表“热传导解析理论”以来,傅立叶变换一直是信号处理领域中应用最广泛、效果最好的一种分析手段。但傅立叶变换只是一种纯频域的分析方法,它在频域的定位性是
17、完全准确的(即频域分辨率最高),而在时域无任何定位性(或分辩能力),也即傅立叶变换所反映的是整个信号全部时间下的整体频域特征,而不能提供任何局部时间段上的频率信息。事实上,在我们生活中的常见信号通常都具有非平稳的性质,即其频域性质都是随时间而变化的。对这一类信号用傅立叶变换进行分析,虽然可以知道信号所包含有哪些频率信息,但不能知道这些频率信息具体出现在哪个时间段上,因此不能提供关于信号完整的信息。可见,傅立叶变换不适用于提取局部时间段(或瞬间)的频域特征信息4。为了研究信号在局部时间范围的频域特征,1946年Gabor提出了著名的Gabor变换。其基本思想是,取时间函数作为窗口函数,用与待分析
18、函数相乘,然后再进行傅立叶变换。在Gabor变换的基础上,为了适应不同问题的需要,进一步发展了多种形式的窗口函数,如矩形窗、汉宁窗、哈明窗等,这一类加窗的傅立叶变换统称为短时傅立叶变换(STFT)。STFT从本质上讲,是用窗函数截取原始信号的一个待分析段进行傅立叶变换,因而可以描述信号在某一局部时间段上的频率信息。目前,STFT在许多领域获得了广泛的应用,但由于STFT的定义决定了其窗函数的大小和形状均与时间和频率无关,一旦选定窗口就保持固定不变,不利于分析时变信号。实际上一般的高频信号持续时间较短,而低频信号持续时间较长,因此我们期望对于高频信号采用小时间窗,对于低频信号采用大时间窗进行分析
19、。在进行信号分析时,这种变时间窗的要求同STFT的固定时窗(窗不随频率而变化)的特性是相矛盾的5。离散余弦变换(DCT)从本质上是一种变换分析方法,要在变换时最大的去除分析信号的相关性提取其特征,就必须适当的构造一组基函数,这组基函数以某种形式类似于我们所要表示的数据,甚至具有与数据相同的相关结构。在我们日常生活中常遇到的信号在空间域和频域都具有相关性。在空间上相隔较近的样值间的相关性比相隔较远的大的多,而在频域上通常呈带状。为了分析和表示这样的信号,我们需要基函数在空间域和频域是局域性的。由于离散余弦函数的频域分辨率与时域分辨率成反比,刚好与实际信号长时低频、短时高频的特性相吻合,既能精确定
20、位信号的突发跳变,又能把握信号的整体变化率。由此可见,离散余弦变换是一种比较理想的进行信号处理的数学工具6。图像压缩编码的理论算法。(1)基于DCT的JPEG图像压缩编码理论算法 基于DCT编码的JPEG编码压缩过程框图,如图2-1所示。压缩数据原始图像数据分成8*8的小块量化器DCT变换熵编码器码表量化表图2-1 基于DCT编码的JPEG压缩过程简化图上图是基于DCT变换的图像压缩编码的压缩过程,解压缩与上图的过程相反。在编码过程中,首先将输入图像颜色空间转换后分解为88大小的数据块,然后用正向二维DCT把每个块转变成64个DCT系数值,其中1个数值是直流(DC)系数,即88空域图像子块的平
21、均值,其余的63个是交流(AC)系数,接下来对DCT系数进行量化,最后将变换得到的量化的DCT系数进行编码和传送,这样就完成了图像的压缩过程。在解码过程中,形成压缩后的图像格式,先对已编码的量子化的DCT系数进行解码,然后求逆量化并把DCT系数转化为88样本像块(使用二维DCT反变换),最后将操作完成后的块组合成一个单一的图像。这样就完成了图像的解压过程。2.2 基于DCT的JPEG图像压缩编码步骤2.2.1 颜色空间的转换和采样JPEG文件使用的颜色空间为1982年推荐的电视图像数字化标准CCIR 601(现为ITU-RB T.601)。在这个色彩空间中,每个分量、每个像素的电平规定为255
22、级,用8位代码表示。JPEG只支持YCbCr颜色模式。其中Y代表亮度,CbCr代表色度。全彩色图像RGB模式转换到YCbCr模式,用下组公式。 (2-1) 其逆变换为: (2-2)JPEG是以88的块为单位来进行处理的,由于人眼对亮度Y的敏感度比色度CbCr的敏感度大的多,所以采用缩减取样的方式,通常采用YUV422取样,图2-2所示。图2-2 YUV422取样示意图即对于1616的块,Y取4个88的块,CbCr各取2个88的块。也有YUV411方式,Y取4个88的块,CbCr各取1个88的块。YUV422取样方式,数据减少1/3。YUV411取样方式,数据减少1/2。缩减取样一般采用图2-3
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 dct 图像 压缩 编码 算法 matlab 实现 终稿

限制150内