这是《小波变换和motion信号处理》系列的第二篇,深入小波。第一篇我进行了基础知识的铺垫,第三篇主要讲解应用。
在上一篇中讲到,每个小波变换都会有一个mother wavelet,我们称之为母小波,同时还有一个father wavelet,就是scaling function。而该小波的basis函数其实就是对这个母小波和父小波缩放和平移形成的。缩放倍数都是2的级数,平移的大小和当前其缩放的程度有关。
还讲到,小波系统有很多种,不同的母小波,衍生的小波基就完全不同。小波展开的近似形式是这样:
其中的
就是小波级数,这些级数的组合就形成了小波变换中的基basis。和傅立叶级数有一点不同的是,小波级数通常是orthonormal basis,也就是说,它们不仅两两正交,还归一化了。
我们还讲了一般小波变换的三个特点,就是小波级数是二维的,能定位时域和频域,计算很快。但我们并没有深入讲解,比如,如何理解这个二维?它是如何同时定位频域和时域的?
在这一篇文章里,我们就来讨论一下这些特性背后的原理。
首先,我们一直都在讲小波展开的近似形式。那什么是完整形式呢?之前讲到,小波basis的形成,是基于基本的小波函数,也就是母小波来做缩放和平移的。但是,母小波并非唯一的原始基。在构建小波基函数集合的时候,通常还要用到一个函数叫尺度函数,scaling function,人们通常都称其为父小波。它和母小波一样,也是归一化了,而且它还需要满足一个性质,就是它和对自己本身周期平移的函数两两正交:
另外,为了方便处理,父小波和母小波也需要是正交的。可以说,完整的小波展开就是由母小波和父小波共同定义的。
其中
是母小波,
是父小波。需要提醒一点的是,这个正交纯粹是为了小波分析的方便而引入的特性,并不是说小波变换的基就一定必须是正交的。但大部分小波变换的基确实是正交的,所以本文就直接默认正交为小波变换的主要性质之一了。引入这个父小波呢,主要是为了方便做多解析度分析(multiresolution analysis, MRA)。说到这里,你的问题可能会井喷了:好好的为什么出来一个父小波呢?这个scaling function是拿来干嘛的?它背后的物理意义是什么?wavelet function背后的物理意义又是什么?这个多解析度分析又是什么呢?不急,下面,我们围绕一个例子来巩固一下前面的知识,同时再引出新的特性。
假设我们有这样一个信号:
该信号长度为8,是离散的一维信号。我们要考虑的,就是如何用小波将其展开。为了方便讲解,我们考虑最简单的一种小波,哈尔小波。下面是它的一种母小波:
那如何构建基于这个母小波的基呢?刚才提到了,要缩放,要平移。我们先试试缩放,那就是ψ(2n):
但这样的话,它与自己的内积就不是1了,不符合小波基orthonormal的要求,所以我们要在前面加一个系数根号二,这样我们就得到了另一个哈尔小波的basis function:
同理,我们可以一直这样推广下去做scale,得到4n,8n,…….下的basis function。当然在这个例子里,我们信号长度就是8,所以做到4n就够了。但推广来说,就是这种scaling对母小波的作用为
,这是归一化后的表示形式。
平移的话也很简单,我们可以对母小波进行平移,也可以对scale之后的basis function进行平移。比如对上一幅图中的basis function进行平移,就成了
看得出来,平移后的basis function和母小波以及仅仅scale过的小波,都是正交的,附合小波basis的特点。如果我们用ψ(n)来表示这个mother wavelet,那么这些orthonormal basis函数可以写成:
这里的k是可以看成时域的参数,因为它控制着小波基时域的转移,而j是频域的参数,因为它决定了小波基的频率特性。看到这里,你应该会感觉很熟悉,因为这里的平移和变换本质和刚才对scaling function的平移变换是一模一样的。
这样,我们就有了针对此信号space的哈尔小波basis组合:
图1
可以看出,我们用到了三层频率尺度的小波函数,每往下一层,小波的数量都是上面一层的两倍。在图中,每一个小波基函数的表达形式都写在了波形的下面。
等等,你可能已经发现了,有问题。这里为什么多了个没有函数表达式的波形呢?这货明显不是wavelet function阿。没错,它是之前提到的scaling function,也就是父小波。然后你可能就会问,为啥这个凭空插了一个scaling function出来呢?明明目标信号已经可以用纯的小波基组合表示了。是,确实是,就算不包括scaling function,这些小波函数本身也组成了正交归一基,但如果仅限于此的话,小波变换也就没那么神奇的功效了。引入这个scaling function,才能引入我们提到的多解析度分析的理论,而小波变换的强大,就体现在这个多解析度上。那在这里,我们怎么用这个多解析度呢?这个哈尔小波basis组合是怎么通过多解析度推导出来的呢?
话说在数学定义中,有一种空间叫Lebesgue空间,对于信号处理非常重要,可以用L^p(R)表示,指的是由p次可积函数所组成的函数空间。我们在小波变换中要研究的信号都是属于L^2(R)空间的,这个空间是R上的所有处处平方可积的可测函数的集合,这样就等于对信号提出了一个限制,就是信号能量必须是有限的,否则它就不可积了。小波变换的定义都是基于但不限于L^2(R)中的信号的。这玩意的特性要具体解释起来太数学了,牵涉到太多泛函知识,我就不在这里详述了。而且老实说我也没能力完全讲清楚,毕竟不是学这个的,有兴趣可以参考wiki。总之你记住,小波变换研究中所使用的信号基本都是平方可积的信号,但其应用不限于这种信号,就行了。
对L^2(R)空间做MRA是在干嘛呢?就是说,在L^2(R)空间中,我们可以找出一个嵌套的空间序列
,并有下列性质:
(i) ![]()
(ii) ![]()
(iii) ![]()
(iv) ![]()
(v) 有这样一个方程
,
是
的orthonormal basis。
我来简单解释一下这些性质。这个V_j都是L^2(R)空间中的子空间,然后他们是由小到大的,交集是{0},因为这是最小的子空间,并集就是L空间。是不是有点难以理解?没关系,看看下面这个图就清楚了:
这个图是圈圈套圈圈,最里面的圈是V0,之后分别是V1,V2,V3,V4 。那他们有趣的性质就是,假如有一个函数f(t)他属于一个某空间,那你将其在时域上平移,它还是属于这个空间。但如果你对它频域的放大或缩小,它就会相应移到下一个或者上一个空间了。
同时我们还知道,你要形容每一个空间的话,都需要有对应的orthonormal basis,这是必然的,那对于V0来讲,它的orthonormal basis就是
这一系列函数是什么呢?是
的时域变换,而且我们刚才也说了,时域上平移,是不会跳出这个空间的。这样,我们就可以说,由这一系列basis所定义的L^2(R)子空间V0被这些basis所span,表示成:
k从负无穷到正无穷。上面的bar表示这是一个闭包空间,也就是说
这样,我们就定义了基本的V0这个子空间。刚才说了,这个子空间的基都是对
的整数时域变换,这里我们称
为scaling function,所以换个说法,就是说这里整个子空间V0,由scaling function和其时域变换的兄弟们span。
当然,如果这个scaling function只是用来代表一个子空间的,那它的地位也就不会这么重要了。刚才我们提到,这个嵌套空间序列有一个性质,
。这就是这个函数,如果你对它频域的放大或缩小,它就会相应移到下一个或者上一个空间了。这个性质就有意思了,它代表什么呢?对于任何一个包含V0的更上一层的空间来讲,他们的基都可以通过对scaling function做频域的scale后再做时域上的整数变换得到!推广开来就是说,当
我们有
这也就意味着,对于任何属于V_j空间的函数f(t),都可以表示为:
到这里,我们就明白这些个子空间和那个凭空冒出来的scaling function的作用了。scaling的构建这些不同的子空间的基础,当j越大的时候,每一次你对频率变换后的scaling function所做的时域上的整数平移幅度会越小,这样在这个j子空间里面得到的f(t)表示粒度会很细,细节展现很多。反之亦然。通俗点说,就是对scaling function的变换平移给你不同的子空间,而不同的子空间给你不同的分辨率,这样你就可以用不同的分辨率去看目标信号。
下面就是时候看看什么是MRA equation了,这是更加有趣,也是更加核心的地方。通过刚才的讲解,V0属于V1,那scaling function
是在V0中的,自然也在V1中了。我们把他写成V1的基的线性组合,那就是
其中的h(n)是scaling function的系数,也叫做scaling filter或者scaling vector,可以是实数,也可以是虚数。根号2是为了维持norm为1的。看,在这个公式里,我们就把属于V0的函数用V1的基表示出来了。同理,我们可以循环如此,把属于V0的
在V2, V3, …, Vn中表示出来。这些方程就是MRA equation,也叫refinement equation,它是scaling function理论的基础,也是小波分析的基础之一。
好,稍微总结一下。到现在,已经讲了关于scaling function的基本理论知识,知道了信号空间可以分为不同精细度的子空间,这些子空间的basis集合就是scaling function或者频率变换之后的scaling function,如下图所示:
上图就是四个子空间的basis集合的展览。通过前面的讨论,我们还知道,一开始的scaling function可以通过更精细的子空间的scaling function(它们都是对应子空间的basis)来构建。比如
对于更加finer的scale:
图2
依此类推。实际上,对于任何scale和translate过的scaling function,都可以用更加精细的scale层面上的scaling function构建出来。
然后,我们有各种scale下的scaling function了,该看看它们分别所对应的嵌套的空间序列
了。先看看V0,自然就是以基本的scaling function为基础去span出来的:
这个不新鲜,刚才就讲过了。这个子空间代表什么样的信号?常量信号。道理很简单,这个scaling function在整个信号长度上,没有任何变化。继续往下看:
这个相比V0更加finer的子空间,代表着这样一种信号,它从1-4是常量,从5-8是另一个常量。同理我们有:
V2代表的信号,是分别在1,2; 3,4; 5,6; 7,8上有相同值的信号。那么V3呢?则表示任何信号,因为对于V3来讲,任何一个时间刻度上的值都可以不一样。而且现在,我们也可以通过上面的一些scaling functions的波形验证了之前提到的多解析度分析中的一个核心性质,那就是:
我们之前讲了一堆多解析度的理论,但直到现在,通过这些图形化的分析,我们可能才会真正理解它。那好,既然我们有一个现成的信号,那就来看看,对这个信号作多解析度分析是啥样子的:
你看,在不同的子空间,对于同一个信号就有不同的诠释。诠释最好的当然是V3,完全不损失细节。这就是多解析度的意义。我们可以有嵌套的,由scaling function演变的basis function集合,每一个集合都提供对原始信号的某种近似,解析度越高,近似越精确。
说到这里,可能你对scaling function以及多解析度分析已经比较理解了。但是,我们还没有涉及到它们在小波变换中的具体应用,也就是还没有回答刚才那个问题:凭空插了一个scaling function到小波basis组合中干嘛。也就是说,我们希望理解scaling function是怎么和小波函数结合的呢,多解析度能给小波变换带来什么样的好处呢。这其实就是是小波变换中的核心知识。理解了这个,后面的小波变换就是纯数学计算了。
好,我们已经知道,对于子空间V0,basis是scaling function:
对应的小波函数是:
然后子空间V1的basis集合是这俩哥们:
看出什么规律了么?多看几次这三个图,你会惊讶地发现,在V0中的scaling function和wavelet function的组合,其实就是V1中的basis!继续这样推导,V1本来的的basis是:
然后V1中对应的wavelet function是
他们的组合,本质上也就是V2的basis(参考图2)。你继续推导下去,会得到同样的结论:在scale j的wavelet function,可以被用来将Vj的basis扩展到V(j+1)中去!这是一个非常非常关键的性质,因为这代表着,对任何一个子空间Vj,我们现在有两种方法去得到它的orthonormal basis:
2. 第二种就是它上一个子空间的basis
,对任意k,以及上一级子空间的wavelet function
,对任意k。
第二种选择能给我们带来额外的好处,那就是我们可以循环不断地用上一级子空间的scaling function以及wavelet function的组合来作为当前子空间的基。换句话说,如果针对V3这个子空间,它实际上就有四种不同的,但是等价的orthonormal basis:
1. 本级(V3)的scaling function basis set
2. 上一级(V2)的scaling function + wavelet function;
3 . 上上一级(V1)的scaling function + 上上一级(V1)的wavelet function + 上一级(V2)的wavelet function;
4. 上上上一级(V0)的scaling function + 上上上一级(V0)的wavelet function + 上上一级(V1)的wavelet function + 上一级(V2)的wavelet function
好,看看最后一种选取方式,有没有感到眼熟?对了,它就是我们之前提到的“针对此信号space的哈尔小波basis组合”,参见图1。现在我们知道了,这个scaling function不是凭空插进去的,而是通过不断的嵌套迭代出来的:)
那为什么我们最后选定的是这种选取方式呢?实际上,刚才介绍的这个性质已经告诉我们,对于任何的scale j0,我们都可以给我们的signal space找到一组orthonormal basis,这个basis是通过组合scale j0上的scaling function以及所有在scale j,j>=j0上的wavelets得到的。这样,基于这个orthonormal basis,所有信号空间中的信号都可以写成组成这个basis的functions的线性组合:
对应的系数的计算和平常一样:
这,就是最终的,也是最核心的,小波变换形式。不管是信号压缩,滤波,还是别的方式处理,只要是用小波变换,都逃不出这个基础流程:
1. 选取合适的wavelet function和scaling function,从已有的信号中,反算出系数c和d。
2. 对系数做对应处理
3. 从处理后的系数中重新构建信号。
这里的系数处理是区别你的应用的重点。比如图像或者视频压缩,就希望选取能将能量聚集到很小一部分系数中的小波,然后抛弃那些能量很小的小波系数,只保留少数的这些大头系数,再反变换回去。这样的话,图像信号的能量并没有怎么丢失,图像体积却大大减小了。
还有一个没有解释的问题是,为什么要强调尺度函数和小波函数组成一个orthonormal basis呢?计算方便是一方面,还有一个原因是,如果他们满足这个性质,就满足瑞利能量定理,也就是说,信号的能量,可以完全用每个频域里面的展开部分的能量,也就是他们的展开系数表示:
到这里,我们对小波变换的形式就讲完了。虽然是用的最简单的哈尔小波为例子,但举一反三即可。我们着重介绍了多解析度分析以及它给小波变换带来的杀手锏:时域频域同时定位。结束之前,再多说几句小波变换的意义。我们拿刚才例子中V3子空间的第二种可选择的orthonormal basis作为例子:
左边这四个basis组成元素,也就是scaling functions,的系数,表征的是信号的local平均(想想它们和信号的内积形式),而右边的这四个basis组成元素,也就是wavelet functions,的系数则表征了在local平均中丢失的信号细节。得益于此,多解析度分析能够对信号在越来越宽的区域上取平均,等同于做低通滤波,而且,它还能保留因为平均而损失的信号细节,等同于做高通滤波!这样,我们终于可以解释了wavelet function和scaling function背后的物理意义了:wavelet function等同于对信号做高通滤波保留变化细节,而scaling function等同于对信号做低通滤波保留平滑的shape!
对小波变换的基础知识,我们就讲到这里。需要注意的是,这只是小波变换最基本最基本的知识,但也是最核心的知识。掌握了这些,代表你对小波变换的物理意义有了一定的了解。但对于小波变换本身的讲解,一本书都不一定能将讲透,还有很多的基础知识我都没有讲,比如如何构建自己的scaling function,选取合适的系数集h[k],并由此构建自己的wavelet functions。所以,如果有深入下去研究的同学,好好买一本书来看吧。而只是希望用小波变换来服务自己的应用的同学,个人觉得这些知识已经足够让你用来起步了。


























