ISSN1009-3044
E-mail:eduf@cccc.net.cn
http://www.dnzs.net.cn
Tel:+86-551-56909635690964
基于Matlab的灰度图像DCT与RLE的混合有损压缩
朱玲芳,刘任任(湘潭大学信息工程学院,湖南湘潭411105)
摘要:分别介绍了图像压缩编码技术DCT和RLE,并在Matlab数学分析工具环境下从实验角度出发较直观的探讨了基于DCT与RLE混合有损压缩方法在灰度图像压缩中的应用,数值实验结果表明该方法具有方法简单、速度快、误差小的优点,且大大提高了图像压缩的效率和精度。
关键词:图象压缩;DCT;RLE;Matlab中图分类号:TP317
文献标识码:A
文章编号:1009-3044(2009)21-5763-03
DCTandRLEMixedLossyCompressionofGrayImageBasedonMatlabZHULing-fang,LIURen-ren
(CollegesofInformationEngineering,XiangtanUniversity,Xiangtan411105,China)
Abstract:ImagecompressioncodingtechniqueofDCTandRLEisintroducedrespectivelyinthispaper.MoreoverDCTandRLEmixedlossycompressionmothodisintuitivelydiscussedontheapplicationofgrayimagecompression,whichbasedontheexperimentintheenvironmentofmathematicalanalysistoolsofMatlab.Theresultofnumericalexperimentshowsthatthismethodnotonlyhasthead-vantagessuchassimple,fastspeedandsmallerrors,butalsocanfurthertoimprovetheefficiencyandprecisionofimagecompression.Keywords:imagecompression;DCT;RLE;Matlab
图像是人类视觉的基础,是自然景物的客观反映,它在人类接受和互通信息中扮演着重要角色,但图像数据的一个显著特点就是信息量大,根据计算,在图像不进行编码压缩处理的情况下,一张60M的光盘仅能存放20s左右的640×480像素的图像信息,这就大大增加了现代通信中对图像的存储和处理的困难,也造成了所需成本的增长。因此在3G技术快速普及的今天,要想提高通信速度、增加传输信息量的大小一个必要的手段就是采用图像压缩技术减少传输的图像数据量[1-2]。
一般来说,一幅数字图象可以分为:二值或单色图像、灰度图像、连续色调图像、离散图像和动画样的图像等。压缩技术分为无损压缩和有损压缩两大类,其中在无损压缩领域,游程编码(RunLengthEncoding,简称RLE)方法被广泛采用[3],于受不失真条件的限制,该压缩方式发展则较为缓慢;而在有损压缩领域,离散余弦变换(DiscreteCosineTransform,简称DCT)常被认为是对语音和图像信号进行变换的最佳方法,但该方法的恢复图像存在可见的方块效应和伪吉布斯现象,尤其在高压缩比时更加严重[4]。本文重点研究灰度图像有损压缩,通过对原始图像数据进行DCT变换和RLE编码混合压缩来提高图像的压缩比,经数值实验表明该混合有损压缩方法具有方法简单、速度快、误差小的优点,且大大提高了图像压缩的效率和精度。
1DCT原理
1974年Ahmel等首先提出了DCT概念,它具有非常好的能量聚焦性,又接近最佳变换(K-L),还有可实现的快速算法,使得它
在数字信号处理的各个领域迅速得到应用和研究。随着信号处理技术在通信等领域的广泛应用,各类变换方法的研究和应用已经深入。变换编码的基本原理:将原来在空间域描述的图象信息,通过正交变换,变换到另一个正交矢量空间(称为变换域),即把信号由空间域变换到变换域中用变换系数来描述,这样一个解除相关性的过程也就是冗余度压缩。变换前后的明显差别是,空间域像块中像素之间存在很强的相关性,能量分布均匀;经过正交变换后,变换系数间相关性基本解除,近似是统计独立的,并且能量主要集中在直流和少数低空间频率的变换系数上。为了恢复信号,要经逆正交变换回到空间域,这就实现了变换压缩编码。
1.1一维DCT算法
长度为N的一维序列{X(n):n=0,1,…,N-1}的DCT定义为:
(1)
其中,μ=1,2,…N-1。
(2)
C(μ)为正交因子,它是为了保证交换基的规范性而引入的。
一维离散余弦变换的逆变换定义:
(3)
收稿日期:2009-03-10
作者简介:朱玲芳(1980-),女,湖南娄底人,硕士,主要从事计算机软件与理论的研究;刘任任(1959-),男,湖南醴陵人,博士,教授,
院长,主要从事多值逻辑理论、计算机算法设计与分析研究。
本栏目责任编辑:唐一东人工智能及识别技术5763
ComputerKnowledgeandTechnology电脑知识与技术第5卷第21期(2009年7月)
其中,m=1,2,…,N-1
1.2二维DCT算法
(4)
其中,μ=0,1,…,M-1;ν=0,1,…,N-1
(5)
二维离散余弦变换逆变换定义为:
(6)
其中,m=0,1,…,M-1;n=0,1,…,N-1。
1.3系数矩阵量化
下面是对一个8×8的图像数据进行2维DCT编码的实例:
经DCT2变换如下矩阵F:
通过以上可以看出:DCT变换改变了信号能量的分布方式,F(0,0)为直流分量(DC),能量集中在少数低频系数上,即DC附近,DCT矩阵F大多数的DCT系数值AC非常接近0,如果舍弃这些数值,就可以节约大量的存储空间,而在重构图象时又不会使画面质量显著下降,即要进行量化处理。具体实现方法:①轻度量化,通常按照四舍五入的方法,去除小数点,或者直接取整;②重度量化,将一些在0附近的数全部变为0,较大的数取整,或使用量化表如采用JPEG推荐量。一般来说,重度量化能够在逆变换时获得更好的效果。
2RLE编码原理
这种数据压缩方式的思想是:如果数据d在输入流中连续出现n次,则以单个字符对nd替换n次出现者。这个连续出现的数据项叫游程n,这种压缩方法称为游程编码。
2.1基本游程编码原理
基本游程编码是对源数据流进行统计,由重复出现的串、串的长度及串的位置形成新的数据流。例如,以下的数字串:
经基本游程编码后可记为1(1)2(2)3(3)4(4)5(5)6(3)7(2)8(2)9(2),其中括号内数据为其前数字的重复次数即游程(Run-Length)。由本例可知,对连续重复数值较少的数据流,即对灰度和色彩丰富的图像,基本游程编码压缩效果并不理想,甚至非但不能起到压缩效果,反而使数据量变大。若上例中源数据流中各数字重复次数都为1,经基本游程编码后新数据流长度将变为原来的2倍,如果是多值图像,游程编码的压缩效果会好得多。
2.2改进的简单游程编码[5]
针对基本游程编码存在的缺点,一种可行的改进方案是将数据流中各数值分为两类:其中一类数值游程小于或等于2,按原值输出;另一类数值游程大于2,此类数值加上128后输出。综上所述,改进后的行程编码算法如下:
①对游程小于或等于2的数值按原值输出;
②对游程大于2的数值,将其加上128后输出,并在其后相邻位置输出游程大小。
上述算法保证行程编码后数据量至少不会扩大,为达到更好的压缩效果创造了条件。在此基础上,还可作进一步改进,计算机的基本存储单元是字节,但较大的游程值可能占用超过1字节的存储空间。对游程值大于1字节表示的最大值的数据再次分类:一类是游程大于1字节表示的最大值,小于或等于2字节表示的最大值的数据,游程占用2字节存储空间;另一类是游程大于2字节表示的最大值,小于或等于3字节表示的最大值的数据,游程占用3字节存储空间,但这两类情况都需要增加一个标志字节,以便判断后面游程为2或3字节。
3实验分析
以256个灰度级的图像作为实验图像,用Matlab6.5实现[6],过程如下:
人工智能及识别技术本栏目责任编辑:唐一东
第5卷第21期(2009年7月)
①读出图像duck256.tif,每个像素值由无符号的8位整形表示;
②将图像划分为若干个n×n的像素块,为了保证分块矩阵的正交性,一般取8×8的矩阵;对不足8×8分块的,补0使矩阵完整,DCT变换,在变换后,Matlab中的矩阵系数变为浮点数,每个系数由64位表示,文件扩大为原来的八倍,每个系数矩阵的分块的左上角都会是较大的数,一般都会超过256,即无法用8位来表示;
③量化选用重度量化,使绝对值小于x的数为0,x可取任意的正数,这会导致图
像质量和压缩效果的不同;
④量化后的AC系数的特点是包含了许多“0”系数,并且这许多“0”系数是连续的,因此选用简单RLE编码,先把数组变为一维,结果用2个数组存储数据,第一个保存灰度值,第二个保存游程,保存数据为int16;
⑤解RLE编码;⑥逆DCT变换;⑦还原图像。
编码器和解码器结构如图1所示。具体实验结果如下:图1灰度图像混合有损压缩流程1)只用DCT/IDCT,或只用简单RLE编码压缩的图像压缩比很高,后者达到3.4077,是原来的三倍大。
2)混合DCT和RLE编码压缩后恢复的图像,量化x取50、100和150,分别得到图片b、c和d,具体情况如图2所示。
a)原始图片
b)压缩比0.3066c)压缩比0.1906图2混合DCT和RLE图像压缩试验结果
d)压缩比0.1558
对比试验结果的图像和相关数据,可发现混合有损压缩方法能大幅降低压缩比,同时能保证较高的精度。因此该方法具有方法简单、速度快、误差小的优点,且大大提高了图像压缩的效率和精度。
4总结
图像压缩的优劣除了其压缩比外,还有很多其他方面需要考虑,如编解码速率、重建质量、编解码的复杂度等。因为他们都直接影响到应用系统的设计与实现。所以真正的应用系统应该是基于以上所有因素的综合考虑以及合理折衷。
DCT是正交变换,它可以将8×8图像的空间表达式转换为频率域,只需用少量的数据点表示图像;DCT系数很容易被量化,而且DCT算法是对称的,因此能获得很好的块压缩。DCT还具有算法简单,在硬件和软件中都易于实现等特点。然而它的“方块效应”也是不容忽视的“瓶颈”缺陷。若与其他编码方法(如RLE、小波等)相结合,就会得到更好的效果。RLE编码是一种简单有效的数据无损压缩编码方法,对数据进行DCT变换和重排,为RLE创建了有利条件,本实验重排前如果是按Z字型扫描矩阵,效果应该会更好。改进的简单行程编码把大数和小数分别用1字节、2字节和3字节保存将大大降低压缩文件大小。
Matlab是一种基于向量的高级程序语言,它采用技术计算语言,几乎与专业领域中使用的数学表达式相同。Matlab的基本数据元素是矩阵,提供了各种矩阵运算和操作,并有较强的绘图能力。同时,Matlab的强大功能在于它不断扩大的工具箱。因此图像数据数值试验采用Matlab方法实现,具有非常突出的优越性。
参考文献:
[1][2][3][4][5][6]
SalomanD.数据压缩原理与应用[M].北京:电子工业出版社,2003.姚敏.数字图像处理[M].北京:机械工业出版社,2006.
籍俊伟,林小竹.图像编码中的RLE方法研究[J].石油化工高等学校学报,2004,17(1):83-87.
周瑾,张君昌.一种基于DCTCycleSpinning的图像压缩方法[J].计算机工程与应用,2008,44(10):157-159.林小竹,万建邦.灰度图像的有损RLE压缩[J].石油化工高等学校学报,2004,17(3):89-92.
王哓丹.基于MATLAB的系统分析与设计:图像处理[M].西安:西安电子科技大学出版社,2000.
本栏目责任编辑:唐一东人工智能及识别技术5765
因篇幅问题不能全部显示,请点此查看更多更全内容