电脑桌面
添加蜗牛文库到电脑桌面
安装后可以在桌面快捷访问

小波变换 matlab 总结范文

栏目:合同范文发布:2025-01-29浏览:1收藏

小波变换 matlab 总结范文

第一篇:小波变换 matlab 总结范文

小波变换matlab总结 目录

一、预置工具...........................................................................................................................4

1.预置信号......................................................................................................................4 2.预置小波......................................................................................................................4 3.滤波器函数..................................................................................................................6

wfilters函数.......................................................................................................6 4.量化编码......................................................................................................................6

wcodemat函数.......................................................................................................6 5.阈值获取......................................................................................................................6

ddencmp函数.........................................................................................................6 thselect函数.......................................................................................................7 wbmpen函数...........................................................................................................7 wdcbm函数..............................................................................................................7 6.阈值去噪......................................................................................................................8

wden函数................................................................................................................8 wdencmp函数.........................................................................................................8 wthresh函数.........................................................................................................9 wthcoef函数.........................................................................................................9 wpdencmp函数.......................................................................................................9

二、小波变换函数.................................................................................................................12

单尺度一维小波变换.....................................................................................................12

cwt一维连续小波变换.........................................................................................12 dwt一维离散小波变换.........................................................................................12 idwt一维离散小波逆变换..................................................................................13 upcoef 一维小波系数重构................................................................................13 多尺度一维小波变换.....................................................................................................14

wavedec多尺度一维分解...................................................................................14 waverec多尺度一维重构...................................................................................15 appcoef低频系数提取.......................................................................................16 detcoef高频系数提取.......................................................................................16 wrcoef多尺度小波系数重构.............................................................................17 一维静态(平稳)小波变换.........................................................................................18

swt一维平稳小波变换.........................................................................................18 iswt一维平稳小波逆变换..................................................................................18 实例.........................................................................................................................19 单尺度二维小波变换.....................................................................................................19

dwt2二维离散小波变换......................................................................................19 idwt2二维离散小波逆变换................................................................................20 upcoef2二维系数重构.......................................................................................20 多尺度二维小波变换.....................................................................................................21

wavedec2多尺度二维分解.................................................................................21 waverec2多尺度二维重构.................................................................................22 appcoef2低频系数提取.....................................................................................23 detcoef2高频系数提取.....................................................................................23 wrcoef2多尺度小波系数重构...........................................................................24 二维静态(平稳)小波变换.........................................................................................26

swt2二维静态小波变换......................................................................................26 iswt2二维静态小波逆变换................................................................................26 实例.........................................................................................................................26 直接调用的小波函数.....................................................................................................28

meyer函数............................................................................................................28 cgauwavf函数.....................................................................................................28 mexihat函数.......................................................................................................28 morlet函数.........................................................................................................29 symwavf函数.......................................................................................................29

三、图像接口调用.................................................................................................................30

使用图形接口做一维连续小波分析.....................................................................30 使用图形接口做一维离散小波分析.....................................................................33 使用图形接口分析复信号.....................................................................................36 使用图形接口做一维除噪分析.............................................................................36

四、小波变换在图像处理中的应用.....................................................................................40

4.1 小波分析用于图像压缩........................................................................................40

4.1.1 基于小波变换的图像局部压缩...............................................................40 4.1.2 小波变换用于图像压缩的一般方法.......................................................41 4.1.3 基于小波包变换的图像压缩...................................................................45 4.2 小波分析用于图像去噪........................................................................................47

小噪声阈值去噪.....................................................................................................48 大噪声滤波去噪.....................................................................................................49 少量噪声的小波分解系数阈值量化去噪.............................................................50 4.3 小波分析用于图像增强........................................................................................52

4.3.1 图像增强问题描述...................................................................................52 4.3.2 图像钝化...................................................................................................53 4.3.3 图像锐化...................................................................................................54 4.4 小波分析用于图像融合........................................................................................56 4.5 小波分析用于图像分解........................................................................................57

一、预置工具 1.预置信号

Matlab 内置了大量的信号实例,进行信号试验的时候可以调用。调用格式:load signal matlab安装目录的toolbox/wavelet/wavedemo noissin 包含噪声的正弦波

leleccum一维电压信号,有365560个采样点 wbarb 专指图片:

2.预置小波

Matlab预置了共计15种小波。查看语句:wavemngr('read',1)查看单个小波:waveinfo('wname')

1.Haar小波 小波名haar

2.Daubechies小波系 小波名db 调用名db1db2db3db4 db5 db6 db7 db8 db9 db10

3.对称小波系Symlets 小波名sym 调用名sym2sym3 sym4 sym5 sym6 sym7 sym8

4.Coiflets 小波系 小波名coif 调用名 coif1coif2coif3coif4coif5 5.Biorthogonal小波系 小波名bior 调用名bior1.1 bior1.3 bior1.5 bior2.2 bior2.4 bior2.6 bior2.8 bior3.1 bior3.3 bior3.5 bior3.7 bior3.9 bior4.4 bior5.5 bior6.8

6.ReverseBior小波系 小波名rbio 调用名rbio1.1 rbio1.3 rbio1.5 rbio2.2 rbio2.4 rbio2.6 rbio2.8 rbio3.1 rbio3.3 rbio3.5 rbio3.7 rbio3.9 rbio4.4 rbio5.5 rbio6.8

7.Meyer小波 小波名meyr

8.Dmeyer小波 小波名dmey

9.Gaussian小波系 小波名gaus 调用名gaus1gaus2gaus3gaus4gaus5gaus6gaus7gaus8

10.Mexican hat小波 小波名mexh

11.Morlet小波 小波名morl

12.Complex Gaussian小波系 小波名cgau 调用名cgau1cgau2cgau3cgau4cgau5 cgau

13.Shannon小波系 小波名shan 调用名shan1-1.5shan1-1shan1-0.5shan1-0.1shan2-3

14.Frequency B小波系 小波名fbsp 调用名fbsp1-1-1.5fbsp1-1-1fbsp1-1-0.5fbsp2-1-1fbsp2-1-0.5fbsp2-1-0.1

15.Complex Morlet小波系 小波名cmor 调用名cmor1-1.5cmor1-1cmor1-0.5cmor1-1cmor1-0.5cmor1-0.1 3.滤波器函数 wfilters函数

[Lo_D,Hi_D,Lo_R,Hi_R] = wfilters('wname')计算对应小波的滤波器。

The four output filters are Lo_D, 用于分解的低通滤波器 Hi_D, 用于分解的高通滤波器 Lo_R, 用于重构的低通滤波器 Hi_R, 用于重构的高通滤波器

4.量化编码 wcodemat函数

y=wcodemat(x,nb,opt,absol)y=wcodemat(x,nb,opt)y=wcodemat(x,nb)y=wcodemat(x)该函数是用来对矩阵X进行量化编码,它返回矩阵X的一个编码矩阵,在编码中,把矩阵X中元素绝对值最大的作为NB(NB是一个整数),绝对值最小的作为1,其他元素依其绝对值的大小在1与NB中排列.当OPT为'row'时,做行编码;当OPT为'col'时,做列编码, 当OPT为'mat'时,做全局编码,即把整个矩阵中的元素绝对值最大的元素作为NB,最小的作为1,其他元素依其绝对值的大小在整个矩阵中排列.当ABSOL为0时,该函数返回输入矩阵X的一个编码版本;为非0时,返回X的绝对值

5.阈值获取

MATLAB中实现阈值获取的函数有ddencmp、thselect、wbmpen和wwdcbm,下面对它们的用法进行简单的说明。ddencmp函数

调用格式:

[THR,SORH,KEEPAPP,CRIT]=ddencmp(IN1,IN2,X)函数ddencmp用于获取信号在消噪或压缩过程中的默认阈值。输入参数X为一维或二维信号;

