完整版基于DCT的图像压缩技术研究与仿真实现毕业论文.docx
《完整版基于DCT的图像压缩技术研究与仿真实现毕业论文.docx》由会员分享,可在线阅读,更多相关《完整版基于DCT的图像压缩技术研究与仿真实现毕业论文.docx(16页珍藏版)》请在冰豆网上搜索。
![完整版基于DCT的图像压缩技术研究与仿真实现毕业论文.docx](https://file1.bdocx.com/fileroot1/2023-6/21/42c25ee9-4057-43db-8f63-45d6c3e7dc22/42c25ee9-4057-43db-8f63-45d6c3e7dc221.gif)
完整版基于DCT的图像压缩技术研究与仿真实现毕业论文
2010届毕业生
毕业论文
题目:
基于DCT的图像压缩技术研究与仿真实现
院系名称:
国际学院
专业班级:
电子信息工程技术07级03班
学生姓名:
梁岑学号:
指导教师:
朱春华教师职称:
讲师
2010年5月10日
摘要
离散余弦变换(DiscreteCosineTransform,简称DCT)常被认为是对语音和图像信号进行变换的最佳方法。
为了工程上实现的需要,国内外许多学者花费了很大精力去寻找或改进DCT的快速算法。
由于近年来DSP的发展,加上专用集成电路设计上的优势,这就牢固地确立DCT在目前图像编码中的重要地位,成为H.261、JPEG、MPEG等国际上公用的编码标准的重要环节。
MATLAB是由美国Math-Works公司推出的用于数值计算和图形处理的科学计算软件,它集数值分析、矩阵计算、信号处理和图形显示多种功能于一体,构成了一个方便的界面友好的用户环境。
MATLAB中的图像处理工具箱是许多基于MATLAB技术计算环境的函数包的集合,图形功能完备。
本文主要讨论了DCT变换方法,并讨论了应用MATLAB中的图像处理工具箱中的相关函数和命令来实现离散余弦变换的图像压缩算法的仿真。
关键词:
离散余弦变换(简称DCT);MATLAB;DCT变换方法;图像处理;
图像压缩;仿真
Summary
DCT(DiscreteCosineTransform,referredtoasDCT)isoftenconsideredthevoiceandimagesignals,thebestwaytotransform.TheneedtoworktoachievemanynationalandinternationalscholarstospendagreatefforttofindorimprovetheDCTfastalgorithm.InrecentyearsthedevelopmentofDSP,coupledwiththeadvantagesofASICdesign,whichfirmlyestablishedinthecurrentDCTencodedimagesinanimportantposition,asH.261,JPEG,MPEGandotherinternationalstandardsonthepublicanimportantpartoftheencoding.MATLABisaU.S.Math-WorksInc.introducedfornumericalcomputingandgraphicsprocessinginscientificcomputingsoftware,whichcombinesnumericalanalysis,matrixcomputation,signalprocessingandgraphicaldisplaymultiplefunctionsintoone,formingaconvenientuserfriendlyinterfaceenvironment.MATLABImageProcessingToolboxistheMATLABtechnicalcomputingenvironment,manybasedonafunctionofthesetofpackages,graphics,fullyfunctional.
ThispaperdiscussestheDCTtransform,anddiscussestheapplicationofMATLABImageProcessingToolboxinordertoachievethecorrelationfunctionanddiscretecosinetransformimagecompressionalgorithmisproved.
Keywords:
discretecosinetransform(theDCT);MATLAB;DCTtransform;imageprocessing;Imagecompression;simulation
目录
1绪论1
2图像压缩基本原理及模型3
2.1图像压缩基本原理3
2.1.1图像压缩的基本思想3
2.1.2图像压缩的方法3
2.2图像压缩系统流程图4
2.3分析图像压缩的主要模块5
2.3.1色度空间转换5
2.3.2离散余弦变换5
2.3.3量化编码6
2.3.4“Z”字型扫描6
2.3.5哈夫曼(Huffman)编码及解码7
2.4图像数据压缩的目7
2.5图像压缩的基本模型9
3离散余弦变换的Matlab仿真10
3.1离散余弦变换(DCT)10
3.2Matlab的功能11
3.3离散余弦变换的Matlab仿真12
结论14
致谢15
参考文献16
附录17
1绪论
进入21世纪,人类已步入信息社会,新信息技术革命使人类被日益增多的多媒体信息所包围,这也正好迎合了人类对要示提高视觉信息的需求。
多媒体信息主要有三种形式:
文本、声音和图像。
从信息传输的发展史(电报、电话、传真、收音机、电视机直至现在的网络)可以看出,人们逐渐将信息传输的重点从声音转向图像,然而图像是三种信息形式中数据量最大的,这给图像的传输和存储带来了极大的困难。
例如,一幅640×480分辨率的24位真彩色图像的数据量约为900kb;一个100Mb的硬盘只能存储约l00幅静止图像画面。
对于如此巨大的数字图像数据量,如果不经过压缩,不仅超出了计算机的存储和处理能力,而且在现有的通信信道的传输速率下,是无法完成大量多媒体信息实时传输的,数字图像高速传输和存贮所需要的巨大容量已成为推广数字图像通信和最大障碍。
因此,为了存储、处理和传输这些数据,必须进行压缩。
图像压缩之所以能够进行压缩是因为原始图像数据是高度相关的,存在很大的数据冗余。
数字图像包含的冗余信息一般有以下几种:
空间冗余、时间冗余、信息熵冗余、统计冗余、结构冗余、视觉冗余以及知识冗余等。
图像压缩算法就是要在保证图像一定的重建质量的同时,尽可能多的去除这些冗余信息,以达到对图像压缩的目的。
离散余弦变换(DCT)离散余弦变换(DCT)是N.Ahmed等人在1974年提出的正交变换方法。
它常被认为是对语音和图像信号进行变换的最佳方法。
由于近年来数字信号处理芯片(DSP)的发展,加上专用集成电路设计上的优势,这就牢固地确立离散余弦变换(DCT)在目前图像编码中的重要地位,成为H.261、JPEG、MPEG等国际上公用的编码标准的重要环节。
在视频压缩中,最常用的变换方法是DCT,DCT被认为是性能接近K-L变换的准最佳变换,变换编码的主要特点有:
(1)在变换域里视频图像要比空间域里简单。
(2)视频图像的相关性明显下降,信号的能量主要集中在少数几个变换系数上,采用量化和熵编码可有效地压缩其数据。
(3)具有较强的抗干扰能力,传输过程中的误码对图像质量的影响远小于预测编码。
通常,对高质量的图像,DMCP要求信道误码率,而变换编码仅要求信道误码率。
MATLAB是由美国Math-Works公司推出的用于数值计算和图形处理的科学计算软件,它集数值分析、矩阵计算、信号处理和图形显示多种功能于一体,构成了一个方便的界面友好的用户环境。
MATLAB中的图像处理工具箱是许多基于MATLAB技术计算环境的函数包的集合,图形功能完备,本文主要讨论了图像压缩的原理并讨论了应用MATLAB6.5中发布的图像处理工具箱中的相关函数和命令来实现离散余弦变换的图像压缩算法的仿真。
2图像压缩基本原理及模型
2.1图像压缩基本原理
2.1.1图像压缩的基本思想
任何压缩机制的基本思想都是除去数据中存在的相关性。
所谓相关性,就是能够根据给出的一部分数据来判断出相邻的数据。
图像压缩的根本思想就是去除图像数据中存在的相关性,即去除图像数据中能根据其他数据推算得到的数据。
2.1.2图像压缩的方法
目前,图像压缩的方法较多,其分类方法视出发点不同也有差异。
常见的分类法有:
(1)冗余度压缩法。
该方法的核心是基于统计模型,减少或完全去除源数据中的冗余,同时保持信息不变。
如把图像数据中出现概率大的灰度级以短码表示,概率小的灰度级用相对长码表示,处理的平均码长必然短于未编码压缩前的平均码长。
在解码过程中,可以根据相应的规则或算法,将冗余量插入到图像数据中,严格恢复原图像,实现编码与解码的互逆。
因此,冗余编码压缩又称之为无损压缩或无失真压缩,通常用于文本文件的压缩。
著名的哈夫曼(Huffman)编码、香农(Shannon)编码就属于这一类。
(2)熵压缩法。
这是一种以牺牲部分信息量为代价而换取缩短平均码长的编码压缩方法。
由于其在压缩过程中允许丢失部分信息,所以图像还原后与压缩前不会完全一致,故人们将这种压缩称为有损压缩。
该压缩机制的优点是可以得到比无损压缩高得多的压缩比,但它只能用于可以用近似数据代替原始数据,而这种相近数据又是容易被压缩的情况。
在实际应用中无损压缩更为流行,主要是由于它的压缩比较大,且效果很好。
2.1.3图像压缩标准
统一的国际标准是不同国家地区和厂商的产品能够相互兼容和协调的基础。
有关图像压缩编码已有的国际标准(或建议),如H.261建议、JPEG标准、MPEG-1、MPEG-2标准和H.263标准等,涉及到二值图像压缩传真、静态图像传输、可视电话、会议电视、VCD、DVD、常规数字电视、高清晰度电视、多媒体可视通信、多媒体视频点播与传输等应用领域。
2.2图像压缩系统流程图
基于DCT算法的图像压缩是有损的。
简单地说,它就是把大量的数据简化为较小的、真正有意义的数据,删除只带有极少视觉效果的信息,并且根据数据出现的概率大小选择不同码长的码字来表示。
由于人眼对亮度信息比较敏感,而对颜色的反应相对较弱,所以可以通过色度空间转化,把三基色(RGB)表示的图像转换为由色度亮度(YCbCr)表示的图像,然后对视觉效果影响不大的色度信息进行二次采样,使输入编码器的信息量先减少一半,然后对各分量分成8×8象素块,这些块以特定顺序输入编码器,系统流程图如图2.1所示。
图2.1基于DCT的编码器系统流程图
图像编码器的具体工作步骤为:
首先通过前向余弦变换,使每块的真正有用信息集中到块的左上角,然后进行量化,使数值的精确度减小并使数值较小的数据变为零,Z形扫描可以增加零游程的长度,使哈夫曼编码更有效,最后通过哈夫曼编码得到编码数据流。
2.3分析图像压缩的主要模块
2.3.1色度空间转换
目前,很多原始图像象素都以RGB三基色表示,通过色度空间转换,将RGB三基色图像转换为CCIR601推荐的彩色空间。
这彩色空间由3个分量Y(亮度)、Cb(蓝色度)、Cr(红色度)组成,分别可由RGB三基色以下列关系得到:
Y=0.299R+0.587G+0.114B
Cb=-0.1687R-0.3313G+0.5B+128
Cr=0.5R-0.4187G-0.0813B+128
同样,在解码端可以通过下列关系恢复RGB值:
R=Y+1.402(Cr-128)
G=Y-0.34414(Cb-128)-0.71414(Cr-128)
B=Y+1.772(Cb-128)
2.3.2离散余弦变换
离散余弦变换(DCT)是一种与离散傅立叶变换紧密相关的正交变换,8×8的二维离散余弦变换可以将图像的空间表达式转换到频率域,只用少量的数据点来表达图像,用f(x,y)表示8×8的图像块象素值,F(u,v)表示二维离散余弦变换后的值,具体表达式如下:
(2.1)
其反变换如下式:
(2.2)
其中,
(2.3)
二维离散余弦变换核具有可分离性,即可以先对每行进行一维离散余弦变换,再对每列进行一维离散余弦变换,因此,二维离散余弦变换可表示为:
(2.4)
(2.5)
如果直接按照公式计算,其计算量很大,所以,实际应用中普遍采用快速傅立叶变换(FFT)算法来实现离散余弦变换的快速算法。
2.3.3量化编码
数据压缩中的量化处理,不是对AD转换量化,而是对正交变换后的数据进行量化处理,量化输入值的动态范围很大,而量化的输出只能取有限个整数,量化后的数值用较少的比特数便可表示。
量化处理总是把一批输入量化到一个输出级上,这样降低了数值的精度,但减少了数据量。
DCT的输出系数中,左上角的数据表示低频分量,人眼比较敏感,应该用较高的精度来表示,而右下角的数据可以用较低的精度来表示,因此,我们可以定义一个量化表对不同的数据采用不同的量化等级,这个量化表可以根据期望的压缩比进行调整,一般来说,量化表元素值越大压缩比越大,当然图像失真度也越大。
2.3.4“Z”字型扫描
量化后的数据本来已经可以直接进行游程编码,但为了提高游程编码的效率,我们必须尽量增加零游程的长度。
基于量化后系数的排列特征,采用“Z”字型扫描能有效增加零游程的长度。
“Z”字型扫描轨迹如图2.2所示:
图2.2“Z”字形扫描轨迹
2.3.5哈夫曼(Huffman)编码及解码
哈夫曼编码是1952年由Huffman提出的编码方法,基本思想是根据源数据符合出现的概率大小进行编码,出现概率大的符号分配越短的码字,出现概率越小的符号分配越长的码字,从而达到用尽量少的比特数表示数据源,标准哈夫曼编码步骤如下:
(1)统计数据源符号出现的概率,得到不同概率的信息符号;
(2)将数据源符号按概率递减顺序排列;
(3)把两个最小概率相加作为新符号的概率,并按
(2)重排;
(4)重复
(1)、
(2),直到概率为1;
(5)在每次合并信源时,将合并的信源分别赋“0”和“1”;
(6)寻找从每一信源符号到概率为1处的路径,记录路径上的“0”和“1”;
(7)从树根开始写出每一符号的“0”、“1”。
用标准哈夫曼编码对图像进行编码时效率很高,但需要对原始图像扫描两遍,第一遍要精确统计出每个像素值出现的概率,第二遍是建立哈夫曼树并编码,数据压缩和解压速度较慢,因此,出现了一种改良的哈夫曼编码,它的变长码字不是实时产生而是一个固定的表,在编码和解码过程中不用计算符号概率和排序,直接查表得到,但这个表必须经过大量的统计工作并精心设计才能达到较高的编码效率。
在静态图像压缩国际标准(JPEG标准)中,专家组已经对大量自然图像进行了统计,得到了适合于静态自然图像编码的哈夫曼表,在实际编码过程中,我们可直接应用此表进行编码和解码。
2.4图像数据压缩的目
图像数据压缩的目的是在满足一定图像质量的条件下,用尽可能少的比特数来表示原始图像,以提高图像传输的效率和减少图像存储的容量,在信息论中称为信源编码。
图像压缩是通过删除图像数据中冗余的或者不必要的部分来减小图像数据量的技术,压缩过程就是编码过程,解压缩过程就是解码过程。
压缩技术分为无损压缩和有损压缩两大类,前者在解码时可以精确地恢复原图像,没有任何损失;后者在解码时只能近似原图像,不能无失真地恢复原图像。
假设有一个无记忆的信源,它产生的消息为{ai},1≤i≤N,其出现的概率是已知的,记为P(ai)。
则其信息量定义为:
(2.6)
由此可见一个消息出现的可能性越小,其信息量就越多,其出现对信息的贡献量越大,反之亦然。
信源的平均信息量称为“熵”,可以表示为:
(2.7)
对上式取以2为底的对数时,单位为比特(bits)
(2.8)
根据香农(Shannon)无噪声编码定理,对于熵为H的信号源,对其进行无失真编码所可能达到的最低比特数为,这里为一任意小的正数,因此可能达到的最大压缩比为:
(2.9)
其中B是原始图像的平均比特率。
在图像压缩中,压缩比是一个重要的衡量指标。
可以定义压缩比为:
(2.10)
2.5图像压缩的基本模型
图像编码包括两个阶段,前一个阶段就是利用预测模型或正交模型对图像信号进行变换;后一个阶段是利用已变换信号的统计特性,对其分配适当的代码来进行编码传输。
编码器与解码器的结构分别如图2.3、2.4。
图2.3编码器结构图2.4解码器结构
在发送端,输入的原始图像首先经过DCT变换后,其低频分量都集中在左上角,高频分量分布在右下角(DCT变换实际上是空间域的低通滤波器)。
由于该低频分量包含了图像的主要信息,而高频分量与之相比就不那么重要了,所以可以忽略高频分量,从而达到压缩的目的。
将高频分量去掉就要用到量化,这是产生信息损失的根源。
“量化”的主要任务是用有限个离散电平来近似表达已抽取出的信息。
在此采用均匀量化,通过改变程序中的量化因子Q的值以得到不同压缩比的图像。
Huffman编码时,首先对经DCT变换及量化后的图像收据扫描一遍,计算出各种像素出现的概率;然后按概率的大小指定不同长度的唯一码字,由此得到一张Huffman表。
编码后的图像记录的是每个像素的码字,而码字与量化后像素值的对应关系记录在码表中。
生成的一维字符矩阵即为实际中要传输的序列,压缩后的图像数据在信道中进行传输。
在接收端,接收到的压缩图像数据首先经过Huffman译码,通过搜索已生成的Huffman表,根据码字与量化后像素值的对应关系,搜索出与码字对应的像素值,并转换为二维矩阵。
反量化时将以上二维矩阵中的每一个像素值乘以量化因子Q。
最后通过DCT反变换得到重建图像。
3离散余弦变换的Matlab仿真
3.1离散余弦变换(DCT)
离散余弦变换(DiscreteCosineTransform,简称DCT变换)是一种与傅立叶变换紧密相关的数学运算。
在傅立叶级数展开式中,如果被展开的函数是实偶函数,那么其傅立叶级数中只包含余弦项,再将其离散化可导出余弦变换,因此称之为离散余弦变换。
离散余弦变换(DCT)是N.Ahmed等人在1974年提出的正交变换方法。
它常被认为是对语音和图像信号进行变换的最佳方法。
为了工程上实现的需要,国内外许多学者花费了很大精力去寻找或改进离散余弦变换的快速算法。
由于近年来数字信号处理芯片(DSP)的发展,加上专用集成电路设计上的优势,这就牢固地确立离散余弦变换(DCT)在目前图像编码中的重要地位,成为H.261、JPEG、MPEG等国际上公用的编码标准的重要环节。
在视频压缩中,最常用的变换方法是DCT,DCT被认为是性能接近K-L变换的准最佳变换,变换编码的主要特点有:
(1)在变换域里视频图像要比空间域里简单。
(2)视频图像的相关性明显下降,信号的能量主要集中在少数几个变换系数上,采用量化和熵编码可有效地压缩其数据。
(3)具有较强的抗干扰能力,传输过程中的误码对图像质量的影响远小于预测编码。
通常,对高质量的图像,DMCP要求信道误码率,而变换编码仅要求信道误码率。
DCT等变换有快速算法,能实现实时视频压缩。
针对目前采用的帧内编码加运动补偿的视频压缩方法的不足,我们在Westwater等人提出三维视频编码的基础上,将三维变换的结构应用于视频图像压缩,进一步实现了新的视频图像序列的编码方法。
3.2Matlab的功能
Matlab是近几年来在国内外广泛流行的一种科学计算可视化软件,其特点是语法结构简单,数值计算高效,图形功能完备。
Matlab之所以成为世界顶尖的科学计算与数学应用软件,是因为它随着版本的升级与不断完善而具有愈来愈强大的功能。
(1)数值计算功能Matlab出色的数值计算功能是使之优于其他数学应用软件的决定性因素。
(2)符号计算功能在数学科学、应用科学和工程计算领域,常常会遇到符号计算问题。
1993年,MathWorks公司以Maple的“内核”作为符号计算功能的“引擎”,依靠Maple已有的库函数,开发出了在Matlab环境下实现符号计算功能的系统组件。
(3)数据分析功能在科学计算和工程应用中,大量的原始数据和数值计算结果需要进行分析,Matlab将这些数据以图形的方式显示出来,不仅使数据间的关系清晰明了,而且对于揭示其内在本质往往有着非常重要的作用。
(4)动态仿真功能Matlab提供了一个模拟动态系统的交互式程序SIMULINK,允许用户在屏幕上绘制框图来模拟一个系统,并能动态地控制该系统。
SIMULINK采用鼠标驱动方式,能处理线性、非线性、连续、离散等多种系统。
(5)程序接口功能Matlab提供了方便的应用程序接口(API),用户可以在Matlab环境下直接调用已经编译过的C和Fortran子程序,可以在Matlab和其他应用程序之间建立客户机服务器关系。
同样,在C和Fortran程序中,也可以调用Matlab的函数或命令,使得这些语言可以充分利用Matlab强大矩阵运算功能和方便的绘图功能。
(6)文字处理功能MatlabNotebook能成功地将Matlab与文字处理系统MicrosoftWord集成一个整体,为用户进行科学计算、工程设计和文字处理等营造了一个完美统一的工作环境。
3.3离散余弦变换的Matlab仿真
利用离散余弦变换(DCT)进行图像压缩,首先要将输入的图像分解成8*8的块,然后对每个块进行二维离散变换,最后将变换得到的DCT系数进行编码和传送,解码时对每个块进行二维DCT反变换。
最后再将反变换后的块组合一幅图像,对于通常的图像来说,大多数的DCT系数的值非常接近于0,如果舍弃这些接近于0的值,在重构图像时并不会带来图像画面质量的显著下降。
所以,利用DCT进行图像压缩可以节约大量的存储空间。
压缩应该在最合理的近似元图像的情况下使用最少的系数。
按照以上的方法,将一幅图像分成8*8的块进行压缩。
其实现方法如下:
I=imread('\lena.bmp');%读取图像
I=double(I)255;
T=dctmtx(8);
B=blkproc(I,[88],'P1*x*P2',T,T');
mask=[11110000
11100000
11000000
10000000
00000000
00000000
00000000
00000000];
B2=blkproc(B,[88],'P1.*x',mask);
I2=blkproc(B2,[88],'P1*x*P2',T',T);
figure;
subplot(2,1,1),imshow(I);
subplot(2,1,2),imshow(I2);
以’lena’图像为例实验,结果如图3.1所示。
图3.1压缩前后的图像(左边为原图像,右边为压缩图像)
结论
DCT具有算法简单,易于硬件实现等优点,从而广泛应用于图像压缩领域,尤其在较高比特率的传输条件下能取得令人满意的压缩效果。
然而,它在低比特率条件下的“方块效应”成了不容忽视的“瓶颈”缺陷。
原因就在于DCT处理的图像是分块进行的,块与块边界两边的像素相关性不能去掉,从而形成了明显的方块边界。
若将DCT变换与其它编码方法(如小波变换、分形等)相结合,会得到更好的效果
数据压缩技术的优劣主要是由压缩所能达到的压缩倍数、从压缩后的数据所能恢复的图像的质量和算法的复杂度、解码的速度