第四章 小波变换的实现技术
description
Transcript of 第四章 小波变换的实现技术
第四章 小波变换的实现技术 Mallat 算法 多孔算法 小波变换的提升实现
清华大学计算机系 ---孙延奎 ---2005
Mallat 算法1
1
( )( )
j j
j j
a D a hd D a g
1 1( ) ( )j j ja Ua h Ud g
卷积法实现小波变换在实际中具有广泛的应用。 实际应用中的边界处理问题:1.边界延拓方法 零延拓 周期延拓 周期对称延拓法
光滑常数延拓法
0 1 2 1,0, , , , , ,0,0,ns s s s
1 0 1 2 1 0 1 2 1 0 1 2 1 0, , , , , , , , , , , , , , , , , ,n n n ns s s s s s s s s s s s s s
2 1 2 1 0 1 2 1 2 1 0 1, , , , , , , , , , , , , , , ,n n n ns s s s s s s s s s s s
2 1 1 2 1 0 0 1 2 1 1 2 1 0 0 1, , , , , , , , , , , , , , , , , , , ,n n n n n ns s s s s s s s s s s s s s s s
0 0 0 1 2 1 1 1 1, , , , , , , , , , ,n n n ns s s s s s s s s
Mallat 算法的 Matlab 实现• dwt() [cA,cD] = dwt(X,Lo_D,Hi_D) [cA,cD] = dwt(X,Lo_D,Hi_D,'mode',MODE)
lxX 的长度为 , 滤波器的长度为 lf
对于周期延拓方式, cA , cD 的长度均为 / 2lx
对于其他延拓方式, cA , cD 的长度均为 1 / 2lx lf
• idwt() X = idwt(cA,cD,Lo_R,Hi_R) X = idwt(cA,cD,Lo_R, Hi_R , 'mode',MODE)
对于周期延拓方法, 2lx la 对于其他延拓方式, 2 2lx la lf
特点 :1) 能够实现重构 .
2) 难以用于数据压缩应用
具有延拓功能的二带分析 / 综合系统 ( )x n 延拓
( )x nh
g
0v
1v
2
2
0y
1y
N/2点截取
N/2点截取
0y n
1y n
问题 : 在什么情况下 , 能够确保完全重构 ?
用小波处理函数 / 信号的基本步骤 和已知 是正交尺度函数与小波 ,则用小波处理函数
( )f t 的基本过程包括 :
初始化( )f t J J JP f t V设信号 在最高初始分辨率级 下的光滑逼近为
J JP f t f t记 ,则有 ,J
J k J kk
f t c t 。其中,
/ 22 / 2J J Jkc f k
小波分解 0 0 1 1, , , , Jc d d d Jc
用小波处理函数 / 信号的基本步骤 小波系数处理
小波重构 0 0 1 1, , , , Jc d d d 0 0 1 1, , , , Jc d d d
0 0 1 1, , , , Jc d d d Jc Jf t
用小波处理离散信号的基本步骤 nb 0,1, , 1n N 2LN 其采样间距为 1N ,
,Ln L n L
n
f t a t V 1nb f N n
1/ 2 Ln nN a b
Lna
使得
做小波分解、对小波系数处理以及对处理后的系数进行小波重构等 对 Lna说明 : nb1) 对 做小波分解 , 如何 ?
2) 若 nb 的采样间距为 1,如何 ?
Mallat 算法应用举例 1sin 4 cos 10
2f t t t 82
8f t
将该信号离散化为个采样值,相应的逼近信号记为 。
7f t 6f t 5f t 的图形。
用 Haar 小波进行分解,画出 8 8 8f t P f t V
8 7 7
6 6 7
5 5 6 7
f t f t d t
f t d t d t
f t d t d t d t
88 8,k k
k
f t c t
77 7,
66 6,
55 5,
k kk
k kk
k kk
f t c t
f t c t
f t c t
8/ 2 8 8
7 / 2 7 7
6/ 2 6 6
5/ 2 5 5
2 / 2
2 / 2
2 / 2
2 / 2
k
k
k
k
c f k
c f k
c f k
c f k
若记 8 8/ 2 kf k b , 而 8kb 的三级多分辨逼近信号为 7
kb , 6 5,k kb b , 则容易算出
7 7 6 6 6 5 5
2
1 1 1 1/ 2 , / 2 , / 222 2 22
k k k kf k b f k b b f k b 。
8 8/ 2 8
7 8/ 2 7
6 8/ 2 6
7 8/ 2 5
2
2
2
2
k k
k k
k k
k k
b c
b c
b c
b c
8f t 7f t
6f t 5f t
0 0.2 0.4 0.6 0.8 1-1.5
-1
-0.5
0
0.5
1
1.5
0 0.2 0.4 0.6 0.8 1-1.5
-1
-0.5
0
0.5
1
1.5
0 0.2 0.4 0.6 0.8 1-1.5
-1
-0.5
0
0.5
1
1.5
0 0.2 0.4 0.6 0.8 1-1.5
-1
-0.5
0
0.5
1
1.5
8f t 7f t
6f t 5f t
Mallat 算法应用举例• 对同一个离散信号应用不同的小波变换以及 FFT 变换进行压缩的处理效果与分析。
已知上例中的离散信号 8 0,1, , 255kb k
问题: 1 )用 Haar 尺度函数和小波分解信号; 2 )用 D4 尺度函数和小波分解信号; 3 )用 FFT 变换分解信号。令绝对值最小的 80% 和 90% 系数为 0 对信号进行小波压缩,画出相应的重构信号的图形,并求出相应的相对误差。 对各种变换的效果进行对比分析。
Mallat 算法应用举例Haar 小波
均方差: 0.7991 2.9559
相对误差: 0.0050 0.0185
取 0 比例: 80% 90%
D4 小波均方差: 0.0277 0.2159
相对误差: 0.00017 0.0014
取 0 比例: 80% 90%
FFT 变换均方差: 0.0012 0.0025
相对误差: 7.34×10-6 1.59×10-5
取 0 比例: 80% 90%
多孔算法 • 应用 Mallat 算法分析信号时存在的不足
多孔算法• 二通道 Mallat 算法 z变换的滤波器形式
zjx
1zh
1zg
2
2
1 zjx
1 zjd
2
2
zh
zg
zjx
zjx
zG
zH
2
2
1 zjd1( )jd z
1( )jx z zG
zH
22( )jd z
22( )jx z
2 zjd
1( ) ( )H z h z
1( ) ( )G z g z
多孔算法• 二通道 Mallat 算法 z变换的滤波器形式
jx z
G z
H z
2 1jd z1( )jd z
1( )jx z 2G z
2H z
42( )jd z
2( )jx z
2( )jd z
4G z
4H z
3( )jd z
3( )jx z
83( )jd z
z 变换的等效易位性质
多孔算法 zjx
zG
zH
1( )jd z
1( )jx z 2zG
2zH
2( )jd z
2( )jx z 4zG
4zH
3( )jd z
3( )jx z说明 :1) 为什么称为多孔算法( a’trous algorithm ) ?
2) 与二通道 Mallat 算法之间的关系3) 其它叫法 : 非抽取小波变换 (Undecimated Wavelet Transform ),
平稳小波变换 (Stationary Wavelet Transform )
记 Jx x
, 则分解算法为:
1 2
1 2
J j
J j
j j
j j
d z x z G z
x z x z H z
多孔算法的实现j J
0j
1j j J jd x g 1j j J jx x h
1j j
While
End of While
1j
j J
1 112
j j J j j J jx x h d g
1j j
While
End of While
分解算法 重构算法
jh h注 : 为 的相邻两项之间插入2 1j 个零后得到的滤波器。
在 Matlab 小波工具箱中对应的函数 : swt() , iswt()
小波变换的提升实现 • 概述 1) 能够用于构造第一代小波,用户可根据需要来设计小波基。 2) 能够改进第一代小波变换算法。 3) 可用于构造第二代小波。
小波分解与重构的多相位表示 • 滤波器的多相位表示 滤波器 h 的多相位表示为:
2 1 2( ) ( ) ( )e oh z h z z h z
2( ) ke k
k
h z h z 2 1( ) ko k
k
h z h z 2 ( ) ( )( )
2eh z h zh z
2
1
( ) ( )( )2o
h z h zh zz
~1 1( ) ( )g z z h z ~
1 1( ) ( )g z z h z ~
1( ) ( )e oh z g z ~
1( ) ( )o eh z g z ~
1( ) ( )oeg z h z ~
1( ) ( )eog z h z
小波分解与重构的多相位表示 • 滤波器的多相位矩阵 滤波器 h 的多相位矩阵为:g和 ( ) ( )
( )( ) ( )
e e
o o
h z g zP z
h z g z
~ ~~
~ ~
( ) ( )( )
( ) ( )
e e
o o
h z g zP z
h z g z
滤波器 h 的对偶多相位矩阵为:g和
则小波滤波器的完全重构条件等价于: ~1( ) ( )TP z P z I
z 2
21( )TP z
a z
d z( )P z
2
2 1z
小波分解与重构的多相位表示
Laurent 多项式的 Euclidean 算法 zh
e
b
k
kk
kk zh
=
be kkzh zh 的次数两个 Laurent 多项式的带余除法可表述为: zrzqzbza zbzazq r z b z 或 0r z
两个 Laurent 多项式的欧几里德算法如下: zaza 0 zbzb 0 从 0i 开始进行如下的递归运算:
zbza ii 1 zbzazb iii %1
zbzazan ,gcd zan n 0zbn
则 ,且 是一个 Laurent多项式,其中为使 的最小数。
1 /i i iq z a z b z
Laurent 多项式的 Euclidean 算法
zb
zazq
za
ni i
n1
110
0
001
1
1
zazqzbza n
n
i
i
如果 an(z) 是一个单项式,则 a(z) 和 b(z) 是互素的。 注意与多项式带余除法和欧几里德算法的异同之处 .
多相位矩阵的因子分解det ( ) 1P z (1 )i m
K
若 ,则总存在 Laurent多项式 和以及非零常数 ,使得
( )iu z ( )ip z
1
1 01 ( ) 0( )
( ) 10 1 0 1/
mi
i i
u z KP z
p z K
( ) 0mp z 其中 。
有限滤波器多相位矩阵的提升分解算法 第 1 步,使用欧几里德算法得到:
第 2 步,计算
1
1
1 011 00 1
me i
i io
h z Ku zp zh z
00
0e e
o o
h z g zP z
h z g z
1
1
1 0 011 0 1/0 1
mi
i i
Ku zp z K
=
第 3 步,计算 mu z
02
0e e
o o
g z g zK
g z g z mu z
基于提升的正向小波变换流程图 2
2z
1( )u z
( )o z
( )e z
1( )p z
…
…
( )mu z
( )mp z
a z
d zK
1K
1~1 1 01/ 0 1 ( )
( )( ) 10 0 1
iT
i m i
K u zP z
p zK
a z
d z
K
1K
( )mp z
…
1( )p z 1( )u z
…
( )mu z
2
2 1z
时小波变换的提升实现算法 1 0u z
0 1 1, , , Nx x x x i ki k
k
u z u z i ki k
k
p z p z
,i i i il ls s d d 1, ,i m 若 分别是序列 的 z变换,且 ,i is z d z
1 1
1
i i i i
i i i i
s z s z u z d zd z d z p z s z
1 1 1 1
1 1
i i i i i i il l l k l kl
k
i i i i i i il l l k l kl
k
s s u d s u d
d d p s d p s
1,2, ,i m
1
1
( )( ) 1 0 1 ( )( )( ) ( ) 1 0 1
i
i
i i
i i
s zs z u zd zd z p z
正向小波变换的提升实现算法(预测步骤由奇序列预测偶序列开始) Step 1. 懒小波变换
02l ls x 0
2 1l ld x 12/,,1,0 Nl
Step 2. 提升与对偶提升For i =1 to m
1 1
1
i i i il l k l k
k
i i i il l k l k
k
s s u d
d d p s
Step 3. 比例变换12/,,1,0 Nl
For 1-/2 to0 Nl
/ml l
ml l
s s Kd Kd
时逆向小波变换的提升实现算法 Step 1. 比例变换
12/,,1,0 Nl
Step 2. 提升与对偶提升
For i = m to 1
Step 3. 逆懒小波变换12/,,1,0 Nl
For 1-/2 to0 Nl
1 0u z
/
ml lml l
s Ksd d K
1
1 1
i i i il l k l k
k
i i i il l k l k
k
d d p s
s s u d
0 02 2 1, l l l lx s x d
时提升算法的实现 1 0u z
11
1 0 1 ( ) 0( ) , ( ) ( ), 1
( ) 1 0 1 0 1/
ni
i ii i
v z KP z v z u z n m
p z K
11 1 01/ 0 1 ( )
( )( ) 10 0 1
iT
i n i
K v zP z
p zK
i ki k
k
v z v z i ki k
k
p z p z
1
1
( ) 1 0 ( )1 ( )( ) ( ) 1 ( )0 1
i ii
i i i
s z s zv zd z p z d z
1 1
1
i i i i
i i i i
d z d z p z s zs z s z v z d z
时正向小波变换的提升实现算法(预测步骤由偶序列预测奇序列开始) 1 0u z
Step 1. 懒小波变换0
2l ls x 02 1l ld x 12/,,1,0 Nl
Step 2. 提升与对偶提升For i =1 to n
Step 3. 比例变换12/,,1,0 Nl
For 1-/2 to0 Nl
1 1
1
i i i il l k l k
k
i i i il l k l k
k
d d p s
s s v d
/nl l
nl l
s s Kd Kd
两点说明1. 本质上我们可以根据它们的任一分解式写出小波变换的提升算法 如果在实际计算时已知 P z 的因子分解,设
则
1
1 0 1 01 0 1 0 1/
mi
i i
u z KP z
p z K
1
11
1 01 1/ 01 00 1
mi
i i
p z KP z
u z K
2. 尚未完全解决的问题 多相位矩阵分解存在极大的不唯一性,到底存在多少种分解方法?如何求出所有的分解?如何根据具体的应用,选择一种‘好’的分解方法 ?
( 5-3 )小波变换的提升实现~ 1 1 3 1 1{ , , , , }
4 2 2 2 2 2 2 2 4 2h 1 1 1{ , , }
2 2 2 2 2h
1~ 1 0 01 (1 )( )
(1 ) 1 0 1/0 1z
P zz
0.5 0.25 2
11 0 1/ 01 (1 )( )
(1 ) 1 00 1z
P zz
02l ls x 0
2 1l ld x
1 0 0 01( )l l l ld d s s
1 0 1 11( )l l l ls s d d
1l ls s 1 /l ld d
,
,
1 /l ls s 1
l ld d
0 1 1 11( )l l l ls s d d
0 1 0 01( )l l l ld d s s
02l lx s 0
2 1l lx d
,
正变换 逆变换
整数小波变换 提升算法的一大优点是,它存在整数提升算法,即在忽略归一化因子的情况下,将算子 1
2x
提升步骤中的算子 作用于每个
iu z 和 ip z
换的整数提升算法。 ,即可得到小波变
如( 5-3 )小波变换的整数版本如下: 0
2l ls x 02 1l ld x
1 0 0 01
1( )2l l l ld d s s
1 0 1 1
11( )2l l l ls s d d
特点:非线性变换
D4 小波变换的提升实现 1 2 3
0 1 2 3( )h z h h z h z h z 2 1 13 2 1 0( )g z h z h z h h z
0 1 2 31 3 3 3 3 3 1 3, , ,4 2 4 2 4 2 4 2
h h h h 其中
1 1~0 2 3 1
1 11 3 2 0
1
( ) ( )
3 1 01 011 3 2
3 3 2 0 10 1 1 3 104 42
h h z h z hP z P z
h h z h z h
z
z
1
3 1 03 3 21 0 1 01 2( ) 4 4 13 1 3 10 1 02
zP zz
D4 小波变换的提升实现 第一种实现方法 第二种实现方法
02l ls x 0
2 1l ld x
1 0 03l l ls s d
1 0 1 11
3 3 24 4l l l ld d s s
2 1 11l l ls s d
223 1l ls s
223 1l ld d
,
02l ls x 0
2 1l ld x 1 0 03l l ld d s
1 0 1 11
3 3 24 4l l l ls s d d
2 1 11l l ld d s
13 12l ls s
23 12l ld d
( 9-7 )小波变换的提升实现 ~ ~ ~ ~
2 2 1 14 2 0( ) ( ) ( )eh z h z z h z z h
~2 1
3 1( ) ( ) ( 1)oh z h z z h z
1 1~ 1 0 1 0 01 (1 ) 1 (1 )( )
(1 ) 1 (1 ) 1 0 1/0 1 0 1z z
P zz z
~ ~
4 3/h h 其中, 1 0/r s 0 0/s t 0 0 12t r r , ,, ,
~ ~ ~ ~
0 4 1 30 2 /r h h h h
~ ~ ~
1 3 30 0 1/s h h h r r 0 0 12t r r
,
,
1.586134342 0.052980118 0.882911075 0.443506852 1.230174105
说明 : JPEG2000 中 C 语言实现模块中尺度变换是: 1/s s 1 1.23017410558578 ;
2/d d 2 = 1.62578613134411
Lena 图像实验 :
1.842 2.938
~ ~ ~ ~ ~
2 4 4 1 31 /r h h h h h
~
3 1/h r
( 9-7 )小波变换的提升实现 1 11 0 1 0 1/ 01 (1 ) 1 (1 )
( )(1 ) 1 (1 ) 1 01 0 1
z zP z
z z
02l ls x 0
2 1l ld x
1 0 0 01( )l l l ld d s s
1 0 1 11( )l l l ls s d d
2 1 1 11( )l l l ld d s s
2 1 2 21( )l l l ls s d d
2l ls s 2 /l ld d
小波变换提升算法的实现技巧 任意长度信号小波变换的提升实现
0 1 1( , , , )Nx x x x 2NC 2
ND
( 9-7)小波变换的提升实现如下: 0
2l ls x 02 1k kd x 0,1, , 1l C 0,1, , 1k D
1 0 0 01( )k k k kd d s s
1 0 1 11( )l l l ls s d d
2 1 1 11( )k k k kd d s s
2 1 2 21( )l l l ls s d d
for 0l to 1C 2l ls s
:
for 0k to 1D
: 2 /k kd d
小波变换提升算法的实现技巧 利用少量辅助内存实现多尺度小波变换
0 0 0 0 0 00 0 1 1 1 1, , , , , ,C Ds d s d s d 必要性 : 0 0 0 0 0 0
0 1 1 0 1 1( , , , , , , , )C Ds s s d d d
算法过程由以下三步组成: 第 1 步, 1 2
CC 申请一个大小为 的数组 buffer 存放高频系数
1
0 0 00 1 1, , , Cd d d ,然后,在原空间中调整信号的低频系数的位置,
使 x变为 0 0 00 1 1 1( , , , , , , )C C Ns s s x x
第 2 步, 调整 1 1, , ,C C Nx x x 中的高频系数的位置使 x 变为 1 1
0 0 0 0 00 1 1 1 1( , , , , , , , , , )C C C C C Ds s s x x d d
第 3 步, 将 buffer 中暂存的高频系数 1
0 0 00 1 1, , , Cd d d 调整到 1 1, ,C C Cx x
占用的位置,使 x 变为 0 0 0 0 0 00 1 1 0 1 1( , , , , , , , )C Ds s s d d d
边界处理 • 对于( 5-3 )和( 9-7 )这些具有线性相位的滤波器,采用对称周期延拓则不仅可实现小波变换的完全重构,同时又不增加变换后的数据量。因此,在实现时我们可采用对称周期延拓的方法。
双正交小波变换的对称提升实现 • 多相位矩阵的对称因子分解 • 对称提升实现
多相位矩阵的对称因子分解 za 1za 1 zzy
kkk zzS k
n
kkk Sa
0
一个 Laurent多项式 称为对称的,如果 = 。记( 为非负整数),则对称 Laurent多项式都可表示为
的形式。
za
det ( ) 1P z (1 )i m
K
若 ,则存在惟一的 Laurent多项式 和以及非零常数
,使得
( )iu z ( )ip z
1
1 01 ( ) 0( )
( ) 10 1 0 1/
mi
i i
u z KP z
p z K
( ) 0mp z 其中 。
其中
2izu z 1 2
iz p z和 是对称 Laurent 多项式 .
1
0
( )im
i j ji j
j
u z u z z
1
0
( )in
i j ji j
j
p z p z z
计算对称提升因子的快速算法 g z h z基本思想 : 根据 和
理,有效地避免了传统提升因子算法中求解 的复杂计算,因而的不同大小关系,分以下两种情况处
mu z
更加实用。 ( 1)当 zhzg 时
2zhza e
m
iiiShh
1220 zb 21 zhz o
n
jjj Sh
01212记 = , = = 。
za ya1 zb yb1 ya1 yb1令 = , = ,对 和 应用多项式的欧几里德算法, 求出唯一的一组多项式 yqi Li ,,2,1
K和一个非零常数 ,使得
001
1
11
1 Kyqybya L
i
i 0K 其中, L 为偶数。
计算对称提升因子的快速算法 2
izu z 1 2iz p z yq i 12 yq i2
2/,,0 Li
由 = , ,求出( )。于是,
= 和( )iu z ( )ip z
1
1 01 ( ) 0( )
( ) 10 1 0 1/
mi
i i
u z KP z
p z K
zhzg zhzg ~~ ( 2)当 时,则 。
/ 2
1
1 01 010 1 0 1/
Li
i i
u z KP z
p z K
1/ 2
11
1 0 1 1/ 0( )
1 00 1
Li
i i
p z KP z
u z K
小波变换的对称提升实现 Step 1. 懒小波变换
02l ls x 0
2 1l ld x 12/,,1,0 Nl
Step 2. 提升与对偶提升For i =1 to m
Step 3. 比例变换
12/,,1,0 Nl
For 1-/2 to0 Nl
/ml l
ml l
s s Kd Kd
1 1 11
0
11
0
i
i
mi i i i il l j l j l j
j
ni i i i il l j l j l j
j
s s u d d
d d p s s