zoukankan      html  css  js  c++  java
  • 【DWT笔记】傅里叶变换与小波变换

    【DWT笔记】傅里叶变换与小波变换


    一、前言

          我们经常接触到的信号,正弦信号,余弦信号,甚至是复杂的心电图、脑电图、地震波信号都是时域上的信号,我们也成为原始信号,但是通常情况下,我们在原始信号中得到的信息是有限的,所以为了获得更多的信息,我们就需要对原始信号进行数学变换,得到变换域的信号,通常接触到的变换主要有傅里叶变换、拉普拉斯变换、Z变换、小波变换等等,今天主要讨论下傅里叶变换与小波变换。


    二、平稳信号与非平稳信号

          在介绍主体之前,先要说下平稳信号与非平稳信号的区别。

         平稳信号是指分布参数或者分布律随时间不发生变化的信号。也就是说,平稳信号的统计特性不随时间变化而变化。如下图所示:

          

          而与之相反的是非平稳信号是指分布参数或者分布律随时间发生变化的信号。也就是说,非平稳随机信号的统计特征是时间的函数(随时间变化),如下图所示:

          

          放在信号的时频分析中,我们可以简单地理解为,平稳信号的频率不随时间发生改变,而非平稳信号的频率随时间发生变化。


     三、多分辨率分析

         海森堡曾经推出一个不确定原理,是说移动的粒子和位置不能同时确定,因为时域与频域概念本身就是从物理学中沿用过来的,所以,时频关系也满足不确定性原理,也就是说,在时频平面内的一个确切的点上,信号的频率和发生时间不能同时确定。在任意一个时间点,我们不能确定哪个频谱分量存在,我们能做到的是在一个给定的时间段内确定哪个频谱分量存在。

         这是一个涉及到分辨率的问题。

         拿图像信号来举例子,我们大家都知道,图像的低频部分显示的是图像的基本信息,而高频部分更多是细节信息。就好比我们用谷歌地图一样,尺度高(低频)就意味着没有细节,是一个整体的视图;尺度低(高频)意味着更多的细节信息。

         在实际应用中,图像中的高频部分一般持续的时间是比较短的,一般是以短时突变或者尖峰的形式出现,比如说图像的边缘信息和一些噪点信息,在时域中,我们可以理解高频对应着在这些地方图像的变化比较大。而低频信息在大部分地方存在,反应在一些背景或内容信息,在时域上表现为变换不是很明显的地方。

         所以,这样一来,我们在分析信号的低频部分的时候,只需要较大的频率分辨率和较小的时域分辨率就能够很好的体现低频的信息,而在高频部分,就需要较大的时间分辨率和较小的频率分辨率就能够很好的体现高频的信息。

         其实,基本的傅里叶变换不存在分辨率的问题,因为,傅里叶变换在时域里面频域的分辨率为0,同样在频域里面,时域的分辨率也为0,所以说,傅里叶变换其实没有分辨率;而短时傅里叶变换是通过加窗的方式对时域不同时间段的信号进行分析,但是由于窗长是固定的,所以,分辨率是固定的,并且根据窗长的选择在时域和频域的分辨率上是一个矛盾;而小波变换可以根据尺度的变换和偏移在不同的频段上给出不同的分辨率,这在实际中是非常有用的,在后面,我们会具体介绍。


     四、傅里叶变换

         直觉上,我们都知道频率意味着某种事物的变化速率。如果某种东西(用正确的技术术语来说是一个数学或物理变量)变化的很快,我们说它的频率高,如果它变换的不快,我们就说它的频率低。如果这个变量一直保持不变,我们说它的频率为0,或者说没有频率。

         傅里叶变换时时域与频率之间的转换,通常,我们可以容易的从频域中看到一些在时域中看不到的信息,举个简单的例子,在心电图的时域信号中一般很难找到这些病情。心脏病专家们一般用记录在磁带上的时域心电图来分析心电信号。最近,新的心电记录仪/分析仪还可以提供心电图的频域信息,通过这些信息,他们就可以确定病症是否存在。对频域图进行分析能使他们更容易的诊断病情。 

         傅立叶变换是一种可逆变换,即它允许原始信号和变换过的信号之间互相转换。不过,在任意时刻只有一种信息是可用的,也就是说,在傅立叶变换后的频域中不包含时间信息,逆变换后的时域中不包含时间信息。

         这个其实结合傅里叶变化的公式就非常容易理解,连续傅里叶变换的公式为:

            

             

          离散傅里叶变换的公式为:

           

            

         我们可以清楚地看到,傅里叶变换中,因为积分是从负无穷到正无穷的,所以积分在所有时间类都是有效的。意思就是说,无论什么时候频率分量发生了改变都会全局性的影响积分的结果,同样的道理也适用于离散型的傅里叶变换。这就是为什么我们说,傅里叶变换不适合分析非平稳信号。


     五、短时傅里叶变换

         之前,我们讨论过,傅立叶变换不适用于非平稳信号。但是如果我们假设信号时平稳的信号,这样,傅里叶变换就可以加以应用了。实际上,如果我们假定信号为稳定的这个时间段很短,那么我们可以从窄窗中来观察信号,窗口要窄到我们从窗里看到的信号确实是平稳的。研究者们最终确定的这个数学逼近,作为傅立叶变换的一个修改版本,叫做短时傅立叶变换。

         短时傅立叶变换和傅立叶变换只有一个微小的不同点。在短时傅立叶变换中,信号被分为足够小的片段,这些片段的信号都可以看成平稳信号。基于这个原因,就需要一个窗函数。窗的宽度必须和信号片段的宽度相等,这样它的平稳性才有效。

         这里只讨论基本理论,所以就不在推到加窗的具体过程了。之前,我们说过,短时傅里叶变换的分辨率是固定的,这是因为,我们加的窗的窗长是固定的,如果我们有了一个无限长的窗口,然后做傅立叶变换,会得到完美的频率分辨率,但是结果中不包含时间信息,这中情况是基本的傅里叶变换。但是,为了获得信号的平稳性,我们必须要有一个宽度足够短的窗函数,在这个很短的时间内,信号时平稳的。窗口越短,时间分辨率越高,信号的稳定性越高,但是频率分别率却越来越低。下面给出具体的图形分析:

         

         上图出师几种不同尺度的常函数,下图是窗长最短的情况的时频分辨率图,如下所示:

         

         可以很清楚的看到,时域分辨率是比较高的,而频域出现很多重叠的部分,所以频率分辨率较差。下面我们看窗长加长的情况,如下图所示:

         

         很明显,这个时候,时域上已经出现了部分重叠了,而频域分辨率明显比之前好很多了,再继续看看,窗长最小的显示图,如下图所示:

         

         这个时候时域的分辨率已经非常差了,而频域分辨率相当高,所以,简而言之:窄窗=>高时间分辨率,低频率分辨率;宽窗=>高频率分辨率,低时间分辨率。所以,在进行短时傅里叶变换的时候,窗函数长度的选择是一个非常关键的步骤,我们需要在这里做很大的权衡与取舍。


    六、小波变换

         “小波”就是小区域、长度有限、均值为0的波形。小波变换就是选择适当的基本小波或母小波ψ(t),通过对基本小波的平移、伸缩而形成一系列的小波,这簇小波作为基可以构成一系列嵌套的(信号)子空间,然后将欲分析的信号(例如图像)投影到各个大小不同的(信号)子空间之中,以观察相应的特性。这样,就相当于我们用不同的焦距去观察一个物体,可从宏观到微观,从概貌到细节观察得十分详尽。所以小波变换又被称为“数学显微镜”。

         这种平移、伸缩是小波变换的一个特点,因而可以在不同的频率范围,不同的时间(空间)位置对信号进行各种分析,通过这种多分辨率分析,在高频信号中获得一个好的时间分辨率和较差的频率分辨率,低频信号中获得较好的频率分辨率和较高的时间分辨率,明显的解决了傅里叶变换应用与非平稳信号的弊端。小波变换提供了信号的时频混合表示,在众多的领域都有着非常高效的用途,例如对图像的去噪、边缘检测、压缩编码、图像融合等。

    6.1.离散小波变换

          平时我接触的小波变换主要应用在图像处理领域,在这里,连续小波变换就直接不在总结了。

         离散小波变换(DWT, Discrete Wavelet Transform)并不是简单的连续变换的采样,还必须提供很好的冗余,这样可以实现完全的可逆变换。那么,这些冗余便需要更多的计算机资源,并增加它的计算量。离散小波变换能为信号分析与合成提供足够的信息,还可降低计算机的资源消耗和计算量。相对于连续小波变换,离散变换更容易实现。

         类似于连续小波变换,离散小波变换同样需要通过数字滤波器技术得到数字信号的时域的尺度表示。别外,连续小波变换是通过不断改变窗口的尺度计算完成的:在时域移动窗口函数,然后与信号做卷积运算。在离散小波变换中,滤波器将在不同的尺度条件下截断信号的某些频率成分:信号通过不同的高通滤波器得到一系列的信号高频成分,通过不同的低通滤波器得到一系列的低频成分,这样便能分析信号的不同频率成分。

         信号的分辨率可以度量信号细节信息,当信号通过滤波操作后,尺度信号便由于滤波器对信号的上采样和下采样操作而发生了变化。信号的子采样可以通过降低采样频率实现,或者从信号中移出某些成分的采样。信号的上采样通过往信号中添加新的采样点来提高采样的频率,而添加的采样点可以是0或者是一个中间值。

         数字信号的表达形式通常为,其中为正整数。那么离散小波变换首先需要将数字信号通过数字低通滤波器,以得到该信号的进一步采样值。低通滤波通常是做卷积运算,其表达式如下:

                        

         低通滤波器将去除信号中所有高于截止频率的信号成分,例如,信号的最高频率为1000Hz,那么经过低通滤波后,将去除信号中高于500Hz的成分。

          信号经低通滤波后,信号的一半成分将被去除。但是根据Nyquist定理,因为此时信号的最高频率为而不是。这样,经过简单低通滤波的信号将不满足Nyquist定理。所以,信号的尺度因子将加倍,此时低通滤波将去除高频成分,但是能保持可恢复的低频采样。此时,分辨率将与信号的信息总量相联系,所以,尺度因子将影响信号的滤波操作。由上述的讨论可知道,简单的低通滤波得到的采样虽然去除了高频成分,但是损失了信号的信息量,所以信号的分辨率也减半了。那么,为了保证小波变换的可逆性,将在子采样后将尺度因子加倍,所以信号的低通滤波可由下面等式完成:

                        

         完成了信号的滤波后,便能开始小波变换的计算了。首先必须通过滤波器将信号分解为信号的初级估计近似和信号的细节信息,然后在不同的频率带上利用不同的尺度因子对信号进行分析、处理。经过这些步骤,便完成了离散小波变换的计算。离散变换用到了两组函数:尺度函数和小波函数,它们分别与低通滤波器和高通滤波器相对应。将信号在不同的频率带上进行分解——通过将得到的信号在时域上简单的低通与高通滤波:首先将原始信号通过高通滤波器和低通滤波器,滤波完成后,按照上节讲述的尺度因子约束完成最后的滤波,如下面所示:

                

          其中yhighylow分别是高通滤波和低通滤波的输出。

    6.2.图像的小波变换

         之前的东西理论性比较强,但是我觉得还是对应用还是有很大的理论支持的,当然,其实真的不是特别了解,也能够在matlab上面很简单的使用小波变换,这里不得不赞叹下,很多前人做的贡献真的给我们现在学习和研究带来很大的帮助。说远了,接下来说一些具体的东西。

         图像的小波变换是小波应用于图像处理的基础,且基于二维离散小波变换。图像可以看作是二维的矩阵,一般假设图像矩阵的大小为,且有( 为非负的整数)。那么每次小波变换后,图像便分解为4个大小为原来尺寸1/4的子块区域,分别包含了相应频带的小波系数,相当于在水平方向和坚直方向上进行隔点采样。进行下一层小波变换时,变换数据集中在频带上。

         小波系数的空间分布同原始图像的空间分布具有很好的对应关系所示。

          LL频带是图像内容的缩略图,它是图像数据能量集中的频带。

         由于经过了小波系数的正则化处理我们基本就可以从系数的显示能看出图像的内容。而、和频带存放的是图像的细节信息,具体关系如下面:

          HL频带存放的是图像水平方向的高频信息,它反映了图像水平方向上的变化信息和边缘信息;

          LH频带存放的是图像竖直方向的高频信息,它反映了图像在竖直方向上的灰度变化信息和图像边缘信息;

          HH频带存放的是图像在对角线方向的高频信息,它反映了水平方向和竖直方向上图像灰度的综合变化信息,同时包含了少量的边缘信息。

         可以用图形来展示这个具体的信息,下图是一次小波变换的频率分布图:

         

          下面是二次小波变换的频率分布:

          

         不难看出,小波变换将原始图像和变换系数之间建立了十分好的相关性。所以,在滤波器的设计上(这个涉及到具体实现,不过有现成函数可以调用),可以针对不同频带分别设计。例如,需要削弱图像水平方向上的毛刺或高频信息,可以通过处理HL频带的小波系数,而不必影响其他方向上的边缘信息。并且,对于多层小波变换而言,还能对不同分辨率级的小波系数进行单独的处理而达到设想的滤波效果。倘若是进行低通滤波,那么可以通过保留LL频带的数据,而将高频小波系数进行有效的衰减。

         小波图像的各个频带分别对应了原图像在不同尺度和不同分辨率下的细节以及一个由小波变换分解级数决定的最小尺度、最小分辨率下对原始图像的最佳逼近。从多分辨率分析的角度考虑小波图像的各个频带时,这些频带之间并不是纯粹无关的,特别是对于各个高频带,由于它们是图像同一个边缘、轮廓和纹理信息在不同方向、不同尺度和不同分辨率下由细到粗的描述,它们之间必然存在着一定的关系,其中很显然的是这些频带中对应边缘与同尺度下高频子带中所包含的边缘之间也有对应关系。由于图像的边缘、轮廓等信息对人眼观测图像时的主观质量影响很大,这种机制无疑会带来编码图像主观质量上的改善。


    七、小结

          本次稍微总结了下傅里叶变换域小波变换,这篇博文相对比较理论,也比较枯燥,涉及到很多具体实现的部分,这部分其实只需要了解即可,在实际应用中,不会叫我们去设计滤波器等等这些,感谢前人的工作,我们在matlab中只需要一个函数就可以实现小波变换。

          明天会陆续总结下,基于小波变换在图像的降噪、压缩、特征提取、图像增强、图像融合等领域的具体应用。

  • 相关阅读:
    保留字段数组,一定要用char
    VirtualBox安装CentOS 7及其相关配置
    istringstream是支持>>一个bool的,但为什么不用?
    用vector实现一个变长数组
    C语言为什么被const声明的变量不是一个常量表达式
    不咬文嚼字的理由
    int变量赋值给char变量的本质
    #include <> 和 #include "" 的区别
    C++中匿名对象应当是一个左值
    js实战之-间断文字滑动
  • 原文地址:https://www.cnblogs.com/charles04/p/3952529.html
Copyright © 2011-2022 走看看