IN1取值为'den'或'cmp','den'表示进行去噪,'cmp'表示进行压缩; IN2取值为'wv'或'wp',wv表示选择小波,wp表示选择小波包。输出参数THR为函数选择的阈值,SORH为函数选择阈值使用方式。Sorh=s,为软阈值;Sorh=h,为硬阈值;输出参数KEEPAPP决定了是否对近似分量进行阈值处理。可选为0或1。CRIT为使用小波包进行分解时所选取的熵函数类型。例:自动生成信号小波处理的阈值选取方案。r=2055415866;randn('seed',r);x=randn(1,1000);%产生白噪声;%求取对信号进行小波消噪处理的默认阈值、软阈值,并且保留低频系数;[thr,sorh,keepapp]=ddencmp('den','wv',x);输出:

thr = 3.8593 sorh = s keepapp = 1 thselect函数

调用格式如下:

THR=thselect(X,TPTR);根据字符串TPTR定义的阈值选择规则来选择信号X的自适应阈值。自适应阈值的选择规则包括以下四种:

*TPTR='rigrsure',自适应阈值选择使用Stein的无偏风险估计原理。*TPTR='heursure',使用启发式阈值选择。

*TPTR='sqtwolog',阈值等于sqrt(2*log(length(X))).*TPTR='minimaxi',用极大极小原理选择阈值。

阈值选择规则基于模型 y = f(t)+ e,e是高斯白噪声N(0,1)。wbmpen函数

调用格式:

THR=wbmpen(C,L,SIGMA,ALPHA);返回去噪的全局阈值THR。THR通过给定的一种小波系数选择规则计算得到,小波系数选择规则使用Birge-Massart的处罚算法。

[C,L]是进行去噪的信号或图像的小波分解结构; SIGMA是零均值的高斯白噪声的标准偏差;

ALPHA是用于处罚的调整参数,它必须是一个大于1的实数,一般去ALPHA=2。wdcbm函数 调用格式:

(1)[THR,NKEEP]=wdcbm(C,L,ALPHA);(2)[THR,NKEEP]=wdcbm(C,L,ALPHA,M);函数wdcbm是使用Birge-Massart算法获取一维小波变换的阈值。返回值THR是与尺度无关的阈值,NKEEP是系数的个数。

[C,L]是要进行压缩或消噪的信号在j=length(L)-2层的分解结构; LAPHA和M必须是大于1的实数;

THR是关于j的向量,THR(i)是第i层的阈值;

NKEEP也是关于j的向量,NKEEP(i)是第i层的系数个数。一般压缩时ALPHA取1.5,去噪时ALPHA取3.6.阈值去噪

MATLAB中实现信号的阈值去噪的函数有wden、wdencmp、wthresh、wthcoef、wpthcoef以及wpdencmp。下面对它们的用法作简单的介绍。wden函数 调用格式:

(1)[XD,CXD,LXD]=wden(X,TPTR,SORH,SCAL,N,'wname')(2)[XD,CXD,LXD]=wden(C,L,TPTR,SORH,SCAL,N,'wname')函数wden用于一维信号的自动消噪。X为原始信号,[C,L]为信号的小波分解,N为小波分解的层数。

THR为阈值选择规则:

*TPTR='rigrsure',自适应阈值选择使用Stein的无偏风险估计原理。*TPTR='heursure',使用启发式阈值选择。

*TPTR='sqtwolog',阈值等于sqrt(2*log(length(X))).*TPTR='minimaxi',用极大极小原理选择阈值。SORH是软阈值或硬阈值的选择(分别对应's'和'h')。SCAL指所使用的阈值是否需要重新调整,包含下面三种: *SCAL='one' 不调整;

*SCAL='sln' 根据第一层的系数进行噪声层的估计来调整阈值。*SCAL='mln' 根据不同的噪声估计来调整阈值。

XD为消噪后的信号,[CXD,LXD]为消噪后信号的小波分解结构。格式(1)返回对信号X经过N层分解后的小波系数进行阈值处理后的消噪信号XD和信号XD的小波分解结构[CXD,LXD]。格式(2)返回参数与格式(1)相同,但其结构是由直接对信号的小波分解结构[C,L]进行阈值处理得到的。

wdencmp函数

调用格式有以下三种:

(1)[XC,CXC,LXC,PERF0,PERFL2]=wdencmp('gbl',X,'wname',N,THTR,SORH,KEEPAPP);(2)[XC,CXC,LXC,PERF0,PERFL2]=wdencmp('lvd',X,'wname',N,THTR,SORH);(3)[XC,CXC,LXC,PERF0,PERFL2]=wdencmp('lvd',C,L,'wname',N,THTR,SORH);函数wdencmp用于一维或二维信号的消噪或压缩。wname是所用的小波函数。

gbl(global的缩写)表示每一层都采用同一个阈值进行处理。lvd表示每层采用不同的阈值进行处理。N表示小波分解的层数。THR为阈值向量,对于格式(2)和(3)每层都要求有一个阈值,因此阈值向量THR的长度为N。

SORH表示选择软阈值或硬阈值(分别取值为's'和'h'),参数KEEPAPP取值为1时,则低频系数不进行阈值量化,反之,低频系数要进行阈值量化。XC是要进行消噪或压缩的信号,[CXC,LXC]是XC的小波分解结构,PERF0和PERFL2是恢复或压缩L^2的范数百分比。如果[C,L]是X的小波分解结构,则PERFL2=100*(CXC向量的范数/C向量的范数)^2;如果X是一维信号,小波wname是一个正交小波,则PERFL2=100||XC||^2/||X||^2。

wthresh函数

调用格式:

Y=wthresh(X,SORH,T)返回输入向量或矩阵X经过软阈值(如果SORH='s')或硬阈值(如果SORH='h')处理后的信号。T是阈值。

Y=wthresh(X,'s',T)返回的是Y=SIG(X)*(|X|-T)+,即把信号的绝对值与阈值进行比较,小于或等于阈值的点变为零,大于阈值的点为该点值与阈值的差值。

Y=wthresh(X,'h',T)返回的是Y=X*1(|X|>T),即把信号的绝对值和阈值进行比较,小于或等于阈值的点变为零,大于阈值的点保持不变。一般来说,用硬阈值处理后的信号比用软阈值处理后的信号更粗糙。wthcoef函数 调用格式:

(1)NC=wthcoef('d',C,L,N,P)(2)NC=wthcoef('d',C,L,N)(3)NC=wthcoef('a',C,L)(4)NC=wthcoef('t',C,L,N,T,SORH)用于一维信号小波系数的阈值处理。

格式(1)返回小波分解结构[C,L]经向量N和P定义的压缩率处理后的新的小波分解向量NC,[NC,L]构成一个新的小波分解结构。N包含被压缩的细节向量,P是把较小系数置0的百分比信息的向量。N和P的长度必须相同,向量N必须满足1<=N(i)<=length(L)-2。格式(2)返回小波分解结构[C,L]经过向量N中指定的细节系数置0后的小波分解向量NC。格式(3)返回小波分解结构[C,L]经过近似系数置0后的小波分解向量NC。

格式(4)返回小波分解结构[C,L]经过将向量N作阈值处理后的小波分解向量NC。如果SORH=‟s„,则为软阈值;如果SORH='h'则为硬阈值。N包含细节的尺度向量,T是N相对应的阈值向量。N和T的长度必须相等。

wpdencmp函数

调用格式:

