




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、基于DCT图像 压缩编码 算法的MATLAB实现原文地址:基于DCT图像压缩编码算法的MATLAB实现作者:lpyy1801摘要:首先介绍了基于离散余弦变换的图像压缩编码算法,接着用MATLAB6.5对图像进行仿真,并对同一幅cameraman.tif图像做不同的压缩。实验结果表明,在很大的压缩范围内,在不同的压缩比和编码比特率下,重建图像的峰值信噪比都在30dB以上,仍然能满足人们的视觉需要。对图像做不同的压缩,满足了不同的场合不同的控制码率下要求不同的图像质量的实际需要。用MATLAB做仿真实验,方法简单而且误差小,大大提高了图像压缩的效率和精度。关键词:图像压缩算法;MATLAB软件;D
2、CT;压缩编码1引言随着信息技术的发展,图像信息被广泛应用于多媒体通信和计算机系统中。但是图像具有庞大的数据量,不便于存储和传输,必须采用合适的方法对其进行压缩,因此有必要对图像压缩编码标准进行研究。本研究在介绍图像压缩原理的基础上,用Matlab6.5对标准灰度图像进行压缩与重建,并分析实验结果,得出结论。1.1基于DCT的图像压缩编码理论算法及Matlab仿真基础1)图像压缩编码的概念压缩的理论基础是信息论。从信息论的角度来看,压缩就是去掉信息中的冗余,即保留不确定的信息,去掉确定的信息(可推知的),也就是用一种更接近信息本质的描述来代替原有冗余的描述。这个本质的东西就是信息量(即不确定因
3、素)。2)图像压缩编码的一般框图熵编码器量化器映射变换原始图像码流信道码流熵解码器反量化器反映射变换复原图像图像压缩的过程可以概括成图所示的三个步骤,原始图像经映射变换后的数据再经量化器和熵编码器成为码流输出。(1)映射变换。其目的是通过映射改变图像数据的特性,使之更有利于压缩编码。(2)量化器。在限失真编码中要对映射后的数据进行量化,若量化是对映射后的数据逐个的进行的,则称标准量化,若量化是成组的进行的,则称矢量量化,量化总会造成某些信息丢失,形成失真,即量化失真或量化噪声,为使失真小,应量化的精细,但压缩比就高不了,这是一对矛盾,应选用恰当的量化级数和量化曲线形状来缓解这对矛盾,量化器的引
4、入是图像编码产生失真的根源,在要求复原图像与原图完全一致的无失真编码器中必须不用量化器,但这样一来,压缩比难以提高,在多数应用中,存在少量失真并不可怕,只要把失真的程度和性质控制在允许的范围内,也就是把复原图像的主观质量控制在允许的程度内,就可以在满足应用要求的前提下提高压缩比,值得注意的是,对于同样的量化失真,不同的映射变换和反变换反映不同性质的复原图像的失真,人眼对某些性质的失真敏感而对另一些性质的失真不敏感。(3)熵编码器。这一步是用来消除符号编码冗余度的,它一般不产生失真,理想的情况是编出的码流的平均码长等于量化后数据的信息熵,常用的编码方法有许多种,例如分组码、行程码(RLC)和变长
5、码(VLC)、不分组码以及算术码(ArithmaticCoing等)。行程码传输的是数据行程长度而不是数据本身,例如要传108个0,用行程码是改为传行程码标记和行程长度1080在变长码中最常用的是霍夫曼(Hufman)码,基本原则是对出现概率大的数值用短码来编,对出现概率小的数值用长码来编,从而使平均码长减小。降低码率,在实际编码器中常把RLc和Hufman码结合起来,称为霍夫曼行程码,在H.261,JPEG,啪PEG等国际昧准中用到它,而算术码则用于JPEG,H.263,JBIG等国际标准中。3)MATLAB仿真实现根据压缩编码算法,要将一幅灰度图像进行压缩编码,首先把图像分成8×
6、8的像素块,分块进行DCT变换后,根据标准量化表Es对变换系数进行量化后,再对直流系数(DC)进行预测编码,然后根据标准的Huffman码表蜘进行熵编码,输出压缩图像的比特序列,实现了图像压缩。在接收端,则经过Huffman熵解码、DC系数和AC系数可变长解码、反量化后,再进行反DCT变换得到重建图像。对一幅图像进行编解码的MATLAB程序流程图:2、离散余弦变换(DCT)2.1DCT的定义DCT变换利用傅立叶变换的性质.采用图像边界褶翻将像变换为偶函数形式,然后对图像进行二维傅立叶变换,变后仅包含余弦项.所以称之为离散余弦变换。二维离散余弦变换DCT(DiscreteCosineTransf
7、orm)的定为.假设矩阵A的大小为MxN。其中。Bpq称为矩阵A的DCT系数。在MATLAB中,矩阵的下标从l开始而不是从0开始的,所以MATLAB中的矩阵元素A(1,1)和B(1,1)分别对应于上面定义中的值A加和B。,依此类推。DCT是一种可逆变换,离散反余弦变换定义如下:上式的含义是任何MxN的矩阵A都nJ以表示为一系列有下面形式的函数的和:这些函数称为DCT变换的基函数。这样.Bpq就可以看成是应用于每个基函数的加权。2.2DCT和图像压缩DCT编码属于正交变换编码方式.用于去除图像数据的空间冗余。变换编码就是将图像光强矩阵(时域信号)变换到系数空间(频域信号)上进行处理的方法。在空问
8、上具有强相关的信号,反映在频域上是在某些特定的区域内能量常常被集中在一起,或者是系数矩阵的分布具有某些规律。我们可以利用这些规律在频域上减少量化比特数,达到压缩的目的。图像经DCT变换以后,DCT系数之间的相关性已经很小。而且大部分能量集中在少数的系数上,因此,DCT变换在图像压缩中非常有用,是有损图像压缩国际标准JPEG的核心。从原理上讲可以对整幅图像进行DCT变换,但由于图像各部位上细节的丰富程度不同,这种整体处理的方式效果不好。为此,发送者首先将输入图像分解为8x8或16x16的块,然后再对每个图像块进行二维DCT变换,接着再对DCT系数进行量化、编码和传输;接收者通过对量化的DCT系数
9、进行解码,并对每个图像块进行的二维DCT反变换.最后将操作完成后所有的块拼接起来构成一幅单一的图像。对于一般的图像而言,大多数DCT系数值都接近于0,町以去掉这些系数而不会对重建图像的质量产生霞大影响。此,利用DCT进行圈像压缩确实可以节约大量的存储空间在宴验中,先将输入的原始lena图像分为8x8的块,然后再对每个块进行二维DCT变换。MATLAB图像处理上具箱中提供的二维DCT变换及DCT反变换函数如下。2.2.1.dcL2dct2实现罔像的二维离散余弦变换.其语法格式为:(1)B=dct2(A)返回图像A的二维离散余弦变换值,其大小与A相同且各元素为离散余弦变换的系数B(K1,k2)。(
10、2)B=dct2(A,in,n)或B=dct2(A,m,n)如果m和n比图像A大,在对图像进行二维离散余弦变换之前,先将图像A补零至mxn如果m和n比图像A小。则进行变换之前,将图像A剪切。2.2.2idct2idct2可以实现图像的二维离散余弦反变换,其语法格式为:B=idct2(A);B=idct2(A,m,n)或B=idct2(A,m,n)。3图像编码3.1图像编码的分类图像编码压缩的方法目前有很多,其分类方法根据出发点不同而有差异。根据解压重建后的图像和原始图像之间是否具有误差(对原图像的保真程度),图像编码压缩分为无误差(亦称无失真、无损、信息保持)编码和有误差(有失真或有损)编码两
11、大类。无损压缩(冗余度压缩、可逆压缩):是一种在解码时可以精确地恢复原图像,没有任何损失的编码方法,但是压缩比不大,通常只能获得15倍的压缩比。用于要求重建后图像严格地和原始图像保持相同的场合,例如复制、保存十分珍贵的历史、文物图像等;有损压缩(不可逆压缩):只能对原始图像进行近似的重建,而不能精确复原,适合大数工用于存储数字化了的模拟数据。压缩比大,但有信息损失。3.2无损编码3.2.1行程编码(RLE)在一个逐行存储的图像中,具有相同灰度值的一些象素组成的序列称为一个行程。在编码时,对于每个行程只存储一个灰度值的码,再紧跟着存储这个行程的长度。这种按照行程进行的编码被称为行程编码(RunL
12、engthEncoding)。行程编码对于仅包含很少几个灰度级的图像,特别是二值图像,比较有效。3.2.2Huffman编码Huffman编码是50年代提出的一种基于统计的无损编码方法,它利用变长的码来使冗余量达到最小。通过一个二叉树来编码,使常出现的字符用较短的码代表,不常出现的字符用较长的码代表。静态Huffman编码使用一棵依据字符出现的概率事先生成好的编码树进行编码。而动态Huffman编码需要在编码的过程中建立编码树。由于Huffman编码所得到的平均码字长度可以接近信源的熵,因此在变长编码中是最佳的编码方法,故也称为熵编码。具体编码方法是:把输入元素按其出现概率的大小顺序排列起来,
13、然后把两个具有最小概率的元素之概率加起来;把该概率之和同其余概率大小顺序排队,然后再把两个最小概率加起来,再重新排队;重复,直到最后得到和为1的根节点。3.3有损编码3.3.1量化将图像用较少的灰度级别来表示是最简单的减小数据量的方法,这种方法就是标量量化方法。更一般的情况是,针对连续量的采样过程,量化是用有限个状态来表示连续值。3.3.2预测编码预测编码根据数据在时间和空间上的相关性,根据统计模型利用已有样本对新样本进行预测,将样本的实际值与其预测值相减得到误差值,再对误差值进行编码。由于通常误差值比样本值小得多,因而可以达到数据压缩的效果。模拟量到数字量的转换过程是脉冲编码调制过程PCM,
14、也称PCM编码。对于图像而言,直接以PCM编码,存储量很大。预测编码可以利用相邻象素之间的相关性,用前面已出现的象素值估计当前象素值,对实际值与估计值的差值进行编码。常用的一种线性预测编码方法是差分脉冲编码调制DPCM。预测编码通常不直接对信号编码,而是对预测误差编码。当预测比较准确,误差较小时,即可达到编码压缩的目的。这种编码称之为差分脉冲编码调制(DPCM),上图是原理框图。在该系统中,xN为tN时刻的亮度取样值。预测器根据tN时刻之前的样本x1,x2,xN-1对xN作预测,得到预测值x'N。xN与x'N之间的误差为量化器对eN进行量化得到e'N。编码器对e'
15、;N进行编码发送。接收端解码时的预测过程与发送端相同,所用预测器亦相同。接收端恢复的输出信号是xN的近似值,两者的误差是当xN足够小时,输入信号xN和DPCM系统的输出信号几乎一致。3.3.3DCT编码DCT变换是图像压缩标准中常用的变换方法,如JPEG标准中将图像按8x8分块利用DCT变换编码实现压缩3.4保真度准则在图像压缩编码中,解码图像与原始图像可能会差异,因此,需要评价压缩后图像的质量。描述解码图像相对原始图像偏离程度的测度一般称为保真度(逼真度)准则。常用的准则可分为两大类:客观保真度准则和主观保真度准则。3.4.1客观保真度准则最常用的客观保真度准则是原图像和解码图像之间的均方根
16、误差和均方根信噪比两种。令f(x,y)代表原图像,代表对f(x,y)先压缩又解压缩后得到的f(x,y)的近似,对任意x和y,f(x,y)和之间的误差定义为:若f(x,y)和均为M×N,则它们之间均方根误差为:如果将看作原始图f(x,y)和噪声信号e(x,y)的和,那么解压图像的均方信噪比为:如果对上式求平方根,就得到均方根信噪比3.4.2主观保真度准则尽管客观保真度准则提供了一种简单、方便的评估信息损失的方法,但很多解压图最终是供人观看的。事实上,具有相同客观保真度的不同图像,在人的视觉中可能产生不同的在视觉效果。这是因为客观保真度是一种统计平均意义下的度量准则,对于图像中的细节无法
17、反映出来。而人的视觉系统具有独特的特性,能够觉察出来。这种情况下,用主观的方法来测量图像的质量更为合适。1种常用的方法是对1组(不少于20人)观察者显示图像,并将他们对该图像的评分取平均,用来评价一幅图像的主观质量。4MATLAB仿真及效果4.1程序%程序功能:模拟DCT编码解码过程,生成带"块效应"的图像%步骤:灰度图像DCT量化反量化IDCT%下一步目标:实现对任意大小图象的处理。(判断图象大小,若不是2的整数次方,则补零)I=imread('cameraman.tif')I=im2double(I)%转换图像矩阵为双精度型。T=dctmtx(8)%产生
18、二维DCT变换矩阵%计算二维DCT,矩阵T及其转置是DCT函数P1*X*P2的参数a1=1611101624405161;1212141926586055;1413162440576956;1417222951878062;182237566810910377;243555648110411392;49647887103121120101;7292959811210010399;fori=1:8:200forj=1:8:200P=I(i:i+7,j:j+7);K=T*P*T'I2(i:i+7,j:j+7)=K;K=K./a1;%量化K(abs(K)0.03)=0;I3(i:i+7,j:
19、j+7)=K;endendfigure;imshow(I2);title('DCT变换后的频域图像');%显示DCT变换后的频域图像fori=1:8:200forj=1:8:200P=I3(i:i+7,j:j+7).*a1;%反量化K=T'*P*T;I4(i:i+7,j:j+7)=K;endendfigure;imshow(I4);title('复原图像');imwrite(I4,'复原图像6.jpg');B=blkproc(I,8,8,'P1*x*P2',T,T')%二值掩模,用来压缩DCT系数,只留下DCT系数中左上角的1
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年信号扩展检测设备项目提案报告
- 2025秋季科研项目推进计划
- 我国银行笔试题目及答案
- 温州公务员考试题及答案
- 汽车智能系统项目商业计划书
- 人力资源2025年工作效率提升计划
- 2025年移动传媒市场调研报告
- 2025年天然植物纤维及人造纤维编织工艺品项目申请报告
- bipv可行性研究报告
- 郑州脱水蔬菜制造项目可行性研究报告
- 1-059-职业技能鉴定指导书-继电保护(第二版)11-059职业技能鉴定指导书职业标准试题库
- 【宁波年报】2022年宁波房地产市场年报
- 运输供应商年度评价表
- 2023年海南省财金集团有限公司招聘笔试题库及答案解析
- 北京中考英语词汇表(1600词汇)
- 超市消防监控系统设计
- 封样管理规定
- 黄腐酸钾项目可行性研究报告-用于立项备案
- 管理人员责任追究制度
- 自动旋转门PLC控制
- 电影场记表(双机位)
评论
0/150
提交评论