当前位置:
文档之家› 第5章 小波变换的matlab实现
第5章 小波变换的matlab实现
19
A3=wrcoef('a',C,L,'db1',3); D1=wrcoef('d',C,L,'db1',1); D2=wrcoef('d',C,L,'db1',2); D3=wrcoef('d',C,L,'db1',3);
Approximation A3 600
Detail D1 40
20 400
2000 1500 1000
500 0 0
50
Approximation cA3
200
400
600
Detail cD2
40 20
0 -20 -40
0
50
Detail cD1
500 1000 1500 2000 Detail cD3
0 0
-50
-50 0
-100
500
1000
0
200
400
600
18
重构系数 命令:wrcoef 格式:
50 100 150 200 250
50 100 150 200 250
Horizontal Detail H1
50 100 150 200 250
50 100 150 200 250
Diagonal Detail D1
50 100 150 200 250
50 100 150 200 250
32
二维逆变换 命令:idwt2 格式:
title('Vertical Detail V1')subplot(2,2,4);
image(wcodemat(D1,192));title('Diagonal Detail
D1')
31
Approximation A1
50 100 150 200 250
50 100 150 200 250
Vertical Detail V1
1. Y=upcoef(O,X,’wname’,N) 2. Y=upcoef(O,X,’wname’,N,L) 3. Y=upcoef(O,X,’Lo_R, Hi_R’,N) 4. Y=upcoef(O,X,’Lo_R,Hi_R’,N,L) 5. Y=upcoef(O,X,’wname’) 6. Y=upcoef(O,X,Lo_R,Hi_R)
应用:
Xsyn = idwt2(cA1,cH1,cV1,cD1,'bior3.7');
33
多尺度二维小波
命令:wavedec2 格式:
1. [C, S]=wavedec2(X,N,’wname’) 2.[C, S]=wavedec2(X,N,Lo_D,Hi_D)
34
[C,S] = wavedec2(X,2,'bior3.7');
一维连续小波
1. coefs = cwt(s,scale,’wname’)
2. coefs = cwt(s,scale,’wname’,’plot’)
c=cwt(noissin,1:48,'db4','plot');
1.5
1
0.5
0
-0.5
-1
-1.5 0
100 200 300 400 500 600 700 800 900 1000
1.X=waverec(C,L,’wname’) 2.X=waverec(C,L,Lo_R,Hi_R) 例子: A0=waverec(C,L,’db1’); 重构最大误差: Err=max(abs(s-A0))
21
original Level 3 Approximation Original Approximation
3
scales a
C=cwt(noissin,2:2:128,’db4’,’plot’)
Absolute Values of Ca,b Coefficients for a = 2 4 6 8 10 ...
122 114 106
98 90 82 74 66 58 50 42 34 26 18 10
2 100 200 300 400 500 600 700 800 900 1000 time (or space) b
4
图形接口方式(GUI) 命令:wavemenu
5
6
7
一维离散小波分解
命令:dwt 格式:
[cA1,cD1]=dwt(X,’wname’)
[cA1,cD1]=dwt(X,Lo_D,Hi_D)
Approximation A1 75
Detail D1 80
70
60
65 40
60 20
55 0
50 -20
45
-40 40
35
-60
30
-80
11
0
2
4
6
0
2
4
6
逆变换恢复信号 命令:idwt 格式:
1. X=idwt(cA,cD,’wname’) 2. X=idwt(cA,cD,Lo_R, Hi_R) 3. X=idwt(cA,cD,’wname’,L) 4. X=idwt(cA,cD, Lo_R, Hi_R, L)
12
举例:A0=idwt(cA1,cD1,'db1',ls);
550 500 450 400 350 300 250 200 150 100
0
500 1000 1500 2000 2500 3000 3500 4000
13
多尺度一维分解 命令:wavedec 格式:
[C, L]=wavedec(X,N,’wname’) [C, L]=wavedec(X,N,Lo_D,Hi_D)
举例:
load leleccum;
s=leleccum(1:3920);
ls=length(s);
[cA1,cD1]=dwt(s,’db1’);
8
550 500 450 400 350 300 250 200
低频系数 150 100 0 800
500 1000 1500 2000 2500 3000 3500 4000 30
1. X = idwt2(cA1,cH1,cV1,cD1,'bior3.7'); 2. X = idwt2(cA1,cH1,cV1,cD1,'bior3.7'); 3. X = idwt2(cA1,cH1,cV1,cD1,'bior3.7'); 4. X = idwt2(cA1,cH1,cV1,cD1,'bior3.7');
scales a
Absolute Values of Ca,b Coefficients for a = 1 2 3 4 5 ...
46 43 40 37 34 31 28 25 22 19 16 13 10
7 4 1
100 200 300 400 500 600 700 800 900 1000 time (or space) b
O=‘a’ 低频,O=‘d’ 高频
10
举例:
A1=upcoef('a','cA1','db1',1,ls); D1=upcoef('d','cD1','db1',1,ls);
subplot(1,2,1);plot(A1);title('Approximation A1')
subplot(1,2,2);plot(D1);title('Detail D1')
O:‘a’低频;‘h’水平;‘v’垂直;‘d’对
角 30
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);
22
图形接口方式(GUI)
23
24
25
26
27
28
2. 二维离散小波
单尺度分解——dwt2 格式:
1. [cA1,cH1,cV1,cD1]=dwt2(X,’wname’)
2. [cA1,cH1,cV1,cD1]=dwt2(X,Lo_D,Hi_D)
cA1, cH1水平;cV1垂直;cD1对角 应用:
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));
%图像的多尺度二维小波分解
35
提取低频系数
命令:appcoef2 格式:
1. A=appcoef2(C,S,’wname’,N) 2. A=appcoef2(C,S,’wname’) 3. A=appcoef2(C,S,Lo_R,Hi_R) 4. A=appcoef2(C,S,Lo_R,Hi_R,N)
load wbarb;
figure(1);
image(X); colormap(map); colorbar;