[XD,TREED,PERF0,PERFL2]=wpdencmp(X,SORH,N,'wname',CRIT,PAR,KEEPAPP)[XD,TREED,PERF0,PERFL2]=wpdencmp(TREE,SORH,CRIT,PAR,KEEPAPP)函数wpdencmp用于使用小波包变换进行信号的压缩或去噪。格式(1)返回输入信号X(一维或二维)的去噪或压缩后的信号XD。输出参数TREED是XD的最佳小波包分解树;

PERFL2和PERF0是恢复和压缩L2的能量百分比。PERFL2=100*(X的小波包系数范数/X的小波包系数)^2;如果X是一维信号,小波wname是一个正交小波,则PERFL2=100*||XD||^2/||X||^2。

SORH的取值为's'或'h',表示的是软阈值或硬阈值。

输入参数N是小波包的分解层数,wname是包含小波名的字符串。

函数使用由字符串CRIT定义的熵和阈值参数PAR实现最佳分解。如果KEEPAPP=1,则近似信号的小波系数不进行阈值量化;否则,进行阈值量化。

格式(2)与格式(1)的输出参数相同,输入选项也相同,只是它从信号的小波包分解树TREE进行去噪或压缩。

实例:

load noisdopp;x=noisdopp;%给出全局阈值

[thr,sorh,keepapp]=ddencmp('den','wv',x);%根据全局阈值对信号降噪

xc=wdencmp('gbl',x,'sym4',2,thr,sorh,keepapp);[c,l]=wavedec(x,2,'sym4');[thr1,nkeep]=wdcbm(c,l,3);xc1=wdencmp('lvd',c,l,'sym4',2,thr1,'s');subplot(311);plot(x);title('原始信号')subplot(312);plot(xc);title('使用全局阈值降噪后的信号');subplot(313);plot(xc1);title('使用分层阈值降噪后的信号');

load woman %下面进行噪声的产生 init=3;rand('seed',init);Xn=X+18*(rand(size(X)));%下面进行图像的去噪处理

[thr,sorh,keepapp]=ddencmp('den','wv',Xn);Xd=wdencmp('gbl',Xn,'sym5',2,thr,sorh,keepapp);%用sym5小波对图像信号进行二层的小波分解 [c,s]=wavedec2(X,2,'sym5');[thr1,nkeep1]=wdcbm2(c,s,1.5);Xd1=wdencmp('lvd',c,s,'sym5',2,thr1,'s');%显示图像

subplot(221);image(X);colormap(map);title('原始图像X');axis square subplot(222);image(Xn);colormap(map);title('含噪声的图像');axis square subplot(223);image(Xd);colormap(map);title('去噪后的图像');axis square subplot(224);image(Xd1);colormap(map);title('分层去噪后的图像');axis square

二、小波变换函数 单尺度一维小波变换 cwt一维连续小波变换 调用格式:

coefs = cwt(s,scale,’wname’)【仅给出系数值】

coefs = cwt(s,scale,’wname’,’plot’)【给出系数值同时生成图像】 实例:

load noissin;figure subplot(121)plot(noissin);subplot(122)c=cwt(noissin,1:48,'db4','plot');

dwt一维离散小波变换 调用格式:

[cA1,cD1]=dwt(X,‟wname‟)【使用指定的小波基函数 'wname' 对信号 X 进行分解】 [cA1,cD1]=dwt(X,Lo_D,Hi_D)【使用指定的滤波器组 Lo_D、Hi_D 对信号进行分解】 实例:

load leleccum;s=leleccum(1:3920);ls=length(s);[cA,cD]=dwt(s,'db1');figure subplot(121)plot(cA);subplot(122)plot(cD)[Lo_D,Hi_D,Lo_R,Hi_R] = wfilters('db1')[cA1,cD1]=dwt(s, Lo_D, Hi_D);figure subplot(121)plot(cA1);subplot(122)plot(cD1)

idwt一维离散小波逆变换 调用格式:

X=idwt(cA,cD,'wname')【由近似分量 cA 和细节分量 cD 经小波反变换重构原始信号 X】 X=idwt(cA,cD,Lo_R, Hi_R)【用指定的重构滤波器 Lo_R 和 Hi_R 经小波反变换重构原始信号 X 】 X=idwt(cA,cD,'wname',L)【指定返回信号 X 中心附近的 L 个点】 X=idwt(cA,cD, Lo_R, Hi_R, L)【与上边一致】

upcoef一维小波系数重构 调用格式:

Y = upcoef(O,X,'wname',N)Y = upcoef(O,X,'wname',N,L)Y = upcoef(O,X,Lo_R,Hi_R,N)Y = upcoef(O,X,Lo_R,Hi_R,N,L)这一函数是一维小波分解系数的直接重构

它重建的是原信号在指定层次的,高频或者低频分量。

也就是说,这个信号不是原本的信号,而且某个层次上的逼近。N=1条件下相当与缺省模式的idwt A1 = upcoef('a',cA1,'db1',1,l_s)相当于A1 = idwt(cA1,[],'db1',l_s);D1 = upcoef('d',cD1,'db1',1,l_s)相当于 D1 = idwt([],cD1,'db1',l_s);而O是一个标识符,O=„a‟ 低频,O=„d‟ 高频 N代表了小波系数的级别,是几级小波系数。L则指定返回信号 X 中心附近的 L 个点 例子:

load leleccum;s=leleccum(1:3920);ls=length(s);[cA,cD]=dwt(s,'db1');A1=upcoef('a',cA,'db1',1,ls);D1=upcoef('d',cD,'db1',1,ls);% A1 = idwt(cA,[],'db1',ls);D1 = idwt([],cD,'db1',ls);subplot(1,2,1);plot(A1);title('Approximation A1')subplot(1,2,2);plot(D1);title('Detail D1')

多尺度一维小波变换 wavedec多尺度一维分解

调用格式:

[C, L]=wavedec(X,N,’wname’)[C, L]=wavedec(X,N,Lo_D,Hi_D)函数返回N层分解的各组分系数C(连接在一个向量里),向量L里返回的是各组分的长度。分解的结构如下

例子:

load leleccum;s=leleccum(1:3920);[C,L]=wavedec(s,3,'db1');subplot(1,2,1);plot(C);title('C')subplot(1,2,2);plot(L);title('L')

waverec多尺度一维重构 调用格式:

X=waverec(C,L,’wname’)X=waverec(C,L,Lo_R,Hi_R)实例:

load leleccum;s=leleccum(1:3920);[C,L]=wavedec(s,3,'db1');A0=waverec(C,L,'db1');Err=abs(s-A0);figure(1)subplot(3,1,1);plot(s);title('original s');subplot(3,1,2);plot(A0);title('wavereconstruction s');subplot(3,1,3);plot(Err);title('wavereconstruction err');

appcoef低频系数提取 调用格式:

A=appcoef(C,L,‟wname‟,N)从C中抽取N层近似系数 A=appcoef(C,L,‟wname‟)A=appcoef(C,L,Lo_R,Hi_R,N)A=appcoef(C,L, Lo_R,Hi_R)detcoef高频系数提取 调用格式:

A=detcoef(C,L,N)A=detcoef(C,L)实例:

load leleccum;s=leleccum(1:3920);[C,L]=wavedec(s,3,'db1');cA3=appcoef(C,L,'db1',3);cD3=detcoef(C,L,3);cD2=detcoef(C,L,2);cD1=detcoef(C,L,1);subplot(2,2,1);plot(cA3);title('cA3')subplot(2,2,2);plot(cD3);title('cD3')subplot(2,2,3);plot(cD2);title('cD2')subplot(2,2,4);plot(cD1);title('cD1')

wrcoef多尺度小波系数重构

调用格式:

X=wrcoef(„type‟,C,L,‟wname‟,N)X=wrcoef(„type‟,C,L,Lo_R,Hi_R,N)X=wrcoef(„type‟,C,L,‟wname‟)X=wrcoef(„type‟,C,L, Lo_R,Hi_R)其中type=„a‟ 低频,type=„d‟ 高频 作用类似于upcoef,只不过是多尺度函数。实例:

