基于Matlab的小波分析与设计 联系客服

发布时间 : 星期日 文章基于Matlab的小波分析与设计更新完毕开始阅读

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

17

图4:滤高频去噪

从上面的输出结果可以看出,第一次去噪已经滤去了大部分的高频噪声,但从去噪图像与原始图像相比可以看书,第一次去噪后的图像中还是含有不少的高频噪声;第二次去噪是在第一次去噪的基础上,再次滤去其中的高频噪声。从去噪的结果可以看出,它具有较好的去噪效果。 3.3小波分析用于图像增强

小波分析在二维信号(图像)处理方面的优点主要体现在其时频分析特性,前面介绍了一些基于这种特性的一些应用的实例,但对二维信号小波系数的处理方法只介绍了阈值化方法一种,下面我将介绍一下以前在一维信号中用到的抑制系数的方法,这种方法在图像处理领域主要应用于图像增强。

图像增强问题的基本目标是对图像进行一定的处理,使其结果比原图更适用于特定的应用领域,这里“特定”这个词非常重要,因为几乎所有的图像增强问题都是与问题背景密切相关的,脱离了问题本身的知识,图像的处理结果可能并不一定适用,比如某种方法可能非常适用于处理X射线图像,但同样的方法可能不一定也适用于火星探测图

17

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

像。

在图像处理领域,图像增强问题主要通过时域(沿用信号处理的说法,空域可能对图像更适合)和频域处理两种方法来解决。时域方法通过直接在图像点上作用算子或掩码来解决,频域方法通过修改傅立叶变换系数来解决。这两种方法的优劣很明显,时域方法方便快速但会丢失很多点之间的相关信息,频域方法可以很详细地分离出点之间的相关,但需要做两次数量级为nlogn的傅立叶变换和逆变换的操作,计算量大得多。

小波分析是以上两种方法的权衡结果,建立在如下的认识基础上,傅立叶分析的在所有点的分辨率都是原始图像的尺度,但对于问题本身的要求,我们可能不需要这么大的分辨率,而单纯的时域分析又显得太粗糙,小波分析的多尺度分析特性为用户提供了更灵活的处理方法。可以选择任意的分解层数,用进可能少的计算量得到我们满意的结果。小波变换将一幅图像分解为大小、位置和方向都不同的分量。在做逆变换之前可以改变小波变换域中某些系数的大小,这样就能够有选择地放大所感兴趣的分量而减小不需要的分量。下面运用一个实例来阐述。

给定一个wmandril.mat图像信号。由于图像经二维小波分解后,图像的轮廓主要体现在低频部分,细节部分体现在高频部分,因此可以通过对低频分解系数进行增强处理,对高频分解系数进行衰减处理,从而达到图像增强的效果。具体程序清单如下:

load wmandril %画出原始图像

subplot(221);image(X);colormap(map); title('原始图像'); axis square

%下面进行图像的增强处理

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

%对分解系数进行处理以突出轮廓部分,弱化细节部分 for i=1:sizec(2) if(c(i)>350) c(i)=2*c(i);

18

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

19

else

c(i)=0.5*c(i); end end

%下面对处理后的系数进行重构 xx=waverec2(c,s,'sym4'); %画出重构后的图像 subplot(222);image(xx); colormap(map); title('增强图像'); axis square 结果如下图所示

图5:图像增强

图像增强有钝化和锐化,本小节将讨论这两种方法。其中钝化操作主要是提出图像中的低频成分,抑制尖锐的快速变化成分,锐化操作正好相反,将图像中尖锐的部分进可能得提取出来,用于检测和识别等领域。下面将以例子说明这两种方法在Matlab中的实现,并对于基于傅立叶变换的传统频域方法同小波方法做一下比较。 3.3.1图像钝化

图像钝化在时域中的处理相对简单,只需要对图像作用一个平滑滤波器,使得图像

19

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

中的每个点与其相邻点做平滑即可.

下面我们以chess信号为例,通过两种方法对图像钝化的结果做一下比较。 load chess

%分别保存用DCT方法和小波方法的变换系数 blur1=X; blur2=X;

%对原图像做二维离散余弦变换 ff1=dct2(X);

%对变换结果在频域做BUTTERWORTH滤波 for i=1:256 for j=1:256

ff1(i,j)=ff1(i,j)/(1+((i*j+j*j)/8192)^2); end end

%重建变换后的图像 blur1=idct2(ff1);

%对图像做2层的二维小波分解 [c,l]=wavedec2(X,2,'db3'); csize=size(c);

%对低频系数进行放大处理,并抑制高频系数 for i=1:csize(2); if(c(i)>300) c(i)=c(i)*2; else

c(i)=c(i)/2; end end

%通过处理后的小波系数重建图像 blur2=waverec2(c,l,'db3');

20