小波变换与图像处理
(2009-04-15 16:55:01)
标签:
it |
①小波基本概念②图像压缩③图像消噪④图象增强⑤图象平滑处理
小波定义:设 ,其傅立叶变换为 ,当 满足允许条件,即完全重构条件或恒等分辨条件. 时,我们称 为一个基本小波或母小波,将母函数 经伸缩和平移后,得 。 我们称其为一个小波序列。其中a为伸缩因子,b为平移因子。
小波变换是一种信号的时间——尺度分析方法,他具有多分辨率分析的特点,而且在时频两域都具有表征信号局部特征的能力,是一种窗口大小固定不变但其形状可变,时间窗和频率窗都可变的时频局部化分析方法。即再低频部分具有较高的频率分辨率和时间分辨率,在高频部分具有较高的时间分辨率和较低的频率分辨率,很适合探测正常信号中夹带的瞬态反常现象并展示其成分,所以被誉为分析信号的显微镜。
波分析是把信号分解成低频al和高频dl两部分,在分解中,低频al中失去的信息由高频dl捕获。在下一层的分解中,又将al分解成低频a2和高频d2两部分,低频a2中失去的信息由高频d2捕获,如此类推下去,可以进行更深层次的分解。
二维小波函数是通过一维小波函数经过张量积变换得到的,二维小波函数分解是把尺度j的低频部分分解成四部分:尺度j+1的低频部分和三个方向(水平、垂直、斜线)的高频部分。
三:图像压缩
对于图像来说,如果需要进行快速或实时传输以及大量存储,就需要对图像数据进行压缩。在同样的通信容量下,如果图像数据压缩后在传输,就可以传输更多的图像信息。例如,用普通的电话线传输图像信息。图像压缩研究的就是寻找高压缩比的方法且压缩后的图像要有合适的信噪比,在压缩传输后还要恢复原信号,斌且在压缩、传输、恢复的过程中,还要求图像的失真度小。这就是图像压缩的研究问题。
由原理可知,一个图像作小波分解后,可得到一系列不同分辨率的子图像,不同分辨率的子图像对应的频率是不相同的。高分辨率(高频)子图像上大部分点的数值都接近于0,越是高就越是明显。而对于一个图像来说,表现一个图像的最主要的部分是低频部分,所以最简单的压缩方法是利用小波分解去掉图像的高频部分而只保留低频部分。
程序大致如下:
clear
%装入图像
load wbarb;
%显示图像
subplot(221);
image(coast);
colormap(map)
title('原始图像');
axis square
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);
axis square;
title ('分解后低频和高频信息');
%进行图像压缩
%保留小波分解第一层低频信息
%首先对第一层信息进行量化编码
ca1=appcoef(c,s,'bior3.7',1);
ca1=wcodemat(ca1,440,'mat',0);
%改变图像高度并显示
ca1=0.5*ca1;
subplot(223);
image(ca1);
colormap(map);
axis square;
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);
axis square;
title('第二次压缩图像');
disp('第二次压缩图像的大小为:');
whos('ca2')
输出结果如图:
压缩前图像
第一次压缩图像
在这里可以看出,第一次压缩我们是提取原始图像中小波分解第一层的低频信息,此时压缩效果较好,压缩比较小(约为1/3大小)。第二次压缩实提取第一层分解低频部分的低频部分(即第二层的低频部分),其压缩比较大(约为1/12),压缩效果在视觉上也基本过得去。
下面我们在举一个例子,这一次用 中函数来对上图进行压缩。
Clear;
%装入图形信号
load wbarb;
%显示图像
subplot(221);
image(X);
colormap(map);
title('原始图像');
disp('压缩前图像的大小');
whos('X');
axis square;
%对图像进行压缩
%对图像用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)
(2)
(3)
在这三个步骤中,重点内容就是如何选取阀值和如何进行阀值的量化。请注意,
了一维信号自动消噪的情况,对于其他的情况,一维信号的消噪和压缩用的是wdencmp, 这对于二维信号也是一样的。
给定一个有较大白噪声的图象,利用二维小波分析进行信号消噪处理。
分析:由于图象所含的噪声主要是白噪声,且集中于高部分,故用第通实现消去噪声。程
序如下。
load tire;
subplot(221);
image(X);
colormap(map);
title('原图 ');
axis
square;
init=2055615866;
randn('seed',init)
x=X+38*randn(size(X));
subplot(222);
image(x);
colormap(map);
title('含噪声图象 ');
axis square; %画出含噪声图象
[c,s]=wavedec2(x,2,'sym4');
a1=wrcoef2('a',c,s,'sym4',1); %第一次低通滤波消噪
subplot(223);
image(a1);
title('第一次消噪后图象 ');
axis
square;
a2=wrcoef2('a',c,s,'sym4',2); %第二次低通滤波消噪
subplot(224);
image(a2);
title('第二次消噪后图象 ');
axis square; %画出第二次低通滤波消噪后图象
分析: 第一次消噪滤去了大部分高频噪声,但与原图比较,依然有不少高频噪声,第二次消噪在第一次消噪基础上,再次滤去高频噪声,消噪效果较好,但图像质量比原图稍差。
小波变换将一幅图象分解为大小、位置和方向都不同的分量。在做逆变换之前可以改变小波变换域中某些系数的大小,这样就能够洋选择的放大所感兴趣的分量而减小不需要的分量。
编程:
给定一个图象信号,用二维小波分析对图象进行增强处理。
subplot(121);
image(X);
colormap(map);
title(‘原始图象‘);
axis square; %画出原图象
[c,s]=wavedec2(X,2,’sym4’);
sizec=size(c); %处理分解系数,突出轮廓,弱化细节
for I =1:sizec(2)
if(c( I )>350)
else
end
end
xx=waverec2(c,s,’sym4’); %分解系数重构
subplot(122);
image(xx);
title(‘增强图象‘)
axis square; %画出增强图像
结果分析:
打到了图像增强的效果,试图像对比更加明显,但由于细节上的弱化,却使得图像产生模糊的感觉。就那妇女托着下腮的手来说,增强后的图像几乎就不能辨认。手指更是消失了。
六:图象融合
图象融合是将同一对象的两个或更多的图象合成在一幅图象中,以便他比原来的任何一幅更能容易的为人们所理解。真一技术可应用于多频谱图象理解以及医学图象处理等领域,再这些场合,同一物体部件的图象往往是采用不同的成象机理得到的。
编程:
用二维小波分析将两幅图象融合在一起。
处理过程如下:
load woman; %装入原图像
X1=X;map1=map;
subplot(221);
image(X1);
colormap(map1);
title(‘woman’);
axis
square
load
wbarb;
X2=X;map2=map;
for I =1:256
for j=1:256
end
end
subplot(222);
image(X2);
colormap(map2);
title(‘wbarb’);
axis square %画出wbarb图像
[cl,sl]=wavedec2(X1,2,’sym4’);
sizec1=size(c1);
for I=1:sizec1(2)
end
[c2,s2]=wavedec2(X2,2,’sym4’);
c=c1+c2;
c=0.5*c;
xx=waverec2(c,s,’sym4’);
subplot(223);image(xx);
title(‘融合图象‘);
axis
square
结果分析:
一幅图像和他某一部分放大后的图像融合,融合后的图像给人一种朦朦胧胧梦幻般的感觉,对较深的背景部分则做了淡化处理。
七:图象平滑处理
图像平滑的主要目的是为了减少噪声,一般情况下,在空间域内可以用于平均来减少噪声。在频率域,因为噪声浦多在高频段,因此可以曹用各种形式的低通滤波的办法来减少噪声。
给定一个含噪声的图象,用二维小波分析和图象的中值滤波进行图象的平滑。
[分析]这是一个图象平滑处理问题。首先,对图象在频域内进行增强,然后在空域内加入较大的白噪声。通过对含噪图象进行平滑处理,即可以使含噪图象具有较好的平滑效果。具体处理过程如下:
load
woman;
X1=X;
map1=map;
subplot(221);
image(X1);
colormap(map1);
title('woman');
axis
square
[c,s]=wavedec2(X,2,’sym4’);
sizec=size( c );
for I= 1:sizec(2) %频域里增强图像
end
xx=waverec(c,s,’sym4’); %系数重构
init=2788605826; %加入噪声
rand(‘seed’,init);
xx=xx+68*(rand(size(xx)));
subplot(221);image(xx);
title(‘增强的含噪图象‘);
axis square;
for I=2:1:255 %中值滤波
for m=1:3
end
temp=temp/9;
xx(I, j)=temp;
end
end
colormap(map);
subplot(222);
image(xx);
axis square;
title(‘平滑后的图象‘);
axis
square
结果分析:
平滑后的图像没有原图清晰,但边缘轮廓过渡更自然,消噪的效果还是比较明显的,噪声图像中的一些粒状颗粒在平滑后基本消失。
函数名
dwt2单层二维小波分解
appcoef2
wthcoef2二维信号的小波系数阈值处理
ddencmp获取在消噪或压缩过程中的默认值阈值
wdencmp用小波进行信号的消噪和压缩