load leleccum;s=leleccum(1:3920);[C,L]=wavedec(s,3,'db1');cA3=wrcoef('a',C,L,'db1',3);cD1=wrcoef('d',C,L,'db1',1);cD2=wrcoef('d',C,L,'db1',2);cD3=wrcoef('d',C,L,'db1',3);subplot(2,2,1);plot(cA3);title('cA3')subplot(2,2,2);plot(cD3);title('cD3')subplot(2,2,3);plot(cD2);title('cD2')subplot(2,2,4);plot(cD1);title('cD1')

一维静态(平稳)小波变换

离散平稳小波分析所用到的函数有swt小波分解和iswt小波重构 swt一维平稳小波变换 调用格式

SWC = swt(X,N,'wname')SWC = swt(X,N,Lo_D,Hi_D)[swa,swd] = swt(X,N,'wname')[swa,swd] = swt(X,N,Lo_D,Hi_D)对于SWT变换,如果需要在第k层分解信号,那么原始信号需要能够平分成2^k份。所以如果原始信号的长度不满足要求,需要使用Signal Extension GUI工具或使用wextend函数来扩展它。

函数执行将产生N层近似和细节的系数,两者和信号的长度是相等的,这也是平稳小波和普通小波不同的地方,从而使它在某些领域有好的效果。iswt一维平稳小波逆变换 调用格式

X = iswt(SWC,'wname')X = iswt(SWA,SWD,'wname')X = iswt(SWC,Lo_R,Hi_R)X = iswt(SWA,SWD,Lo_R,Hi_R)实例

load noisdopp s = noisdopp;[swa,swd] = swt(s,1,'db1');%一层平稳小波分解

subplot(1,2,1), plot(swa);title('Approximation cfs')subplot(1,2,2), plot(swd);title('Detail cfs')res = iswt(swa,swd,'db1');%一层平稳小波重构 %从系数中构建近似和细节

nulcfs = zeros(size(swa));A1 = iswt(swa,nulcfs,'db1');D1 = iswt(nulcfs,swd,'db1');subplot(4,1,1), plot(s);title('original s');subplot(4,1,2), plot(res);title('recovered s');subplot(4,1,3), plot(A1);title('Approximation A1');subplot(4,1,4), plot(D1);title('Detail D1');

单尺度二维小波变换 dwt2二维离散小波变换

[cA1,cH1,cV1,cD1]=dwt2(X,‟wname‟)[cA1,cH1,cV1,cD1]=dwt2(X,Lo_D,Hi_D)其中cA1, cH1水平;cV1垂直;cD1对角 二维小波变换有四个值 实例:

load wbarb;figure(1);image(X);colormap(map);colorbar;[cA1,cH1,cV1,cD1]=dwt2(X,'bior3.7');figure(2);colormap(map);subplot(2,2,1);image(wcodemat(cA1,192));title('cA1')subplot(2,2,2);image(wcodemat(cH1,192));title('cH1')subplot(2,2,3);image(wcodemat(cV1,192));title('cV1')subplot(2,2,4);image(wcodemat(cD1,192));title('cD1')

idwt2二维离散小波逆变换

X = idwt2(cA1,cH1,cV1,cD1,'bior3.7');

upcoef2二维系数重构

调用格式:

Y=upcoef2(O,X,‟wname‟,N,S)Y=upcoef2(O,X,Lo_R,Hi_R,N,S)Y=upcoef2(O,X,‟wname‟,N)Y=upcoef2(O,X,Lo_R,Hi_R,N)Y=upcoef2(O,X,‟wname‟)Y=upcoef2(O,X,Lo_R,Hi_R)O:„a‟低频;„h‟水平;„v‟垂直;„d‟对角 实例: load wbarb;[cA1,cH1,cV1,cD1]=dwt2(X,'bior3.7');A1 = upcoef2('a',cA1,'bior3.7',1);H1 = upcoef2('h',cH1,'bior3.7',1);V1 = upcoef2('v',cV1,'bior3.7',1);D1 = upcoef2('d',cD1,'bior3.7',1);figure(2);colormap(map);subplot(2,2,1);image(wcodemat(A1,192));title('Approximation A1')subplot(2,2,2);image(wcodemat(H1,192));title('Horizontal Detail H1')subplot(2,2,3);image(wcodemat(V1,192));title('Vertical Detail V1')subplot(2,2,4);image(wcodemat(D1,192));title('Diagonal Detail D1')

多尺度二维小波变换 wavedec2多尺度二维分解

[C, S]=wavedec2(X,N,’wname’)[C, S]=wavedec2(X,N,Lo_D,Hi_D)

c为各层分解系数,s为各层分解系数长度,也就是大小.c的结构: c=[A(N)|H(N)|V(N)|D(N)|H(N-1)|V(N-1)|D(N-1)|H(N-2)|V(N-2)|D(N-2)|...|H(1)|V(1)|D(1)] 可见,c是一个行向量,即:1*(size(X)),(e.g,X=256*256,then c

大小为:1*(256*256)=1*65536)A(N)代表第N层低频系数,H(N)|V(N)|D(N)代表第N层高频系数,分别是水平,垂直,对角高频,以此类推,到H(1)|V(1)|D(1).s的结构: 储存各层分解系数长度的,即第一行A(N)的长度,第二行是H(N)|V(N)|D(N)|的长度,第三行是

H(N-1)|V(N-1)|D(N-1)的长度,倒数第二行是H(1)|V(1)|D(1)长度,最后一行是X的长度(大小)实例:

load wbarb;[C,S] = wavedec2(X,2,'bior3.7');figure(2);colormap(map);subplot(1,2,1);plot(C);subplot(1,2,2);plot(S);

waverec2多尺度二维重构 调用格式:

X=waverec2(C,S,’wname’)X=waverec2(C,S,Lo_R,Hi_R)实例:

load wbarb;[C,S] = wavedec2(X,2,'bior3.7');X0=waverec2(C,S,'bior3.7');Err=abs(X0-X);figure(1);colormap(map);subplot(3,1,1);image(wcodemat(X,192));title('original X')subplot(3,1,2);image(wcodemat(X0,192));title('wavereconstruction X')subplot(3,1,3);imshow(Err,[])

appcoef2低频系数提取 调用格式:

A=appcoef2(C,S,‟wname‟,N)A=appcoef2(C,S,Lo_R,Hi_R,N)detcoef2高频系数提取

调用格式:

A= detcoef2(‘type’,C,S,’wname’,N)Type: ’h’ 水平;‘v’垂直;‘d’对角 实例:

load wbarb;[C,S] = wavedec2(X,2,'bior3.7');cA2 = appcoef2(C,S,'bior3.7',2);cH2 = detcoef2('h',C,S,2);cV2 = detcoef2('v',C,S,2);cD2 = detcoef2('d',C,S,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);figure(1);colormap(map);subplot(2,2,1);image(wcodemat(cA1,192));title('Approximation A1')subplot(2,2,2);image(wcodemat(cH1,192));title('Horizontal Detail H1')subplot(2,2,3);image(wcodemat(cV1,192));title('Vertical Detail V1')subplot(2,2,4);image(wcodemat(cD1,192));title('Diagonal Detail D1')figure(2);colormap(map);subplot(2,2,1);image(wcodemat(cA2,192));title('Approximation A2')subplot(2,2,2);image(wcodemat(cH2,192));title('Horizontal Detail H2')subplot(2,2,3);image(wcodemat(cV2,192));title('Vertical Detail V2')subplot(2,2,4);image(wcodemat(cD2,192));title('Diagonal Detail D2')

