二维小波分析在图像中的具体应用.docx
《二维小波分析在图像中的具体应用.docx》由会员分享,可在线阅读,更多相关《二维小波分析在图像中的具体应用.docx(9页珍藏版)》请在冰豆网上搜索。
二维小波分析在图像中的具体应用
从二维小波理论出发,对其在图像处理的应用上进行了一些分析和处理,力图反映出小波分析在图像处理方面有着其独特的特点。
三:
图像压缩
对于图像来说,如果需要进行快速或实时传输以及大量存储,就需要对图像数据进行压缩。
在同样的通信容量下,如果图像数据压缩后在传输,就可以传输更多的图像信息。
例如,用普通的电话线传输图像信息。
图像压缩研究的就是寻找高压缩比的方法且压缩后的图像要有合适的信噪比,在压缩传输后还要恢复原信号,斌且在压缩、传输、恢复的过程中,还要求图像的失真度小。
这就是图像压缩的研究问题。
图像数据往往存在各种信息的冗余、如空间冗余、信息熵冗余、视觉冗余和结构冗余等等。
所谓压缩就是去掉各种冗余,保留对我们有用的信息。
图像压缩的过程常称为编码。
相对的,图像的恢复当然就是解码了。
图像压缩的方法通常可分为有失真编码和无失真编码两大类:
无失真编码方法如改进的霍夫曼编码。
有失真编码方法的还原图像较之原始图像存在着一些误差,但视觉效果是可以接受的。
常见的方法有预测编码、变换编码、量化编码、信息熵编码、分频带编码和结构编码等等。
而将小波分析引入图像压缩的范畴也是一个重要的手段,并且有着它自己的特点。
它的特点在于压缩比高、压缩速度快,压缩后能保持信号与图像的特征基本不变,且在传递过程中可以抗干扰等等。
下面我们就举一个粒子来说明怎样用小波分析进行图像压缩。
例如现在有一个二维图像(文件名为),我们利用二维小波分析来进行图像压缩。
由原理可知,一个图像作小波分解后,可得到一系列不同分辨率的子图像,不同分辨率的子图像对应的频率是不相同的。
高分辨率(高频)子图像上大部分点的数值都接近于0,越是高就越是明显。
而对于一个图像来说,表现一个图像的最主要的部分是低频部分,所以最简单的压缩方法是利用小波分解去掉图像的高频部分而只保留低频部分。
程序大致如下:
clear
%装入图像
loadwbarb;
%显示图像
symsX;
subplot(221);
image(coast);
colormap(map)
title('原始图像');
axissquare
disp('压缩前图像X的大小');
whos('coast')
%对图像用小波进行层小波分解
[c,s]=wavedec2(X,2,'bior3.7');
%提取小波分解结构中的一层的低频系数和高频系数
cal=appcoef2(c,s,'bior3.7',1);
%水平方向
ch1=detcoef2('h',c,s,1);
%垂直方向
cv1=detcoef2('v',c,s,1);
%斜线方向
cd1=detcoef2('d',c,s,1);
%各频率成份重构
a1=wrcoef2('a',c,s,'bior3.7',1);
h1=wrcoef2('h',c,s,'bior3.7',1);
v1=wrcoef2('v',c,s,'bior3.7',1);
d1=wrcoef2('d',c,s,'bior3.7',1);
c1=[a1,h1;v1,d1];
%显示分频信息
subplot(222);
image(c1);
axissquare;
title('分解后低频和高频信息');
%进行图像压缩
%保留小波分解第一层低频信息
%首先对第一层信息进行量化编码
ca1=appcoef(c,s,'bior3.7',1);
ca1=wcodemat(ca1,440,'mat',0);
%改变图像高度并显示
ca1=0.5*ca1;
subplot(223);
image(ca1);
colormap(map);
axissquare;
title('第一次压缩图像');
disp('第一次压缩图像的大小为:
');
whos('ca1')
%保留小波分解第二层低频信息进行压缩
ca2=appcoef2(c,s,'bior3.7',2);
%首先对第二层信息进行量化编码
ca2=wcodemat(ca2,440,'mat',0);
%改变图像高度并显示
ca2=0.25*ca2;
subplot(224);
image(ca2);
colormap(map);
axissquare;
title('第二次压缩图像');
disp('第二次压缩图像的大小为:
');
whos('ca2')
输出结果如图:
Name
Size
Bytes
class
压缩前图像
X
256×256
524288
Doublearray
第一次压缩图像
Ca1
135×135
145800
Doublearray
第二次压缩图像
Ca2
75×75
45000
Doublearray
在这里可以看出,第一次压缩我们是提取原始图像中小波分解第一层的低频信息,此时压缩效果较好,压缩比较小(约为1/3大小)。
第二次压缩实提取第一层分解低频部分的低频部分(即第二层的低频部分),其压缩比较大(约为1/12),压缩效果在视觉上也基本过得去。
上面的保留原始图像中低频信息的压缩办法只是一种最简单的压缩办法。
它不需经过其他处理即可获得较好的压缩效果。
当然,对于上面的例子我们还可以只提取小波分解的第三、第四层的低频信息。
从理论上说,我们可以获得任意压缩比的压缩图像。
只不过在对压缩比和图像质量都有较高要求时,它就不如其他编码方法了。
下面我们在举一个例子,这一次用中函数来对上图进行压缩。
Clear;
%装入图形信号
loadwbarb;
%显示图像
subplot(221);
image(X);
colormap(map);
title('原始图像');
disp('压缩前图像的大小');
whos('X');
axissquare;
%对图像进行压缩
%对图像用db3小波进行二层小波分解
[c,s]=wavedec2(X,5,'db3');
[thr,sorh,keepapp]=ddencmp('cmp','wv',X);
[Xcomp,cxc,lxc,perf0,perfl2]=wdencmp('gbl',c,s,'db3',5,thr,sorh,keepapp);
%将压缩后的图像于原始图像相比较
subplot(222);
image(Xcomp);
colormap(map);
title('压缩后的图像');
disp('压缩后图像的大小');
whos('Xcomp')
%显示有关参数
disp('小波分解系数中值为0的系数个数百分比');
disp(perf0);
disp('压缩后剩余能量百分比');
disp(perfl2);
输出结果如下:
小波分解系数中值为0的系数个数百分比:
49.8088
压缩后剩余能量百分比:
99.9754
总之,是事无绝对。
一种压缩图像的方法不可能尽善尽美。
要想很好的进行图像的压缩,就需要综合的利用多种其他技术,特别是数据编码和解码算法。
四:
图像消噪
图像消噪方法的一般说明
对二维图像信号的消噪方法同样适用于一维信号,尤其是对于几何图像更适合。
二维模型可以表述为
其中,e是标准偏差不变得高斯白噪声。
二维信号的消噪步骤与一维信号的消噪步骤完全相同,也有三步,只是用二维小波分析工具代替了一维小波分析工具。
如果用固定的阀值形式,测选择的阀值用m^2代替了一维信号中的n。
着三步是:
1.二维信号的小波分解。
选择一个小波和小波分解的层次N,然后计算信号s到第N层的分解。
2.对高频系数进行阀值量化。
对于从一到N的每一层,选择一个阀值,斌对着一层的高频系数进行软阀值化处理。
3.二维小波的重构。
根据小波分解的第N层的低频系数和经过修改的从第1层到第N层的各层高频系数,来计算二维信号的小波重构。
在这三个步骤中,重点内容就是如何选取阀值和如何进行阀值的量化。
请注意,
了一维信号自动消噪的情况,对于其他的情况,一维信号的消噪和压缩用的是wdencmp,这对于二维信号也是一样的。
编程
给定一个有较大白噪声的图象,利用二维小波分析进行信号消噪处理。
分析:
由于图象所含的噪声主要是白噪声,且集中于高部分,故用第通实现消去噪声。
程序如下。
loadtire;
subplot(221);
image(X);
colormap(map);
title('原图');
axissquare;%画出原图象
init=2055615866;
randn('seed',init)
x=X+38*randn(size(X));
subplot(222);
image(x);
colormap(map);
title('含噪声图象');
axissquare;%画出含噪声图象
[c,s]=wavedec2(x,2,'sym4');
a1=wrcoef2('a',c,s,'sym4',1);%第一次低通滤波消噪
subplot(223);
image(a1);
title('第一次消噪后图象');
axissquare;%画出第一次低通滤波消噪后图象
a2=wrcoef2('a',c,s,'sym4',2);%第二次低通滤波消噪
subplot(224);
image(a2);
title('第二次消噪后图象');
axissquare;%画出第二次低通滤波消噪后图象
分析:
第一次消噪滤去了大部分高频噪声,但与原图比较,依然有不少高频噪声,第二次消噪在第一次消噪基础上,再次滤去高频噪声,消噪效果较好,但图像质量比原图稍差。
六:
图象融合
说明
图象融合是将同一对象的两个或更多的图象合成在一幅图象中,以便他比原来的任何一幅更能容易的为人们所理解。
真一技术可应用于多频谱图象理解以及医学图象处理等领域,再这些场合,同一物体部件的图象往往是采用不同的成象机理得到的。
编程:
用二维小波分析将两幅图象融合在一起。
处理过程如下:
loadwoman;%装入原图像
X1=X;map1=map;
subplot(221);
image(X1);
colormap(map1);
title(‘woman’);
axissquare;%画出woman图像
loadwbarb;%装入原图像
X2=X;map2=map;
forI=1:
256
forj=1:
256
if(X2(I,j)>100)
X2(I,j)=1.2*X2(I,j);
else
X2(I,j)=0.5*X2(I,j);
end
end
end
subplot(222);
image(X2);
colormap(map2);
title(‘wbarb’);
axissquare;%画出wbarb图像
[cl,sl]=wavedec2(X1,2,’sym4’);
sizec1=size(c1);
forI=1:
sizec1
(2)
c1(I)=1.2*c1(I);
end
[c2,s2]=wavedec2(X2,2,’sym4’);
c=c1+c2;
c=0.5*c;
xx=waverec2(c,s,’sym4’);
subplot(223);image(xx);
title(‘融合图象‘);
axissquare;%画出融合后的图像
结果分析:
一幅图像和他某一部分放大后的图像融合,融合后的图像给人一种朦朦胧胧梦幻般的感觉,对较深的背景部分则做了淡化处理。
七:
图象平滑处理
说明
图像平滑的主要目的是为