小波变换

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了小波变换相关的知识,希望对你有一定的参考价值。

参考技术A

傅里叶变换的不足:

想知道各个成分出现的时间。知道信号频率随时间变化的情况,各个时刻的瞬时频率及其幅值——这也就是时频分析。

一个简单可行的方法就是——加窗。 把整个时域过程分解成无数个等长的小过程,每个小过程近似平稳,再傅里叶变换,就知道在哪个时间点上出现了什么频率了。”这就是短时傅里叶变换。

使用STFT存在一个问题,我们应该用多宽的窗函数?

窗太窄,窗内的信号太短,会导致频率分析不够精准,频率分辨率差。窗太宽,时域上又不够精细,时间分辨率低。

用窄窗,时频图在时间轴上分辨率很高,几个峰基本成矩形,而用宽窗则变成了绵延的矮山。但是频率轴上,窄窗明显不如下边两个宽窗精确。

高频适合小窗口,低频适合大窗口。 然而STFT的窗口是固定的,在一次STFT中宽度不会变化,所以STFT还是无法满足非稳态信号变化的频率的需求。

频域中提取的特征主要有:FFT系数、熵、能谱密度、功率下降率(Power Decline Rate,PDR)等。

小波函数定义为


其中 是缩放因子,控制小波函数的伸缩; 是平移参数,控制小波函数的平移。缩放因子对应频率,平移参数对应时间。
在缩放因子为 的子空间的投影为

其中小波系数为

代表复共轭。
为了更直观地理解小波变换,先引入 Parseval 定理:

从上式不难看出,只有当小波中心频率与原始信号固有频率接近的时候,小波系数才会取得极大值。因此,小波可以看作是一个只允许频率和小波中心频率相近的信号通过的带通滤波器。通过缩放因子可以得到一系列不同的中心频率,通过平移系数则可以检测时域上不同位置的信号。这样就得到了原信号在各个时间点包含的频率信息。

STFT是给信号加窗,分段做FFT;而小波直接把傅里叶变换的基给换了——将无限长的三角函数基换成了有限长的会衰减的小波基。这样不仅能够获取频率,还可以定位到时间了

傅里叶变换把无限长的三角函数作为基函数:

基函数会伸缩、会平移(其实本质并非平移,而是两个正交基的分解)。缩得窄,对应高频;伸得宽,对应低频。然后这个基函数不断和信号做相乘。

某一个尺度(宽窄)下乘出来的结果,就可以理解成信号所包含的当前尺度对应频率成分有多少。于是,基函数会在某些尺度下,与信号相乘得到一个很大的值,因为此时二者有一种重合关系。那么我们就知道信号包含该频率的成分的多少。这两种尺度能乘出一个大的值(相关度高),所以信号包含较多的这两个频率成分,在频谱上这两个频率会出现两个峰。

小波做的改变就在于,将无限长的三角函数基换成了有限长的会衰减的小波基。

对于突变信号,傅里叶变换存在吉布斯效应,我们用无限长的三角函数怎么也拟合不好突变信号:

尺度函数 : scaling function (在一些文档中又称为父函数 father wavelet )
小波函数 : wavelet function(在一些文档中又称为母函数 mother wavelet)
连续的小波变换 :CWT
离散的小波变换 :DWT

不同的小波基函数,是由同一个基本小波函数经缩放和平移生成的。
小波变换是将原始图像与小波基函数以及尺度函数进行内积运算,所以一个尺度函数和一个小波基函数就可以确定一个小波变换

连续小波变换
cwt(data, scales, wavelet, sampling_period=1.)

离散小波变换
pywt.dwt(data, wavelet, mode=’symmetric’, axes=-1)

经过小波变换后图像会生成低频信息和高频信息。低频信息对应于求均值,高频信息对应于求差值。
均值是局部的平均值,变化缓慢,属于低频信息,存储图片的轮廓信息,近似信息
差值是局部的波动值,变化较快,属于高频信息,存储图片的细节信息,局部信息,另外含有噪音

是高通滤波器,允许高频信息通过 是低通滤波器,允许低频信息通过

在拼接子图之前,应该先对各个子图进行处理。未处理的情况下,因为高频部分的像素值极小甚至小于0,所以高频区域呈黑色。最简单的处理方式为:将高频信息均加255,得到如下结果:

阈值函数 pywt.threshold (data, value, mode=, substitute=)

信号产生的小波系数含有信号的重要信息,将信号经小波分解后小波系数较大,噪声的小波系数较小,并且噪声的小波系数要小于信号的小波系数,通过选取一个合适的阀值,大于阀值的小波系数被认为是有信号产生的,应予以保留,小于阀值的则认为是噪声产生的,置为零从而达到去噪的目的。

小波阀值去噪的基本问题包括三个方面: 小波基的选择,阀值的选择,阀值函数的选择。
(1) 小波基的选择:通常我们希望所选取的小波满足以下条件:正交性、高消失矩、紧支性、对称性或反对称性。但事实上具有上述性质的小波是不可能存在的,因为小波是对称或反对称的只有Haar小波,并且高消失矩与紧支性是一对矛盾,所以在应用的时候一般选取具有紧支的小波以及根据信号的特征来选取较为合适的小波。
(2) 阀值的选择:直接影响去噪效果的一个重要因素就是阀值的选取,不同的阀值选取将有不同的去噪效果。目前主要有通用阀值(VisuShrink)、SureShrink阀值、Minimax阀值、BayesShrink阀值等。
(3) 阀值函数的选择:阀值函数是修正小波系数的规则,不同的反之函数体现了不同的处理小波系数的策略。最常用的阀值函数有两种:一种是硬阀值函数,另一种是软阀值函数。还有一种介于软、硬阀值函数之间的Garrote函数。
另外,对于去噪效果好坏的评价,常用信号的信噪比(SNR)与估计信号同原始信号的均方根误差(RMSE)来判断。

可以看到API给出了很多小波族,每个小波族又有很多系数可供我们去选择, “相同类的统计特征相近,不同类的统计特征相差很大” ,来挑选小波基函数。

多尺度小波变换一般是3~4层,但是要注意的是,如果实践中所用的图片太小,或者纹理并不丰富,其实用单层的小波变换就足够了。如果你用多层的小波变换,Pywalvets 仍只会返回给你一层变换的结果,因为信息量过小导致不能采样来进一步进行变换。

以上是关于小波变换的主要内容,如果未能解决你的问题,请参考以下文章

小波变换后的图像如何去噪

小波变换教程(十七)

小波变换

FPGA小波变换基于FPGA的图像9/7整数小波变换verilog实现

小波变换图像处理

小波变换(wavelet transform)的通俗解释