wrcoef2多尺度小波系数重构

调用格式:

X= wrcoef2(„type‟,C,S,‟wname‟,N)X= wrcoef2(„type‟,C,S,Lo_R,Hi_R,N)X= wrcoef2(„type‟,C,S,‟wname‟)X= wrcoef2(„type‟,C,S, Lo_R,Hi_R,N)Type: „a‟低频;‟h‟ 水平;„v‟垂直;„d‟对角 实例:

load wbarb;[C,S] = wavedec2(X,2,'bior3.7');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);A2 = wrcoef2('a',C,S,'bior3.7',2);H2 = wrcoef2('h',C,S,'bior3.7',2);V2 = wrcoef2('v',C,S,'bior3.7',2);D2 = wrcoef2('d',C,S,'bior3.7',2);figure(1);colormap(map);subplot(2,2,1);image(wcodemat(A1,192));title('reApproximation A1')subplot(2,2,2);image(wcodemat(H1,192));title('reHorizontal Detail H1')subplot(2,2,3);image(wcodemat(V1,192));title('reVertical Detail V1')subplot(2,2,4);image(wcodemat(D1,192));title('reDiagonal Detail D1')figure(2);colormap(map);subplot(2,2,1);image(wcodemat(A2,192));title('reApproximation A2')subplot(2,2,2);image(wcodemat(H2,192));title('reHorizontal Detail H2')subplot(2,2,3);image(wcodemat(V2,192));title('reVertical Detail V2')subplot(2,2,4);image(wcodemat(D2,192));title('reDiagonal Detail D2')

二维静态(平稳)小波变换

回顾从一维离散小波变换到二维的扩展,二维静态小波变换采用相似的方式。对行和列分别采用高通和低通滤波器。这样分解的结果仍然是四组图像:近似图像、水平细节图像、竖直细节图像和对角图像,与离散小波变换不同的只是静态小波分解得到的四幅图像与原图像尺寸一致,道理与一维情况相同。

二维离散小波变换同样只提供了一个函数swt2,因为它不对分解系数进行下采样,所以单层分解和多层分解的结果是一样的。不需要另外提供多层分解的功能。swt2二维静态小波变换

调用格式:

[A,H,V,D] = swt2(X,N,'wname')[A,H,V,D] = swt2(X,N,Lo_D,Hi_D)iswt2二维静态小波逆变换 调用格式

X = iswt2(SWC,'wname')X = iswt2(A,H,V,D,wname)X = iswt2(SWC,Lo_R,Hi_R)X = iswt2(A,H,V,D,Lo_R,Hi_R)实例

clc;clear;close all;load woman;[cA,cH,cV,cD]=swt2(X,2,'haar');%用haar小波基进行2尺度平稳小波分解 cA1=cA(:,:,1);cH1=cH(:,:,1);cV1=cV(:,:,1);cD1=cD(:,:,1);%尺度1低、高频系数

cA2=cA(:,:,2);cH2=cH(:,:,2);cV2=cV(:,:,2);cD2=cD(:,:,2);%尺度2低、高频系数

reX = iswt2(cA,cH,cV,cD,'haar');X1 = iswt2(cA1,cH1,cV1,cD1,'haar');X2 = iswt2(cA2,cH2,cV2,cD2,'haar');figure;colormap(map);subplot(1,4,1),image(X);title('原始图像');subplot(1,4,2),image(reX);title('重构图像');subplot(1,4,3),image(X1);title('尺度1的重构图像');subplot(1,4,4),image(X2);title('尺度1的重构图像');figure;colormap(map);subplot(1,2,1),image(uint8(cA1));title('尺度1的低频系数图像');subplot(1,2,2),image(uint8(cA2));title('尺度2的低频系数图像');figure;colormap(map);subplot(2,3,1),image(uint8(cH1));title('尺度1水平方向高频系数');subplot(2,3,2),image(uint8(cV1));title('尺度1垂直方向高频系数');subplot(2,3,3),image(uint8(cD1));title('尺度1斜线方向高频系数');subplot(2,3,4),image(uint8(cH2));title('尺度2水平方向高频系数');subplot(2,3,5),image(uint8(cV2));title('尺度2垂直方向高频系数');subplot(2,3,6),image(uint8(cD2));title('尺度2斜线方向高频系数');

直接调用的小波函数 meyer函数 功能:Meyer小波

函数语法格式:

[PHI,PSI,T] = meyer(LB,UB,N)[PHI,T] = meyer(LB,UB,N,'phi')[PSI,T] = meyer(LB,UB,N,'psi')

cgauwavf函数

功能:Complex Gaussian小波

函数语法格式:

[PSI,X] = cgauwavf(LB,UB,N,P)

mexihat函数 功能:墨西哥帽小波

函数语法格式:

[PSI,X] = mexihat(LB,UB,N)

morlet函数 功能:Morlet小波

函数语法格式:

[PSI,X] = morlet(LB,UB,N)

symwavf函数

功能:Symlets小波滤波器 函数语法格式:F = symwavf(W)

三、图像接口调用

使用图形接口做一维连续小波分析

1.开启一维连续小波工具,只需输入如下命令 wavemenu

出现如下小波工具箱主菜单

选择Continuous Wavelet 1-D菜单项,出现如下一维信号分析连续小波分析工具

2.加载信号

选择菜单File->Load Signal,在Load Signal对话框里选择noissin.mat文件,它在matlab安装目录的toolbox/wavelet/wavedemo文件夹下,点击OK加载信号。一维连续小波工具开始加载信号,加载后默认采样频率为1s。3.执行连续小波变换

下面来测试使用db4小波对尺度1到48做小波分析,设置如下

4.点击Analyze按钮

在短暂的计算后,工具将绘制小波系数,并在Coefficients line坐标系中绘制尺度为24的小波系数,在local maxima坐标系中绘制各尺度的小波系数最大值。

5.查看小波Coefficients Line 在小波系数图中右键点击可以选择展示其他尺度的小波系数,选择后点击New Coefficients Line按钮,Coefficients Line会相应更新。

6.查看Maxima Line 点击Refresh Maxima Line按钮,可以显示从尺度1到所选尺度的小波系数的最大值。

注意当在系数图中按下鼠标右键并移动时,会在最下面的Info框中显示当前鼠标位于的X位置和尺度。

7.在尺度和伪频率之间切换

在右边选择Frequencies,当再在系数图中选择时,在Info中显示的将是Hz。

而关于尺度和频率的转换关系,可以看How to Connect Scale to Frequency? 8.选择要显示的坐标系

9.放大细节

在系数框中按鼠标左键可以选择放大的范围。

10.选择好放大范围后点击最下面的按钮可以实现指定的放大

11.显示普通系数或系数绝对值

两种显示方式的区别在于,普通模式下,颜色映射是在系数的最大最小之间;而绝对模式,颜色映射是在0和最大的系数绝对值之间。图形接口的导入导出信息 导入信号到一维连续小波工具

首先将要处理的信号保存到mat文件中,要求信号是一维的向量。然后使用工具的File->Load Signal菜单功能,选择此信号文件即可导入信号。

文件中第一个一维变量被认为是信号,变量在文件中顺序是按字母排序的。保存小波系数

小波分析完成后,点击File->Save->Coefficients,可以将分析结果保存到mat文件。保存后,可以使用load函数加载数据,会看到保存的变量有小波系数coeff、尺度scales、小波的名字wname。

使用图形接口做一维离散小波分析 1.开启一维小波分析工具 Wavemenu->Wavelet 1-D 2.加载信号

3.执行一层小波分解 使用db1小波执行一层分解

4.放大有关细节 5.执行多层小波分解 使用db1小波执行3层分解。

