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

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

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

9

C是一个与信号无关的常数。然而,怎样选择a0和b0,才能够保证重构信号的精度呢?显然,网格点应尽可能密(即a0和b0尽可能小),因为如果网格点越稀疏,使用的小波函数?j,k(t)和离散小波系数Cj,k就越少,信号重构的精确度也就会越低。 2.2.3小波包分析

短时傅立叶变换对信号的频带划分是线性等间隔的。多分辨分析可以对信号进行有效的时频分解,但由于其尺度是按二进制变化的,所以在高频频段其频率分辨率较差,而在低频频段其时间分辨率较差,即对信号的频带进行指数等间隔划分(具有等Q结构)。小波包分析能够为信号提供一种更精细的分析方法,它将频带进行多层次划分,对多分辨率分析没有细分的高频部分进一步分解,并能够根据被分析信号的特征,自适应地选择相应频带,使之与信号频谱相匹配,从而提高了时-频分辨率,因此小波包具有更广泛的应用价值。

关于小波包分析的理解,我们这里以一个三层的分解进行说明,其小波包分解树如图

AAA3 S A1 AA2 DAA3 ADA3 DA2 DDA3 AD2 AAD3 DAA3 D1 DD2 ADD3 DDD3 图1小波包分解树

图1中,A表示低频,D表示高频,末尾的序号数表示小波分解的层树(也即尺度数)。分解具有关系:

S=AAA3+DAA3+ADA3+DDA3+AAD3+DAA3+ADD3+DDD3

3小波分析在图像处理中的应用 3.1小波分析用于图像压缩

基于离散余弦变换的图像压缩算法,其基本思想是在频域对信号进行分解,驱除信号点之间的相关性,并找出重要系数,滤掉次要系数,以达到压缩的效果,但该方法在处理过程中并不能提供时域的信息,在我们比较关心时域特性的时候显得无能为力。

但是这种应用的需求是很广泛的,比如遥感测控图像,要求在整幅图像有很高压缩

9

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

比的同时,对热点部分的图像要有较高的分辨率,例如医疗图像,需要对某个局部的细节部分有很高的分辨率,单纯的频域分析的方法显然不能达到这个要求,虽然可以通过对图像进行分快分解,然后对每块作用不同的阈值或掩码来达到这个要求,但分块大小相对固定,有失灵活。

在这个方面,小波分析就优越的多,由于小波分析固有的时频特性,我们可以在时频两个方向对系数进行处理,这样就可以对我们感兴趣的部分提供不同的压缩精度。

对于图像压缩我们可以用二维小波来分析。它的特点是压缩比高,压缩速度快,压缩后能保持图像的特征基本不变,且在传递过程中可以抗干扰。小波分析用于图像压缩具有明显的优点。

下面给出一个图像信号(即一个二维信号,文件名为wbarb.mat),利用二维小波分析对图像进行压缩。一个图像作小波分解后,可得到一系列不同分辨率的子图像,不同分辨率的子图像对应的频率是不相同的。高分辨率(即高频)子图像上大部分点的数值都接近于0,越是高频这种现象越明显。对一个图像来说,表现一个图像最主要的部分是低频部分,所以一个最简单的压缩方法是利用小波分解,去掉图像的高频部分而只保留低频部分。图像压缩可按如下程序进行处理。

在matlab界面中输入如下代码 load wbarb;

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

disp('压缩前图像X的大小:'); whos('X')

[c,s]=wavedec2(X,2,'bior3.7');%对图像用bior3.7小波进行2层小波分解 ca1=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);

10

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

11

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,显示第一层的低频信息 %首先对第一层信息进行量化编码 ca1=appcoef2(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,显示第二层的低频信息 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')

按enter键输出结果如下:

11

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

压缩前图像X的大小:

Name Size Bytes Class X 256x256 524288 double array Grand total is 65536 elements using 524288 bytes 第一次压缩图像的大小为:

Name Size Bytes Class ca1 135x135 145800 double array Grand total is 18225 elements using 145800 bytes 第二次压缩图像的大小为:

Name Size Bytes Class ca2 75x75 45000 double array Grand total is 5625 elements using 45000 bytes

图2 图像压缩

12