基于Matlab的小波分析与设计 下载本文

淮南师范学院2012届本科毕业论文

13

图像对比如图所示。可以看出,第一次压缩提取的是原始图像中小波分解第一层的低频信息,此时压缩效果较好,压缩比较小(约为1/3):第二次压缩是提取第一层分解低频部分的低频部分(即小波分解第二层的低频部分),其压缩比较大(约为1/12),压缩效果在视觉上也基本过的去。这是一种最简单的压缩方法,只保留原始图像中低频信息,不经过其他处理即可获得较好的压缩效果。在上面的例子中,我们还可以只提取小波分解第3、4、?层的低频信息。从理论上说,我们可以获得任意压缩比的压缩图像。 3.2小波分析用于图像去噪

一般来说,现实中的图像都是带噪图像,所以为了后续更高层次的处理,很有必要对图像进行去噪。图像去噪的目的就是为了在减少图像噪声的同时,尽可能多的保持图像的特征信息。图像噪声来自于多方面,有的来自于系统外部干扰,也有的来自于系统内部的干扰。图像去噪存一个如何兼顾降低图像噪声和保留细节的难题。传统的低通滤波方法在消除图像噪声的同时,也会消除图像部分有用的高频信息,所以传统的低通滤波方法在对保留图像细节的要求方面没有碍到满意的效果。而对以小波变换的图像去噪它较之只能提取出函数在整个频率轴上的频率信息,却不能反映信号在局部时间范围内的特征傅立叶变换,在时域和频域同时具有良好的局部化性质,且对于高频成分采用逐渐精细的时频取样步长,从而可以充分突出研究对象的任何细节。小波变换的这种特点非常符合图像去嗓中保留图像细节方面的要求,并且以其低熵性、多分辨率、去相关性、选基灵活性等优点,在图像降噪处理中得到越来越广泛的应用。

对二维图像信号的去噪方法同样适用于一维信号,尤其是对于几何图像更适合。二维模型可以表述为

s(i,j)=f( i,j)+δ·e(i,j) i,j=0,1,?,m-1

其中,e是标准偏差不变的高斯白噪声。二维信号用二维小波分析的去噪步骤有3步:

(1)二维信号的小波分解。选择一个小波和小波分解的层次N,然后计算信号s到第N层的分解。

(2)对高频系数进行阈值量化。对于从1到N的每一层,选择一个阈值,并对这一层的高频系数进行软阈值量化处理。

(3)二维小波的重构。根据小波分解的第N层的低频系数和经过修改的从第一层到第N层的各层高频系数计算二维信号的小波重构。

13

基于Matlab的小波分析与设计 14

在这3个步骤中,重点是如何选取阈值和阈值的量化

下面给出一个二维信号(文件名为detfinger.mat),并利用小波分析对信号进行去噪处理。Matlab的去噪函数有ddencmp,wdencmp等,其去噪过程可以按照如下程序进行。 load tire

%下面进行早声的产生 init=3718025452; rand('seed',init);

Xnoise=X+18*(rand(size(X))); %显示原始图像及它的含噪声的图像 colormap(map);

subplot(2,2,1);image(wcodemat(X,192)); title('原始图像X') axis square

subplot(2,2,2);image(wcodemat(X,192)); title('含噪声的图像Xnoise'); axis square

%用sym5小波对图像信号进行二层的小波分解 [c,s]=wavedec2(X,2,'sym5'); %下面进行图像的去噪处理

%使用ddencmp函数来计算去噪的默认阈值和熵标准 %使用wdencmp函数来实现图像的压缩

[thr,sorh,keepapp]=ddencmp('den','wv',Xnoise);

[Xdenoise,cxc,lxc,perf0,perfl2]=wdencmp('gbl',c,s,'sym5',2,thr,sorh,keepapp);

%显示去噪后的图像

subplot(223);image(Xdenoise); title('去噪后的图像'); axis square 输出的结果如下图,

14

淮南师范学院2012届本科毕业论文

15

图3 图像去噪

从图上可以看出Matlab中的ddencmp和wdencmp函数可以有效地进行去噪处理。 如果有一个较大白噪声的图像。由于图像所含的噪声主要是白噪声,而且主要集中在图像的高频部分,所以我们可以通过全部滤掉图像中的高频部分实现图像的去噪。具体去噪过程可按照如下程序进行。

load wmandril; %画出原始图像

subplot(221);image(X);colormap(map); title('原始图像'); axis square %产生含噪图像

init=2055615866;randn('seed',init) x=X+38*randn(size(X)); %画出含噪图像

15

基于Matlab的小波分析与设计 16

subplot(222);image(x);colormap(map); title('含噪声图像'); axis square;

%下面进行图像的去噪处理

%用小波函数sym4对x进行2层小波分解 [c,s]=wavedec2(x,2,'sym4');

%提取小波分解中第一层的低频图像,即实现了低通滤波去噪 a1=wrcoef2('a',c,s,'sym4'); %画出去噪后的图像 subplot(223);image(a1); title('第一次去噪图像'); axis square;

%提取小波分解中第二层的低频图像,即实现了低通滤波去噪 %相当于把第一层的低频图像经过再一次的低频滤波处理 a2=wrcoef2('a',c,s,'sym4',2); %画出去噪后的图像

subplot(224);image(a2);title('第二次去噪图像'); axis square;

enter键之后输出结果如下图所示:

16