选择不同的显示方式:在Display mode下拉菜单下可以选择不同的显示方式,默认的显示方式为Full Decomposition Mode,其他的显示方式及其意义如下 Separate Mode:在不同的列中显示细节和近似;

Superimpose Mode:在一张图上以不同的颜色显示细节、近似;

Tree Mode:显示分解树、原始信号和选择的成分,在分解树上选择你想显示的成分; Show and Scroll Mode:显示3个窗口,第一个显示原始信号和选择的近似信号,第二个显示选择的细节,第三个显示小波系数; Show and Scroll Mode(Stem Cfs):和Show and Scroll Mode很接近,除了第三个窗口中以杆状图替代颜色条显示小波系数。

对于每个分析任务,可以改变默认的显示方式,只要在View->Default Display Mode子菜单下选择理想的方式即可;不同的显示方式会有额外的显示选项,在More Display Options中做选择,这些选项可以控制不同成分的显示、选择是否显示原始信号与细节、近似对比。6.从信号中移除噪声

图形接口提供了以预定义的阈值策略除噪的选项,这使得从信号中除噪非常容易,只需点击De-noise按钮就可以弹出除噪工具。

点击Close可以关闭除噪窗口,由于不能同时打开除噪和压缩窗口,所以需要关闭除噪窗口再进行信号压缩。关闭时会提示Update Synthesized Signal提示对话框,点击No,如果点击Yes,合成的信号会加载到主窗口。7.改善分析

图像工具可以在任何时候轻易的改善分析,只需要改变分析的方法就可以了,如使用db3做5层小波分析。8.压缩信号

图形接口提供了自动化或人工阈值的做压缩的功能。

默认使用的是全阈值方法,当然也可以使用人工阈值的方法,选择By Level thresholding选项即可,下面的滑动条提供了各级阈值独立调整的功能,相应的调整可以在左边的窗口中看到,在图形窗口中也可以直接拖动来改变阈值。

完成选择后,点击压缩按钮可以完成压缩。从压缩的结果可以看到,压缩过程去除了大多数噪声,但保存了信号99.74%的能量。自动化阈值是非常有效的,它使除3.2%的小波系数都归零化了。9.显示残差

点击Residuals按钮可以查看压缩的残差。显示的统计数据包括测量的趋势(平均值、众数、中值)和散布情况(极差、标准差)。另外,工具还提供了概率分布直方图和累计直方图以及时间序列图,如自相关函数、频谱。这些都是和去噪工具是一样的。10.显示统计分布

可以显示一系列有关信号及其组分的统计数据。

点击Statistics按钮可以查看统计数据信息,点击Histograms可以查看直方图。从图形接口中导入导出信息 保存信息

l 保存合成的信号

如加载如下信号File > Example Analysis > Basic Signals > with db3 at level 5 → Sum of sines,做除噪或压缩处理后,保存合成信号File > Save > Synthesized Signal,保存后加载文件,会得到如下变量: 如果使用除全阈值外的方法时,得到的变量结构如下

Synthsig是合成的信号,除噪或压缩的小波方法保存在wname中,相互依赖的各级阈值保存在thrParams中,小波分解的等级数和cell的长度相等,thrParams{i},i从1到5分别保存了阈值间距上下限的值和阈值(间距阈值是允许的,在自适应阈值方法中会用到,参见One-Dimensional Variance Adaptive Thresholding of Wavelet Coefficients)如果使用的全阈值方法,保存的数据结构如下

alTHR保存的是全阈值的值。l 保存离散小波变换的系数 一个例子的文件内容如下

Coefs包含了离散小波变换的系数,longs包含了各组分的长度,thrParams为空,因为合成信号不存在,wname是小波的名字。l 保存分解结果(即保存小波分析的全体数据)小波工具将保存为.wal文件,加载方式为 load wdecex1d.wa1 –mat 文件内容为

加载信息

加载的文件只要和保存的相应文件中的变量一样即可。

使用图形接口分析复信号

与实信号不同的是,选择Complex Continuous Wavelet 1-D,得到的结果如下

具体操作过程与实信号的相似,如下

使用图形接口做一维除噪分析 1.开启一维平稳小波除噪工具

输入wavemenu,选择SWT Denoising 1-D,出现如下GUI

2.加载信号 Load Signal 3.执行平稳小波分解

使用db1小波执行5层小波分解,得到的是非抽取系数(nondecimated coefficients),它们是使用相同的离散小波变换来得到的,只是省略了抽取的步骤。得到的结果如下

4.使用平稳小波变换除噪

可以使用GUI默认的参数做除噪处理。右边的滑动条可以控制各级系数的阈值大小,也可以直接在系数图中直接拖动来调整阈值的大小,注意近似系数中没有阈值。点击denoise进行除噪处理

得到的效果是非常好的,但似乎在信号不连续的地方出现了过平滑,这个可以从残差图中看出来,在800的位置出现了突降点。

选择hard阈值模式代替soft模式,再进行除噪,结果如下

可以看到这次效果非常好,而且残差图也看起来像白噪声序列。为了验证这一点,可以点击Residuals按钮查看残差图及相关统计数据来详细说明。

四、小波变换在图像处理中的应用 4.1 小波分析用于图像压缩

4.1.1 基于小波变换的图像局部压缩

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

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

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

下面我们利用小波变化的时频局部化特性,举一个局部压缩的例子,大家可以通过这个例子看出小波变换在应用这类问题上的优越性。

我们把图像中部的细节系数都置零,从压缩图像中可以很明显地看出只有中间部分变得模糊(比如在原图中很清晰的围巾的条纹不能分辨),而其他部分的细节信息仍然可以分辨的很清楚。

实例:

load wbarb %使用sym4小波对信号进行一层小波分解 [ca1,ch1,cv1,cd1]=dwt2(X,'sym4');codca1=wcodemat(ca1,192);codch1=wcodemat(ch1,192);codcv1=wcodemat(cv1,192);codcd1=wcodemat(cd1,192);%将四个系数图像组合为一个图像

codx=[codca1,codch1,codcv1,codcd1];%复制原图像的小波系数 rca1=ca1;rch1=ch1;rcv1=cv1;rcd1=cd1;%将三个细节系数的中部置零

rch1(33:97,33:97)=zeros(65,65);rcv1(33:97,33:97)=zeros(65,65);rcd1(33:97,33:97)=zeros(65,65);codrca1=wcodemat(rca1,192);codrch1=wcodemat(rch1,192);codrcv1=wcodemat(rcv1,192);codrcd1=wcodemat(rcd1,192);%将处理后的系数图像组合为一个图像

codrx=[codrca1,codrch1,codrcv1,codrcd1];%重建处理后的系数

rx=idwt2(rca1,rch1,rcv1,rcd1,'sym4');subplot(221);image(wcodemat(X,192)),colormap(map);title('原始图像');subplot(222);image(codx),colormap(map);title('一层分解后各层系数图像');subplot(223);image(wcodemat(rx,192)),colormap(map);title('压缩图像');subplot(224);image(codrx),colormap(map);title('处理后各层系数图像');%求压缩信号的能量成分 per=norm(rx)/norm(X)%求压缩信号与原信号的标准差 err=norm(rx-X)运行结果

per = 1.0000 err = 586.4979 4.1.2 小波变换用于图像压缩的一般方法

二维小波分析用于图像压缩是小波分析应用的一个重要方面。

它的特点是压缩比高,压缩速度快,压缩后能保持图像的特征基本不变,且在传递过程中可以抗干扰。4.1.2.1 利用二维小波分析进行图像压缩

基于小波分析的图像压缩方法很多,比较成功的有小波包、小波变换零树压缩、小波变换矢量量化压缩等。