”3 . 上上一级(V1)的wavelet function + 上上一级(V1)的wavelet function + 上一级(V2)的wavelet function;”
typo: 应为 v1 wavelet function + v1 scaling function + v2 wavelet function.
已改,多谢!
坐等第三弹:)
very good
很好,难得有这样文章。尽快出第三篇
sure, will definitely continue once I finish my intern
你好,看了你的文章,启发很大。请教两个小问题:
1.为什么有一些小波的书籍在小波基函数的形式与你不同,就是采用的j,符号与你的相反。这两种形式哪一种常用一些?
2.你的哈尔母小波,内积不为1吧。3*1/8 + 3*1/8 =3/4
初学小波,请不吝指教
1 It doesn’t really matter
2 The inner product of mother wavelet with itself is unity. The inner products between the mother wavelet and its shifts and dilates of the mother are zero.
Got it
Thanks
这是一个离散信号,一共8个点,所以内积[1/(2*sqrt(2))]^2*4+[-1/(2*sqrt(2))]^2*4=1,应该没有错的
下面说错啦,讲的 是范数=1,不好意思
对2 ,1到4 指的是第1、2、3、4段时间,所以是4*1/8=1/2,5到8同理,总共是1
你的文章太精彩了,谢谢!第三篇怎么打不开呢
I am currently busy with work in Google. Will only be able to write the third one after my intern
1
你好,我想做视频运动目标检测,可否利用连续的两帧做小波变换后相对应能量系数相减,其绝对值大于一阈值,作为运动目标的判别依据?谢谢!
有一个地方:“对于任何的scale j0,我们都可以给我们的signal space找到一组orthonormal basis,这个basis是通过组合scale j0上的scaling function以及所有在scale j,j>j0上的wavelets得到的。” 这里是不是应该改为“j>=j0上的wavelets得到的”呢,包括下面的S(n)公式。
非常棒的文章!
Good work!
“好,我们已经知道,对于子空间V0,basis是scaling function” 请问V0空间里的小波函数是如何用scailing function表示的啊?
小波函数和尺度函数不在同一个人空间里 是吧?
No, 他们在一个空间,只不过一个母小波,一个是父小波
那一个空间中的母小波和父小波可不可以理解成类似二维坐标系中的 x坐标和y坐标呢?
如果是,那“好,我们已经知道,对于子空间V0,basis是scaling function” 这句话怎么理解(是不是因该是说 “basis是scaling function和其对应的小波函数”)?
如果不是,请指教。
恕我愚钝,有些没看懂。
小波的basis的归一化是指什么?
“和傅立叶级数有一点不同的是,小波级数通常是orthonormal basis,也就是说,它们不仅两两正交,还归一化了。”
这个归一化我懂了,看到后面那个例子终于明白了。早先以为scale up以后一定会造成basis长度不能保持1的,没想到后面还乘上了系数。
必须顶啊啊啊!!!!
为啥好文章都坑了呢?。。。。楼主忙的话,先介绍点好的书行不行啊?
您是指第三篇么?我一直未写第三篇的主要原因是原本规划的这篇内容我们后来写成论文了,未发表之前无法公开。现在论文已经被接受,我准备过段时间就把论文放上来
1、取值范围为0 <= n < 4,4 <= n <= 8吧?
2、“所以我们要在前面加一个系数根号二”应该为“所以我们要在前面加一个系数2”吧?
1 哪里的取值范围?
2 你是说前面的归一化?应该是根号2
哈尔小波那个地方
楼主解释得不错,不过某些书籍上是从父小波开始再到母小波的(《小波与傅里叶分析基础》,第四章haar小波),貌似能更加清晰啊。支持楼主发表更多类似的好文!
v1=span(根号2*φ(2n)-根号2*φ(2n-1))
应为:v1=span(根号2*φ(2n)-根号2*φ(2n-8))
写的太好了,我要哭了!上网招了N多中外的资料,就没见过楼主写的这么详细这么生动的。把我有疑惑的地方全部解答了,就好像知道我在想什么一样,太高明了。
楼主太给力了
楼主写的太好了,我终于对小波变化有点理解了。
就是对去噪时,对这些系数怎么处理
很赞,比天朝那些渣一样的教科书强多了。
另外有些书V_j和W_j定义是反着来的,也就是2^j和2^(-j)的区别。
小波变换网文精粹:小波变换教程貌似要全面一些
非常感谢你对小波变换深入浅出的介绍,我现在明白了,有个问题:有做多解析度分解的快速算法吗?
“但这样的话,它与自己的内积就不是1了,”这句话话里,内积是1还是0呢?我怎么算出来是0呢?
麻烦解答一下,谢谢啦!!!
“这个V_j都是L^2(R)空间中的子空间,然后他们是由小到大的,交集是{0},因为这是最小的子空间,并集就是L空间”与“通过刚才的讲解,V0属于V1,那scaling function是在V0中的,自然也在V1中了。”是不是前后矛盾呢?
麻烦给看一下是怎么回事儿呢,谢谢!
请问:在V0中的scaling function和wavelet function的组合,其实就是V1中的basis这句话中,sacling function 和 wavelet function 是通过怎么样的组合得出V1中的basis的?
就是简单的相加减啊
就是简单的相加减啊。
但是在图中,V0的basis(scaling function) 和对应的wavelet function 相加的话第一段不是1/sqrt(2)吗?怎么变成1/2了呢?
图上都是normalization后的
啊。。。懂了,谢谢!!
楼主有没有数字信号处理方面比较通俗易懂点的经典教材推荐,最近在搞一些离散数字信号的分析,需要补充知识。。非常感谢