RGB图像的小波分解与重构在图像压缩中的应用**摘要:利用MATLAB的小波工具箱实现了对真彩图像的分解与重构,通过探究不同尺度下高低频分量对于RGB图像的影响来选择适当简易的方法将真彩图像进行适当的压缩,采用这种方法压缩后的图像压缩比高、压缩速度快,压缩后能保持信号与图像的特征基本不变,且在传递过程中可以抗干扰。关键词:小波分解;分解重构;高低频分量;图像压缩TheapplicationofRGBimage'sdecompositionandreconstructioninimagecompression**UsingMATLABwavelettoolboxisthewaytoachievetheimage'sdecompositionandreconstruction.Inordertoselectappropriateandeasywaytocompressatruecolor,exploringthehigh-low-frequencycomponentoftheRGBimageatdifferentscalesisaveryimportantsteptogothrough.Usingthismethodreferredabove,it'sobviousthattheimage'scompressionratioishigh,thecompressionspeedisratherfast,thecompressedsignalaswellasthecharacteristicsoftheimagecanbemaintainedsubstantiallyconstant,atthesametime,intheprocessoftransmission,thehandledimageshowsaverygoodcharacteristicofantijamming.Keywords:WaveletdecompositiondecompositionandreconstructionHighandlowfrequencycomponentsimagecompression引言小波变换是一种信号的时间——尺度分析方法,它继承和发展了短时傅立叶变换局部化的思想,具有多分辨率分析的特点,在时频两域都具有表征信号局部特征的能力,同时又克服了窗口大小不随频率变化等缺点,是一种窗口大小固定不变但其形状可变,时间窗和频率窗都可变的时频局部化分析方法。即再低频部分具有较高的频率分辨率和时间分辨率,在高频部分具有较高的时间分辨率和较低的频率分辨率,很适合探测正常信号中夹带的瞬态反常现象并展示其成分。小波分析就是把信号分解成低频al和高频dl两部分,在分解中,低频al中失去的信息由高频dl捕获。在下一层的分解中,又将al分解成低频a2和高频d2两部分,低频a2中失去的信息由高频d2捕获,如此类推下去,可以进行更深层次的分解。其中,二维小波函数是通过一维小波函数经过张量积变换得到的,二维小波函数分解是把尺度j的低频部分分解成四部分:尺度j+1的低频部分和三个方向(水平、垂直、斜线)的高频部分。它的主要特点是通过变换能够充分突出问题某些方面的特征,通过小波分解将图片的信息分层提取,重组后信息的丢失很少,重组时也能够将各分层的信息组合,也能实现重组后图像的伸缩(包括水平、垂直和对角方向)变换。对于图像来说,如果需要进行快速或实时传输以及大量存储,就需要对图像数据进行压缩。在同样的通信容量下,如果图像数据压缩后在传输,就可以传输更多的图像信息。一、算法及算法原理:尺度函数和小波的两尺度方程:kkkxpx)2()(kkkxqx)2()(从而:kkkzqzQ21)(kkkzpzP21)()()()()()(zQzQzPzPzM如果)(zM对于所有1z可逆,则有:)()()()()(1zHzHzGzGzMT由)(zG、)(zH可以求得kg、kh,从而得到Mal-lat快速算法。多分辨率分析:分解过程:重构过程:用公式可以表示为:分解过程:llknlnkcac,12,llknlnkcbd,12,其中:nnga21,nnhb21,cN-McN-M+1cN-1cN…dN-MdN-M+1dN-1cNcN-1cN-2cN-M…dN-1dN-2dN-M以直接生成原图像。称为小波系数,由其可nkc,lnknkxcxf)()(,,nknkfc,,,重构过程:llklnlklnnkdqcpc,2,2,1处理图像所用的函数:wavedec2函数:1.功能:实现图像(即二维信号)的多层分解,多层,即多尺度.2.格式:[c,s]=wavedec2(X,N,Lo_D,Hi_D)3.参数说明:对图像X用wname小波基函数实现N层分解,函数的输出为c,s.其中c为各层分解系数,s为各层分解系数长度,也就是大小.相应地wrcoef函数则是实现二维小波系数的单支重构,a指的是重构系数为低频。关于Matlab的说明:本次软件运行环境是:Matlab2009a,根据图像数据矩阵解释方法的不同,MATLAB把处理的图像分为三类:变址图像、灰度图像和真彩图像。真彩色是指在组成一幅彩色图像的每个像素值中,有R,G,B三个基色分量,每个基色分量直接决定显示设备的基色强度,这样产生的彩色称为真彩色。MATLAB中真彩图像存放的不同数据类型按数据精度分为双精度(double)和整数类(Unit8或Unit16)。当数据精度为double时图像矩阵X的数组大小为(m×n)×3,元素取值为[0,1]间的线性量化浮点数,直接决定色彩的强度,所需内存为64×(m×n)×3;像素pij的颜色有以下三色合成:X(i,j,1)决定红色强度,X(i,j,2)决定绿色强度,X(i,j,3)决定蓝色强度。二、小波分解、高低频分量影响探究:作图结果如下:像素490*368像素748*562三、探究总结:1、图像被分解的尺度越高,清晰度越差。2、低频反映的是图像的基本轮廓,而高频只是细节。3、图像的像素越大,对多尺度分解具有相当大的阻抗作用。高分辨率图像的清晰度随着分解尺度的加大,图像失真效果不明显。四、重构和分解程序程序:clc;clearall;X0=imread('d:\yangzhong.jpg');X=rgb2gray(X0);[c,s]=wavedec2(X,4,'sym5');a1=wrcoef2('a',c,s,'sym5',1);a2=wrcoef2('a',c,s,'sym5',2);a3=wrcoef2('a',c,s,'sym5',3);a4=wrcoef2('a',c,s,'sym5',4);subplot(4,2,1);image(a1);title('1尺度低频');boxoff;axisoff;subplot(4,2,2);image(a2);title('2尺度低频');boxoff;axisoff;subplot(4,2,3);image(a3);title('3尺度低频');boxoff;axisoff;subplot(4,2,4);image(a4);title('4尺度低频');boxoff;axisoff;%重构尺度为1时的高频各分量hd1=wrcoef2('h',c,s,'sym5',1);%重构尺度为1时的水平上的高平分量vd1=wrcoef2('v',c,s,'sym5',1);%重构尺度为1时的垂直上的高平分量dd1=wrcoef2('d',c,s,'sym5',1);%重构尺度为1时的对角上的高平分量%重构尺度为2时的高频各分量hd2=wrcoef2('h',c,s,'sym5',2);%重构尺度为2时的水平上的高平分量vd2=wrcoef2('v',c,s,'sym5',2);%重构尺度为2时的垂直上的高平分量dd2=wrcoef2('d',c,s,'sym5',2);%重构尺度为2时的对角上的高平分量%重构尺度为3时的高频各分量hd3=wrcoef2('h',c,s,'sym5',3);%重构尺度为3时的水平上的高平分量vd3=wrcoef2('v',c,s,'sym5',3);%重构尺度为3时的垂直上的高平分量dd3=wrcoef2('d',c,s,'sym5',3);%重构尺度为3时的对角上的高平分量%重构尺度为4时的高频各分量hd4=wrcoef2('h',c,s,'sym5',4);%重构尺度为4时的水平上的高平分量vd4=wrcoef2('v',c,s,'sym5',4);%重构尺度为4时的垂直上的高平分量dd4=wrcoef2('d',c,s,'sym5',4);%重构尺度为4时的对角上的高平分量%画出尺度为4时的高频各分量的图像subplot(4,2,5);imshow(X0);title('原始RGB图像');boxoff;axisoff;subplot(4,2,6);imshow(hd4);title('4尺度水平高频');boxoff;axisoff;subplot(4,2,7);imshow(vd4);title('4尺度垂直高频');boxoff;axisoff;subplot(4,2,8);imshow(dd4);title('4尺度对角高频');boxoff;axisoff;五、二维小波图像压缩实现:图像压缩的方法通常可分为有失真编码和无失真编码两大类:无失真编码方法如改进的霍夫曼编码。有失真编码方法的还原图像较之原始图像存在着一些误差,但视觉效果是可以接受的。常见的方法有预测编码、变换编码、量化编码、信息熵编码、分频带编码和结构编码等等。而将小波分析引入图像压缩的范畴也是一个重要的手段,并且有着它自己的特点。它的特点在于压缩比高、压缩速度快,压缩后能保持信号与图像的特征基本不变,且在传递过程中可以抗干扰等等。由原理可知,一个图像作小波分解后,可得到一系列不同分辨率的子图像,不同分辨率的子图像对应的频率是不相同的。结合上一步所做的分析可知:对于一个图像来说,表现一个图像的最主要的部分是低频部分,所以最简单的压缩方法是利用小波分解去掉图像的高频部分而只保留低频部分。压缩后所得结果:NameSizeByteClass压缩前图像256×256524288Doublearray第一次压缩图像135×135145800Doublearray第二次压缩图像75×7545000Doublearray结果分析:通过以上分析可以看出,第一次压缩我们是提取原始图像中小波分解第一层的低频信息,此时压缩效果较好,压缩比较小(约为1/3大小)。第二次压缩实提取第一层分解低频部分的低频部分(即第二层的低频部分),其压缩比较大(约为1/12),压缩效果在视觉上也基本还行。上面的保留原始图像中低频信息的压缩办法只是一种最简单的压缩办法。它不需经过其他处理即可获得较好的压缩效果。当然,对于上述的图像压缩还可以只提取小波分解的第三、第四层的低频信息。从理论上说,可以获得任意压缩比的压缩图像,只不过在对压缩比和图像质量都有较高要求时,这种方法就不如其他编码方法了。六、参考文献:[1]李涛、贺勇军、刘志俭等编,MATLAB工具箱应用指南,电子工业出版社,2000[2]尚涛、石端伟、安宁等,工程计算可视化与MATLAB实现,武汉大学出版社,2002[3]王爱玲、叶明生、邓秋香编著,MATLABR2007图像处理技术与应用,电子工业出版社,2008[4]陈武凡著.小波分析及其在图像处理中的应用.科学出版社.2002.4[5]冉启文著.小波变换与分数傅里叶变换理论及应用.哈尔滨工业大学出版社.2001七、附录程序:(图像压缩部分)clc;clear;%装入图像symsX;X=imread('d:\xuejing.jpg');disp('压缩前图像X的大小');whos('coast')%对图像用小波进行层小波分解[c,s]=wavedec2(X,2,'