利用二维小波变换进行图像压缩时,小波变换将图像从空间域变换到时间域,它的作用与以前在图像压缩中所用到的离散余弦(DCT)、傅立叶变换(FFT)等的作用类似。但是要很好的进行图像的压缩,需要综合的利用多种其他技术,特别是数据的编码与解码算法等,所以利用小波分析进行图像压缩通常需要利用小波分析和许多其他相关技术共同完成。小波高频滤波压缩 %%%%%%%%装入图像、变换 load wbarb;%对图像用bior3.7小波进行2层小波分解 [c,s]=wavedec2(X,2,'bior3.7');%提取小波分解结构中第一层低频系数和高频系数 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);v1=wrcoef2('v',c,s,'bior3.7',1);d1=wrcoef2('d',c,s,'bior3.7',1);c1=[a1,h1;v1,d1];%%%%%%%%%下面进行图像压缩处理

%保留小波分解第一层低频信息,进行图像的压缩 %第一层的低频信息即为ca1,显示第一层的低频信息 %首先对第一层信息进行量化编码

ca1=appcoef2(c,s,'bior3.7',1);ca1=wcodemat(ca1,440,'mat',0);%改变图像的高度 ca1=0.5*ca1;%保留小波分解第二层低频信息,进行图像的压缩,此时压缩比更大 %第二层的低频信息即为ca2,显示第二层的低频信息 ca2=appcoef2(c,s,'bior3.7',2);%首先对第二层信息进行量化编码

ca2=wcodemat(ca2,440,'mat',0);%改变图像的高度 ca2=0.25*ca2;%%%%%%%显示图像、分解后各频率成分的信息

subplot(221);image(X);colormap(map);title('原始图像');axis square subplot(222);image(c1);axis square;title('分解后低频和高频信息');subplot(223);image(ca1);colormap(map);axis square;title('第一次压缩');subplot(224);image(ca2);colormap(map);axis square;title('第二次压缩');disp('压缩前图像X的大小:');whos('X')disp('第一次压缩图像的大小为:');whos('ca1')disp('第二次压缩图像的大小为:');whos('ca2')输出结果如下所示:

压缩前图像X的大小: Name SizeBytesClass X256x256524288double array Grand total is 65536 elements using 524288 bytes 第一次压缩图像的大小为: Name SizeBytesClass ca1135x135145800double array Grand total is 18225 elements using 145800 bytes 第二次压缩图像的大小为: Name SizeBytesClass ca2 75x7545000double array Grand total is 5625 elements using 45000 bytes

可以看出,第一次压缩提取的是原始图像中小波分解第一层的低频信息,此时压缩效果较好,压缩比较小(约为1/3):第二次压缩是提取第一层分解低频部分的低频部分(即小波分解第二层的低频部分),其压缩比较大(约为1/12),压缩效果在视觉上也基本过的去。这是一种最简单的压缩方法,只保留原始图像中低频信息,不经过其他处理即可获得较好的压缩效果。

小波高频阈值压缩 %装入一个二维信号 load tire;

%下面进行图像压缩

[c,s]=wavedec2(X,2,'db3');%对图像用db3小波进行2层小波分解, [thr,sorh,keepapp]=ddencmp('cmp','wv',X);%使用ddencmp函数来求取阈值

[Xcomp,cxc,lxc,perf0,perfl2]=wdencmp('gbl',c,s,'db3',2,thr,sorh,keepapp);%输入参数中选择了全局阈值选项„gbl‟,用来对所有高频系数进行相同的阈值量化处理 %将压缩后的图像与原始图像相比较,并显示出来

subplot(121);image(X);colormap(map);title('原始图像');axis square subplot(122);image(Xcomp);colormap(map);title('压缩图像');axis square disp('小波分解系数中置0的系数个数百分比:');perf0 disp('压缩后图像剩余能量百分比:');perfl2

输出结果如下所示:

小波分解系数中置0的系数个数百分比: perf0 =49.1935 压缩后图像剩余能量百分比: perfl2 =99.9928 4.1.2.2 二维信号压缩中的阈值的确定与作用命令

由于阈值处理只关心系数的绝对值,并不关心系数的位置,所以二维小波变换系数的阈值化方法同一维情况大同小异,为了方便用户使用小波工具箱对某些阈值化方法提供了专门的二维处理命令

阈值化压缩方法 %装入一个二维信号 load tire;%下面进行图像压缩

[c,s]=wavedec2(X,2,'db3');%对图像用db3小波进行2层小波分解, [thr,sorh,keepapp]=ddencmp('cmp','wv',X);%使用ddencmp函数来求取阈值 [Xcomp,cxc,lxc,perf0,perfl2]=wdencmp('gbl',c,s,'db3',2,thr,sorh,keepapp);%将压缩后的图像与原始图像相比较,并显示出来 subplot(121);image(X);colormap(map);title('原始图像');axis square subplot(122);image(Xcomp);colormap(map);title('压缩图像');axis square disp('小波分解系数中置0的系数个数百分比:');perf0 disp('压缩后图像剩余能量百分比:');perfl2

显示结果如图所示

可见分层阈值化压缩方法同全局阈值化方法相比,在能量损失不是很大的情况下可以获得最高的压缩化,这主要是因为层数和方向相关的阈值化方法能利用更精细的细节信息进行阈值化处理。

4.1.3 基于小波包变换的图像压缩

小波分析之所以在信号处理中有着强大的功能,是基于其分离信息的思想,分离到各个小波域的信息除了与其他小波域的关联,使得处理的时候更为灵活。全局阈值化方法作用的信息粒度太大,不够精细,所以很难同时获得高的压缩比和能量保留成分,在作用的分层阈值以后,性能明显提高,因为分层阈值更能体现信号固有的时频局部特性。

但是小波分解仍然不够灵活,分解出来的小波树只有一种模式,不能完全地体现时频局部化信息。而压缩的核心思想既是尽可能去处各小波域系数之间的信息关联,最大限度体现时频局部化的信息,因此,实际的压缩算法多采用小波包算法,而小波树的确定则是根据不同的信息论准则,以达到分解系数表达的信息密度最高。

下面我通过一个例子来说明小波包分析在图像压缩中的应用,并给出性能参数以便于同基于小波分析的压缩进行比较。

小波包优化 %读入信号 load julia %求颜色索引表长度 nbc=size(map,1);%得到信号的阈值,保留层数,小波树优化标准

[thr,sorh,keepapp,crit]=ddencmp('cmp','wp',X);%通过以上得到的参数对信号进行压缩

[xd,treed,perf0,perfl2]=wpdencmp(X,sorh,4,'sym4',crit,thr*2,keepapp);%更改索引表为pink索引表 colormap(pink(nbc));subplot(121);image(wcodemat(X,nbc));title('原始图像');subplot(122);image(wcodemat(xd,nbc));title('全局阈值化压缩图像');xlabel(['能量成分',num2str(perfl2),'%','零系数成分',num2str(perf0),'%']);plot(treed);

得到的压缩结果如图所示

图6 基于小波包分析的图像压缩

压缩过程中使用的最优小波数如图所示

图7 最优小波树

ddencmp、wpdencmp这两个命令是Matlab小波工具箱提供的自动获取阈值和自动使用小波包压缩的命令,后者将分解阈值化和重建综合起来。在将小波包用于信号压缩的过程中,ddencmp命令返回的最优小波树标准都是阈值化标准。根据这个标准确定的最优小波树可以使得压缩过程的零系数成分最高,并且自动降低计算量。

图像压缩是应用非常广泛的一类问题,所以其机器实现效率是至关重要的,在实际的应用中,如JPEG2000,一般不采用通常的mallat算法做小波分解,而是应用特定的双正交小波,利用其滤波器分布规则的特性,用移位操作来实现滤波操作。4.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层的各层高频系数计算二维信号的小波重构。

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

