第4章 小波变换的实现技术
4.1 Mallat算法
??{h?}、g??{g?n}、h?{hn}、g?{gn}为实系数双双正交小波变换的Mallat算法:设hn?,g正交小波滤波器。h?是小波分析滤波器,h,g是小波综合滤波器。h表示h的逆序,
即hn?h?n。若输入信号为an,它的低频部分和高频部分以此为an?1和dn?1,小波分解与重构的卷积算法:
n?1n?)??a?D(a?h ?n?1n?)?D(a?g??dn?1 an?(Uan?1)?h?Ud(?)g
先进行输入信号和分析滤波器的巻积,再隔点采样,以形成低频和高频信号。对于有限的数据量,经过多次小波变化后数据量大减,因此需对输入数据进行处理。
4.1.1 边界延拓方法
下面给出几种经验方法。 1. 补零延拓
是假定边界以外的信号全部为零,这种延拓方式的缺点是,如果输入信号在边界点的值与零相差很大,则零延拓意味着在边界处加入了高频成分,造成很大误差。实际应用中很少采用。
...,0,s0,s1,s2,...,sn?1,0,0,...
???????2.简单周期延拓
将信号看作一个周期信号,即sk?n?sk。简单周期延拓后的信号变为
...,sn?1,s0,s1,s2,...,sn?1,s0,s1,s2,...,sn?1,s0,s1,s2,...,sn?1,s0,...???????????????????????????
这种延拓方式的不足之处在于,当信号两端边界值相差很大时,延拓后的信号将存在周期性的突变,也就是说简单周期延拓可在边界引入大量高频成分,从而产生较大误差。
3. 周期对称延拓
这种方法是将原信号在边界上作对称折叠,一般分二
1)当与之做卷积的滤波器为奇数时,周期延拓信号为
2)当与之做卷积的滤波器为偶数时,周期延拓信号为
sn?1,sn?1,sn?2,...,s1,s0,s0,s1,s2,...,sn?1,sn?1,sn?2,...,s1,s0,s0,...?????????????????????...sn?2,sn?1,sn?2,...,s3,s2,s1,s0,s1,s2,...,sn?2,sn?1,??????????????????sn?2,...,s2,s1,s0,s1,...???????4. 光滑常数延拓
在原信号两端添加与端点数据相同的常数。
...,s0,s0,s0,s1,s2,...,sn?1,sn?1,sn?1,...?????????????????5. 平滑延拓
在原信号两端用线性外插法补充采样值,即沿着信号两端包络线的一阶导数方向增加采样
值。
? 实际应用时,在变换前对输入信号进行边界进行延拓,使之变成无限长的信号,变换后,、 在尽可能不丢失信息的情况下,适当截取部分变换系数作为低频信号和高频信号,以保证小波分解后的数据总量保持不变。见下图。
为实现完全重构,先对有限长序列进行延拓,然后再插值和滤波,对滤波后的信号相加,再 适当截取,以恢复原信号。见下图。
……………………………………………………………………………………………………
4.1.3 用小波处理函数/信号的基本步骤 1. 初始化
?
对于时间t的连续信号f(t),选择适当的j?J,使得2J大于信号的抽样频率(不同
的应用决定了不同的抽样率)。 ?
设信号在最高初始分辨率级J下的光滑逼近为fj=Pjf(t)?Vj,则有
fj(t)??ckJk?j,k(t)
?1由式(3-22), 既N1/2an?f(NLn)可得
ck?2J?J/2f(k/2)
J在实际应用中,由原信号确定的k的范围是有限的,譬如信号的持续时间为0?t?1,则k的范围为0?k?2J?1。
2. 小波分解
应用Mallat 算法,得到离散信号的小波变换{c0,d0,d1,...,dJ?1},相应地,得到f(t)的分 辨率表示:
fJ(t)?f0(t)?d0(t)?d1(t)?......?dJ?1(t)
其中f0(t)?V0,d0?W0,d1?W1,..., dj(t)?Wj。具体地
f0(t)?c0?0,0(t)?c0?(t),dj(t)?00k?k?dk?j,k(t),j?0,1,...,J?1
j实际应用中,可以根据需要控制分解的级数,不一定达到j?0级。
3. 小波系数处理
针对不同的应用目标,对小波系数{c0,d0,d1,...dJ?1}进行处理获得新的小波系数
?0,d?1,...d?J?1}。譬如,在进行信号的数据压缩时,将绝对值小于某一阈值的系数置为?0,d{c零,保留剩余的系数,用于重构信号;而在去噪时,将绝对值小于某一阈值的系数置为零,用于重构去噪信号。
4. 小波重构
?0,d?1,...d?J?1},?J。?0,d对处理后的小波系数{c重构出分辨率j?J时的离散信号c一般?J是cJ的逼近信号。进而可以得到fJ(t)或f(t)的重构信号fJ(t)。 地,c对于离散信号的小波处理过程为 ,设{bn}(n?0,1,...,N?1)是一个离散输入信号,采样间隔为N?1,其中N?2。可将bn与f(t)?L?an?L,n(t)?VL联系起来(?是正交尺
n?1L度函数),使bn为f(t)的均匀采样,即f(t)=f(Nn)。根据式(3-22)可得NL1/2Lan?bn。
由此可获得f(t)在最高分辨率L下的初始系数序列{an}。然后,利用Mallat算法对该序列进行小波分解、对小波系数处理以及处理后的系数进行小波重构等。
4.1.4 应用举例
[例4.1]对单位区间上一个连续信号,将信号离散化为28个采样值,相应的逼近信号记为
f8(t)。用Haar小波对信号进行3级小波分解,写出信号f8(t)的多分辨表示,并画出该信
号在不同分辨率下的逼近信号f7(t)、f6(t)和f5(t)的图形。
假设信号为f(t)?sin(4?t)?12cos(10?t),它在V8中的投影记为f8(t),则f8(t)的图
形见图4-2a。用Haar小波对信号进行3级小波分解,其多分辨表示为
f8(t)?f7(t)?d7(t)
?f6(t)?d6(t)?d7(t) ?f5(t)?d5(t)?d6(t)?d7(t)
其中f7(t)、f6(t)、f5(t)波形如图4-2b、c、d所示。
图4-2 一个函数的多分辨逼近函数
[例4.2] 对于例4-2中的信号及逼近信号。若用正交尺度函数和正交小波函数进行小波分 析解,则可得到:
f(t)?f0?d0?d1?d2?,...,?d7
0其中,f0(t)?c0?(t)?V0,dj(t)??dk?kjk?j,k(t)?Wj,j?0,1,...,7
1)用Haar尺度函数和Haar小波函数分解信号,令绝对值最小的80%和90%的系数为0,对信号进行小波压缩。画出相应的重构信号波形,并求出相应的相对误差。
2)用Daubechice尺度函数和Daubechice小波 (如db2)分解信号,令绝对值最小的80%和90%的系数为0,对信号进行小波压缩。画出相应的重构信号波形,并求出相应的相对差。 3)比较1)和2)的压缩效果。
4)用FFT在相同条件下压缩信号,所得的相对误差如何。 求解过程如下:
1) 用Haar小波函数分解信号,令绝对值最小的80%和90%的系数为0,得到重构信号图
形如图4-3a所示。所得的均方差为0.7991;相对误差为0.0050。 如果令绝对值最小的90%的系数为0,得到重构信号图形如图4-3b所示。 在这种情况下,得到均方误差为2.9559,相对误差为0.0185。
图4-3 用Haar小波压缩后的重构信号
2) 用Daubechice小波函数(如Db2)分解信号,令绝对值最小的80%的系数为0,得到的重构信号波形如图4-4a所示,得到均方误差为0.0277,相对误差为0.00017。如果令绝对值最小的90%的系数为0,得到重构信号图形如图4-4b所示,这时得到均方误差为0.2159,相对误差为0.0014。