小波分析
小波包分解树
小波包将原始信号逐级向下分解。图1为用MATLAB绘制的小波包分解树,分解层数为3层。树中节点的命名规则如下:从(1,0)开始,(1,0)为1号,(1,1)是2号,依次类推,(3,0)是7号,(3,7)是14号。每个节点都有对应的小波包系数,此系数决定了频率的大小,即频域信息,节点的顺序决定了时域信息,即频率变化的顺序。
图2为信号的时间频率图,x轴表示信号的时间变化,y轴上显示的数字对应于图1中的节点,从下往上依次为7号,8号,10号,9号,13号,14号,12号,11号节点,其顺序是小波包自动排列的。为什么不是按照从小往大的顺序排列呢?这与小波包分解的原理有关。
以图1中小波包树的三层分解为例,小波包树中左边的节点是对上一节点的低通滤波,右边的节点是对上一节点的高通滤波。从根节点开始,每个节点的信号通过低通滤波和高通滤波之后都需要再进行一个向下采样的过程,即隔几个点采样一次,是一个降低采样率的过程,具体的这里为2倍下采样上,即只保留偶数序号的元素。经过高通滤波之后,下采样前的信号频谱带限于(pi/2,pi)上(负频率部分与此对称)。对这一高频信号进行2倍下采样可以分解为两步:(1)将频谱展宽2倍并且幅度减半;(2)将频谱以2pi为周期进行延拓。这样经过下采样后信号的频谱形状((0,pi)内的部分)恰好左右翻转了,即原先的高频(pi)变为了0,低频(pi/2)变为了高频(pi)。因此,经过小波包分解后,所有经过了高频滤波并下采样的分量的频谱顺序都要翻转一次,即最终的频谱顺序形成格雷码的顺序——从根节点(0,0)开始,自上而下,通过高频滤波器我们就认为是“1”,通过滤波器我们就认为是“0”,将这些二进制码从左到右排列就是000,001,011,010,110,111,101,100,分别对应于节点(3,0),(3,1),(3,3),(3,2),(3,6),(3,7),(3,5),(3,4)。
在这个例子中,信号的采样频率为12000Hz,根据采样定理,奈奎斯特采样频率为6000Hz,分解了3层,最后一层就是个频段,每个频段的区间长度是相同的,都是6000/8=750Hz。图2中8号频段和7号频段颜色最重,说明信号频率集中在这两个频段之间,即750Hz~1500Hz、0-750Hz之间,其次,10号频段即1500Hz-2250Hz上也有部分频率分布,其余频段几乎没有频率分布。因此,经过三层小波包分解,我们可以很明显地看出原信号的频率集中在低频部分,高频信息基本为0。如果分解层数更多,结果更精细。
形象易懂讲解算法I——小波变换
从傅里叶变换到小波变换,并不是一个完全抽象的东西,可以讲得很形象。小波变换有着明确的物理意义,如果我们从它的提出时所面对的问题看起,可以整理出非常清晰的思路。
下面我就按照傅里叶–>短时傅里叶变换–>小波变换的顺序,讲一下为什么会出现小波这个东西、小波究竟是怎样的思路。(反正题主要求的是通俗形象,没说简短,希望不会太长不看。。)
一、傅里叶变换
关于傅里叶变换的基本概念在此我就不再赘述了,默认大家现在正处在理解了傅里叶但还没理解小波的道路上。(在第三节小波变换的地方我会再形象地讲一下傅里叶变换)
下面我们主要讲傅里叶变换的不足。即我们知道傅里叶变化可以分析信号的频谱,那么为什么还要提出小波变换?答案就是方沁园所说的,“对非平稳过程,傅里叶变换有局限性”。看如下一个简单的信号:
做完FFT(快速傅里叶变换)后,可以在频谱上看到清晰的四条线,信号包含四个频率成分。
一切没有问题。但是,如果是频率随着时间变化的非平稳信号呢?
如上图,最上边的是频率始终不变的平稳信号。而下边两个则是频率随着时间改变的非平稳信号,它们同样包含和最上信号相同频率的四个成分。
做FFT后,我们发现这三个时域上有巨大差异的信号,频谱(幅值谱)却非常一致。尤其是下边两个非平稳信号,我们从频谱上无法区分它们,因为它们包含的四个频率的信号的成分确实是一样的,只是出现的先后顺序不同。
可见,傅里叶变换处理非平稳信号有天生缺陷。它只能获取一段信号总体上包含哪些频率的成分,但是对各成分出现的时刻并无所知。因此时域相差很大的两个信号,可能频谱图一样。
然而平稳信号大多是人为制造出来的,自然界的大量信号几乎都是非平稳的,所以在比如生物医学信号分析等领域的论文中,基本看不到单纯傅里叶变换这样naive的方法。
上图所示的是一个正常人的事件相关电位。对于这样的非平稳信号,只知道包含哪些频率成分是不够的,我们还想知道各个成分出现的时间。知道信号频率随时间变化的情况,各个时刻的瞬时频率及其幅值——这也就是时频分析。
二、短时傅里叶变换(Short-time Fourier Transform, STFT)
一个简单可行的方法就是——加窗。我又要套用方沁园同学的描述了,“把整个时域过程分解成无数个等长的小过程,每个小过程近似平稳,再傅里叶变换,就知道在哪个时间点上出现了什么频率了。”这就是短时傅里叶变换。
看图:
时域上分成一段一段做FFT,不就知道频率成分随着时间的变化情况了吗!
用这样的方法,可以得到一个信号的时频图了:
——此图像来源于“THE WAVELET TUTORIAL”
图上既能看到10Hz, 25 Hz, 50 Hz, 100 Hz四个频域成分,还能看到出现的时间。两排峰是对称的,所以大家只用看一排就行了。
是不是棒棒的?时频分析结果到手。但是STFT依然有缺陷。
使用STFT存在一个问题,我们应该用多宽的窗函数?
窗太宽太窄都有问题:
窗太窄,窗内的信号太短,会导致频率分析不够精准,频率分辨率差。窗太宽,时域上又不够精细,时间分辨率低。
(这里插一句,这个道理可以用海森堡不确定性原理来解释。类似于我们不能同时获取一个粒子的动量和位置,我们也不能同时获取信号绝对精准的时刻和频率。这也是一对不可兼得的矛盾体。我们不知道在某个瞬间哪个频率分量存在,我们知道的只能是在一个时间段内某个频带的分量存在。 所以绝对意义的瞬时频率是不存在的。)
看看实例效果吧:
——此图像来源于“THE WAVELET TUTORIAL”
上图对同一个信号(4个频率成分)采用不同宽度的窗做STFT,结果如右图。用窄窗,时频图在时间轴上分辨率很高,几个峰基本成矩形,而用宽窗则变成了绵延的矮山。但是频率轴上,窄窗明显不如下边两个宽窗精确。
所以窄窗口时间分辨率高、频率分辨率低,宽窗口时间分辨率低、频率分辨率高。对于时变的非稳态信号,高频适合小窗口,低频适合大窗口。然而STFT的窗口是固定的,在一次STFT中宽度不会变化,所以STFT还是无法满足非稳态信号变化的频率的需求。
三、小波变换
那么你可能会想到,让窗口大小变起来,多做几次STFT不就可以了吗?!没错,小波变换就有着这样的思路。
但事实上小波并不是这么做的(关于这一点,方沁园同学的表述“小波变换就是根据算法,加不等长的窗,对每一小部分进行傅里叶变换”就不准确了。小波变换并没有采用窗的思想,更没有做傅里叶变换。)
至于为什么不采用可变窗的STFT呢,我认为是因为这样做冗余会太严重,STFT做不到正交化,这也是它的一大缺陷。
于是小波变换的出发点和STFT还是不同的。STFT是给信号加窗,分段做FFT;而小波直接把傅里叶变换的基给换了——将无限长的三角函数基换成了有限长的会衰减的小波基。这样不仅能够获取频率,还可以定位到时间了~
【解释】
来我们再回顾一下傅里叶变换吧,没弄清傅里叶变换为什么能得到信号各个频率成分的同学也可以再借我的图理解一下。
傅里叶变换把无限长的三角函数作为基函数:
这个基函数会伸缩、会平移(其实本质并非平移,而是两个正交基的分解)。缩得窄,对应高频;伸得宽,对应低频。然后这个基函数不断和信号做相乘。某一个尺度(宽窄)下乘出来的结果,就可以理解成信号所包含的当前尺度对应频率成分有多少。于是,基函数会在某些尺度下,与信号相乘得到一个很大的值,因为此时二者有一种重合关系。那么我们就知道信号包含该频率的成分的多少。
仔细体会可以发现,这一步其实是在计算信号和三角函数的相关性。
看,这两种尺度能乘出一个大的值(相关度高),所以信号包含较多的这两个频率成分,在频谱上这两个频率会出现两个峰。
以上,就是粗浅意义上傅里叶变换的原理。
如前边所说,小波做的改变就在于,将无限长的三角函数基换成了有限长的会衰减的小波基。
从公式可以看出,不同于傅里叶变换,变量只有频率ω,小波变换有两个变量:尺度a(scale)和平移量 τ(translation)。尺度a控制小波函数的伸缩,平移量 τ控制小波函数的平移。尺度就对应于频率(反比),平移量 τ就对应于时间。
当伸缩、平移到这么一种重合情况时,也会相乘得到一个大的值。这时候和傅里叶变换不同的是,这不仅可以知道信号有这样频率的成分,而且知道它在时域上存在的具体位置。
而当我们在每个尺度下都平移着和信号乘过一遍后,我们就知道信号在每个位置都包含哪些频率成分。
看到了吗?有了小波,我们从此再也不害怕非稳定信号啦!从此可以做时频分析啦!
做傅里叶变换只能得到一个频谱,做小波变换却可以得到一个时频谱!
↑:傅里叶变换结果
——此图像来源于“THE WAVELET TUTORIAL”
↑:小波变换结果
小波还有一些好处,比如,我们知道对于突变信号,傅里叶变换存在吉布斯效应,我们用无限长的三角函数怎么也拟合不好突变信号:
以上,就是小波的意义。
在这里推荐几篇入门读物,都是以感性介绍为主,易懂但并不深入,对大家初步理解小波会很有帮助。文中有的思路和图也选自于其中:
- THE WAVELET TUTORIAL (强烈推荐,点击链接:Ihttp://users.rowan.edu/~polikar/WTtutorial.html)
- WAVELETS:SEEING THE FOREST AND THE TREES
- A Really Friendly Guide to Wavelets
- Conceptual wavelets
关于海森堡不确定性原理
不确定性原理,或者叫测不准原理,最早出自量子力学,意为在微观世界,粒子的位置与动量不可同时被确定。但是这个原理并不局限于量子力学,有很多物理量都有这样的特征,比如能量和时间、角动量和角度。体现在信号领域就是时域和频域。不过更准确一点的表述应该是:一个信号不能在时空域和频域上同时过于集中;一个函数时域越“窄”,它经傅里叶变换的频域后就越“宽”。
关于正交化
什么是正交化?为什么说小波能实现正交化是优势?
简单说,如果采用正交基,变换域系数会没有冗余信息,变换前后的信号能量相等,等于是用最少的数据表达最大的信息量,利于数值压缩等领域。JPEG2000压缩就是用正交小波变换。
比如典型的正交基:二维笛卡尔坐标系的(1,0)、(0,1),用它们表达一个信号显然非常高效,计算简单。而如果用三个互成120°的向量表达,则会有信息冗余,有重复表达。
但是并不意味着正交一定优于不正交。比如如果是做图像增强,有时候反而希望能有一些冗余信息,更利于对噪声的抑制和对某些特征的增强。
关于瞬时频率
原问题:图中时刻点对应一频率值,一个时刻点只有一个信号值,又怎么能得到他的频率呢?
很好的问题。如文中所说,绝对意义的瞬时频率其实是不存在的。单看一个时刻点的一个信号值,当然得不到它的频率。我们只不过是用很短的一段信号的频率作为该时刻的频率,所以我们得到的只是时间分辨率有限的近似分析结果。这一想法在STFT上体现得很明显。小波用衰减的基函数去测定信号的瞬时频率,思想也类似。(不过到了Hilbert变换,思路就不一样了,以后有机会细讲)
关于小波变换的不足
A.作为图像处理方法,和多尺度几何分析方法(超小波)比:
对于图像这种二维信号的话,二维小波变换只能沿2个方向进行,对图像中点的信息表达还可以,但是对线就比较差。而图像中最重要的信息恰是那些边缘线,这时候ridgelet(脊波), curvelet(曲波)等多尺度几何分析方法就更有优势了。
B. 作为时频分析方法,和希尔伯特-黄变换(HHT)比:
相比于HHT等时频分析方法,小波依然没脱离海森堡测不准原理的束缚,某种尺度下,不能在时间和频率上同时具有很高的精度;以及小波是非适应性的,基函数选定了就不改了。
但是真正理解透小波变换至少还要知道有一个“尺度函数”的存在,它是构造“小波函数”的关键,并且是它和小波函数一起才构成了小波多分辨率分析,理解了它才有可能利用小波做一些数字信号处理;还要理解离散小波变换、正交小波变换、二维小波变换、小波包…
四、小波函数与尺度函数
小波分析里,很容易混淆的一个概念就是小波函数(wavelet function)和尺度函数(scaling function)的关系。要更好理解小波分析,一些傅里叶变换的知识是必要的。
我们知道,傅里叶变换分三种不同但又紧密相连的形式:
1,积分傅里叶变换,时域频域都连续;
2,傅里叶级数展开,时域连续,频域离散;
3,离散傅里叶变换,时域频域都离散。
同样,在小波分析中,也有三种类似的形式。积分(连续)小波变换(CWT),小波级数展开,以及离散小波变换(DWT)。
简单的说你得从小波的多分辨率分析开始理解,多分辨率分析又得从映射来理解,映射又得从向量的投影来理解,所以我就从向量的投影来说:假设是在三维空间里表达一个向量,我们需要建立一个三维的坐标系,只要坐标系建立我们就可以用三个点(x,y,z)来简单的表示一个向量,同样的在一个信号我们设为f(t),要想表示它,我们可以用一个个正交的简单函数来构建坐标系,然后将f(t),映射与这些简单的正交函数上,产生一个系数,这些系数我们就可以等同于(x,y,z),只是由于它的维数是超过3维的所以你不好想象,总之就是利用相互正交的简单函数,构建一个表达信号的空间“坐标系”,然后就可以用这些系数和正交函数来表示f(t),这就是小波的核心思想,在小波分析中这个构建坐标系的函数,就是小波函数,但是在小波函数来表示一个信号的时候,它其实是将信号映射在了时频平面内的,这里面就有一个问题,在实现过程中需要对需要一个频域的底座和平台,来让信号f(t)与之做映射后是在一定的频率分辨率上进行的,这个起到底座的函数就是尺度函数,在尺度函数的平台下对频率的分析,或者说对信号的f(t)的表达就是小波函数的作用。在滤波实现中低频滤波就相当于尺度函数的作用,小波函数的实现就是高频滤波器的使用。
小波函数是由尺度函数构造的,尺度函数的性质决定了小波函数的性质。尺度函数从滤波器的角度看是低通滤波器,而小波函数是高通滤波器。
小波基函数的系数与尺度变换函数又有什么关系呢?
尺度函数又称为小波父函数.根据双尺度方程,可以由尺度函数生成小波.进行信号处理时,先要对信号进行分解.也就是用尺度函数对信号进行分解.尺度函数的频带与待分析信号的频带相同,然后将逼近函数分别在尺度空间和小波空间中进行分解.就得到了信号的低频粗略部分和高频细节部分.此时新的尺度函数频带是原信号频带的一半.小波函数的频带是另一半(高频部分).由此实现了对原信号的按频带分解!
具体分析时,有没有选择小波函数的一般原则和尺度的选择?还是仅仅根据经验?多次试探?或所要分析的信号的形状?
一般来说,小波分析与傅立叶分析结合起来。如果对于分析的信号所具有的特征不了解,你必须通过傅立叶频谱分析了解信号的原貌,小波分析只是一种获取信号特征信息的手段,不能仅仅因为小波功能强大,很多人都在用而依赖小波分析,特别是入门前更要注重各种分析方法的比较
小波基函数的选取应从一般原则和具体对象两方面进行考虑.一般原则是:
① 正交性:源于数学分析的简单和工程应用中的便于理解操作。
② 紧支集:保证优良的时-频局部特性,也利于算法的实现。
③ 对称性:关系到小波的滤波特性是否具有线性相位,这与失真问题密切相关。
④ 平滑性:关系到频率分辨率的高低。如果平滑性差,则随着变换级数的增加,原来平滑的输入信号将很快出现不连续性,导致重建时失真。
当然,要完全满足这些特性是十分困难的。如,紧支集与平滑性不可兼得,正交性的紧支集又使对称性成为不可能,因此只能寻找一种能恰当兼顾这些特性的合理折衷方案。具体选时应视应用的领域的不同而不同。
就图像处理而言,如果目的是无损压缩,对称性和平滑性就很重要;如果是边缘检测纹理分析和噪声去除,那就需要选择小波基与待处理图像的感兴趣分量具有相似性
多尺度:选定一个母小波(如Haar小波)作为小波基时,将母小波经过尺度变化(a)和位移得到一簇小波,这一簇小波就可以用来表达一个信号(图像)。这里经过尺度变化得到一簇小波的过程即是小波变换中多尺度的概念。
多分辨率:小波变换用于图像分解时,会将一张图像分解成低频与高频的几部分。其中低频表示图像的整体信息,高频表示图像的细节信息。如下图所示,这里通过小波变换将图像进行了一层分解。这里的将一张图像分解成低频和高频的几部分即是小波变换中多分辨率的概念。
五、小波基函数
小波分析中用到的小波函数具有不唯一性,即小波函数具有多样性。使用不同的小波基分析同一个问题会产生不同的结果。
六参考资料
浅析信号处理:人们认识信号本质的大飞跃
从傅里叶变换进阶到小波变换(三)
如果看了此文你还不懂傅里叶变换,那就过来掐死我吧
小波教程
连续小波变换、离散小波变换、二进小波变换、离散序列的小波变换、小波包