下面给出一个二维信号(文件名为detfinger.mat),并利用小波分析对信号进行去噪处理。

%装入图像 load tire %下面进行噪声的产生 init=3718025452;rand('seed',init);Xnoise=X+18*(rand(size(X)));%用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);%显示去噪后的图像 colormap(map);subplot(131);image(wcodemat(X,192));title('原始图像X');axis square subplot(132);image(wcodemat(X,192));title('含噪声的图像Xnoise');axis square subplot(133);image(Xdenoise);title('去噪后的图像');axis square

输出结果

从图中3个图像的比较可以看出,Matlab中的ddencmp和wdencmp函数可以有效地进行去噪处理。大噪声滤波去噪

再给定一个有较大白噪声的delmontl.mat图像。由于图像所含的噪声主要是白噪声,而且主要集中在图像的高频部分,所以我们可以通过全部滤掉图像中的高频部分实现图像的去噪。

load wmandril;%产生含噪图像

init=2055615866;randn('seed',init)x=X+38*randn(size(X));

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

%用小波函数sym4对x进行2层小波分解 [c,s]=wavedec2(x,2,'sym4');%提取小波分解中第一层的低频图像,即实现了低通滤波去噪 a1=wrcoef2('a',c,s,'sym4',1);%提取小波分解中第二层的低频图像,即实现了低通滤波去噪 a2=wrcoef2('a',c,s,'sym4',2);

%画出图像

subplot(221);image(X);colormap(map);title('原始图像');axis square subplot(222);image(x);colormap(map);title('含噪声图像');axis square;subplot(223);image(a1);title('第一次去噪图像');axis square;subplot(224);image(a2);title('第二次去噪图像');axis square;输出结果如图:

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

少量噪声的小波分解系数阈值量化去噪

下面再给出定一个喊有较少噪声的facets.mat图像。由于原始图像中只喊有较少的高频噪声,如果按照上一个例子把高频噪声全部滤掉的方法将损坏图像中固有的高频有用信号。因此这幅图像适合采用小波分解系数阈值量化方法进行去噪处理。

%下面装入原始图像,X中含有被装载的图像 load facets;%产生含噪声图像

init=2055615866;randn('seed',init)x=X+10*randn(size(X));%下面进行图像的去噪处理

[c,s]=wavedec2(x,2,'coif3');%用小波画数coif3对x进行2层小波分解 n=[1,2];%设置尺度向量n p=[10.12,23.28];%设置阈值向量p %对三个方向高频系数进行阈值处理 nc=wthcoef2('h',c,s,n,p,'s');nc=wthcoef2('v',nc,s,n,p,'s');nc=wthcoef2('d',nc,s,n,p,'s');%对新的小波分解结构[nc,s]进行重构 xx=waverec2(nc,s,'coif3');%画出图像

subplot(131);image(X);colormap(map);title('原始图像');axis square subplot(132);image(x);colormap(map);title('含噪声图像');axis square subplot(133);image(xx);colormap(map);title('去噪后的图像');axis square

输出结果如图

更加标准的做法是下面这样:

第二篇:matlab小波变换函数的总结与程序

小波去噪举例

MATLAB中用wnoise函数测试去噪算法

sqrt_snr=3;init=231434;

[x,xn]=wnoise(3,11,sqrt_snr,init);% 加噪,信噪比为3 subplot(3,2,1),plot(x)

title('original test function')subplot(3,2,2),plot(xn)title('noised function')lev=5;

xd=wden(x,'heursure','s','one',lev,'sym8');%利用小波对一维信号进行降噪, XD为降噪后的%信号,CXD,LXD为XD的小波分解结构 % 's' or 'h'决定阈值的使用方式,SCAL决定阈值是%否随噪声变化:'one' 不调整,'sln'对第一层系%数的层噪声分别进行估计和调整; 'mln'对各层%系数的层噪声分别进行估计和调整;

subplot(3,2,3),plot(xd)

title('One de-noised function')xd=wden(x,'heursure','s','sln',lev,'sym8');subplot(3,2,4),plot(xd)

title('Sln de-noised function')xd=wden(x,'sqtwolog','s','sln',lev,'sym8');% 固定阈值选择算法去噪 subplot(3,2,5),plot(xd)

title('Sqtwolog de-noised function')

[c,l]=wavedec(x,lev,'sym8');subplot(3,2,6),plot(xd)

title('CL de-noised function')

MATLAB中图像噪声处理举例

load sinsin;

colormap('default');subplot(1,3,1),image(X);title('original image');axis('square');init=231434;

randn('seed',init);

X=X+18*randn(size(X));%产生噪声信号 subplot(1,3,2),image(x);title('noised image');axis('square');[thr,sorh,keepapp]=ddencmp('den','wv',x);%自动生成小波去躁或压缩的阈值选择方案,也 %就是寻找默认值

[xc,cxc,lxc,perf0,perfl2]=wdencmp('gbl',x,'sym4',2,thr,sorh,keepapp);%使用全局阈值进行

%图象降噪

subplot(1,3,3),image(xc);title('denoised image');axis('square')

可见,含躁图像的噪声含量很强,利用小波去躁,可以有效去除躁声,同时保留了边界。Wdencmp函数

[xc,cxc,lxc,perf0,perfl2]=wdencmp('gbl',x,'sym4',2,thr,sorh,keepapp)是使用小波进行一维或二维小波压缩或降噪的函数。前面的语句是对于输入的一维或二维信号X,使用全局正阈值THR,由小波系数阈值得到降噪或压缩后的信号XC。附加的输出变量[cxc,lxc]是XC的小波分解结构; [perf0,perfl2]是恢复和压缩的L2范数百分比。使用小波'sym4'执行小波分解到第N=2层。Sorh是软阈值或硬阈值。若keepapp=1,低频系数不能进行阈值处理。

第三篇:小波变换快速算法及应用小结

离散小波变换的快速算法

Mallat算法[经典算法] 在小波理论中,多分辨率分析是一个重要的组成部分。多分辨率分析是一种对信号的空间分解方法,分解的最终目的是力求构造一个在频率上高度逼近L2(R)空间的正交小波基,这些频率分辨率不同的正交小波基相当于带宽各异的带通滤波器。因此,对于一个能量有限信号,可以通过多分辨率分析的方法把其中的逼近信号和细节信号分离开,然后再根据需要逐一研究。多分辨率分析的概念是S.Mallat在构造正交小波基的时候提出的,并同时给出了著名的Mallat算法。Mallat算法在小波分析中的地位相当于快速傅立叶变换在经典傅立叶变换中的地位,为小波分析的应用和发展起到了极大的推动作用。MALLAT算法的原理

在对信号进行分解时,该算法采用二分树结构对原始输入信号x(n)进行滤波和二抽取,得到

111第一级的离散平滑逼近和离散细节逼近和,再采用同样的结构对进行滤波和二抽取

22得到第二级的离散平滑逼近和离散细节逼近和,再依次进行下去从而得到各级的离散123细节逼近对,…,即各级的小波系数。重构信号时,只要将分解算法中的步骤反过来进行即可,但要注意,此时的滤波器与分解算法中的滤波器不一定是同一滤波器,并且要将二抽取装置换成二插入装置才行。

多孔算法

[小波变换快速算法及其硬件实现的研究毛建华]

多孔算法是由M.shen于1992年提

小波变换 matlab 总结范文

第一篇:小波变换 matlab 总结范文 小波变换matlab总结 目录 一、预置工具...............................................
点击下载
分享:
最新文档
热门文章
    确认删除?
    QQ
    • QQ点击这里给我发消息
    微信客服
    • 微信客服
    回到顶部