dennis gabor 从傅里叶(Fourier)变换到伽柏(Gabor)变换再到小波(Wavelet)变换(转载)
dennis gabor
题目:从傅里叶(Fourier)变换到伽柏(Gabor)变换再到小波(Wavelet)变换 本文是边学习边总结和摘抄各参考文献内容而成的,是一篇综述性入门文档,重点在于梳理傅里叶变换到伽柏变换再到小波变换的前因后果,对于一些概念但求多而全,所以可能会有些理解的不准确,后续计划分别再展开学习研究。通过本文可以了解到: 1)傅里叶变换的缺点;2)Gabor变换的概念及优缺点;3)什么是小波;4)小波变换的概念及优点。 一、前言 首先,我必须说一下,在此之前,虽然我听说过小波变换(具体是前几年听一位博士毕业答辩里提到了小波降噪)但就再也没什么了,虽然近一年来零零散散地在接触语音信号处理过程中用过短时傅里叶变换(Short Time FourierTransform, STFT),但也就如此了,之于Gabor变换听都没有听过。这些天看稀疏基,其实也就是看各种变换了,前面看了离散余弦变换(Discrete CosineTransform, DCT)、离散正弦变换(Discrete Sine Transform, DST)、离散W变换(DiscreteW Transform, DWT)、离散哈特莱变换(Discrete Hartley Transform, DHT),总体来说理解个表皮还是比较容易的,于是打算继续学习,随便挑了一个Curvelet基打算学习一下,搜了一下资料才发现不能从这个开始学习,必须Gabor、Wavelet、Ridgelet、Curvelet、Wedgelet、Bandelet、Beamlet、Contourlet等慢慢开始学起,我知道我又陷入了一片沼泽,但或许是一片幸福的沼泽,一个做信号处理的人对这些是应该有一个基本的概念级了解的。这让我回忆起了几年前,我对移动通信一样,作为一名电子信息专业的大学生,居然不知道什么是TD-SCDMA,居然分不清GPS和GPRS,这一直是让我感觉很耻辱的一件事情,于是我开始看书、上网查资料,经过一段时间的努力,终于把基本的概念搞明白了,比如GSM、GPRS、EDGE、CDMA1x、CDMA2000、TD-SCDMA、WCDMA、HSPA、LTE、WiMax、wifi、Bluetooth、Zigbee、802.11、802.15.4、802.16、WLAN、WPAN、WMAN等等,感觉自己虽非身处移动通信行业,但毕竟学的这个专业,终于算是对各概念混个脸熟了。当然,对于那个冷笑话,就是GPS和GPRS的区别也就自然清楚了。而现今,当面临Gabor、Wavelet、Ridgelet、Curvelet、Wedgelet、Bandelet、Beamlet、Contourlet这么多概念时,当年的那种感觉又来了,我想我必须把这些东西的基本概念搞定,否则如何混迹于信号处理领域?! 二、傅里叶变换(Fourier Transform) 几乎从1822年Fourier发表他的“热传导理论”以来,傅氏分析便成为最完美的数学分析工具与最广泛、最有效地应用着的信号分析方法之一。傅里叶变换是大家最熟悉的变换了,所以在此也就不多描述了,它的优点就省略了,这里就只说它的缺点吧。 从傅里叶变换公式中我们知道,要从一个信号来得到其傅里叶变换(频谱),必须取无限长的时间量(-∞,+∞),即必须要获得时域中的全部信息,反之要利用频谱来描述信号时,无论这个信号的时间多么短,都需要用整个频域来描述。在某一时间段[t1,t2]对应的频谱信息傅里叶变换无法给出,而这种局部信息又常常是我们十分感兴趣的。如对音乐信号,我们常常关心的是什么时候发出什么频率的音符,对地震信号我们关心的是什么空间位置出现什么频率的波等等,这些信号都是非平稳信号,它们的频域特性随时间变化,所以信号在任一时刻的频域特征都很重要,不能将时频两域完全分离。 即Fourier变换不具有局部性。它只适用于确定性信号及平稳信号,由于缺乏时间的局部信息,对时变信号、非平稳信号,Fourier频率分析存在严重不足,它无法告知某些频率成分发生在哪些时间内,无法表示某个时刻信号频谱的分布情况。信号在某时刻的一个小的邻域内发生变化,那么信号的整个频谱都要受到影响,而频谱的变化从根本上来说无法标定发生变化的时间位置和发生变化的剧烈程度。傅里叶变换的时域和频域是完全分割开来的。 其实根本原因是傅里叶变换的三角基是全域性的,其局部化性质不好,因而只能得到信号的整个频谱,难以在任何有限频段上确定任意小范围内信号的局部特征。 注:针对不同种类的信号共有四种基本傅里叶变换,分别是:针对连续周期信号的连续傅里叶级数(Continuous Fourier Series, CFS,一般直接简称为FS)、针对连续非周期信号的连续时间傅里叶变换(Continuous Time Fourier Transform, CTFT,一般直接简称为FT)、针对离散周期信号的离散傅里叶级数(Discrete Fourier Series, DFS)、针对离散非周期信号的离散时间傅里叶变换(Discrete Time Fourier Transform, DTFT),这四种基本傅里叶变换都不适合计算机处理(要求时域和变换域均为离散的、有限长的),因此把DFS进行变形,取其时域和频域的主值区间定义出了离散傅里叶变换(Discrete Fourier Transform, DFT),直接按照DFT公式计算的话计算量太大,于是就又有了各种快速计算方法,统称为快速傅里叶变换(Fast Fourier Transform, FFT)。上面说的是CTFT。 为了解决这种局部性的问题,1946年,DennisGabor提出了“窗口Fourier变换”的概念,即Gabor变换。 三、Gabor变换 Gabor,一般音译为伽(gā)柏(bó)。简单了解一下Dennis Gabor这个人吧:
了解了Gabor其人,又知道了前面叙述的Fourier变换的诸多不足,于是:
窗口傅里叶变换或短时傅里叶变换(Short Time FourierTransform, STFT)(以下统一简称为STFT)能够完成局部分析的关键是“窗口”,窗口的尺度是局部性程度的表征。当窗函数取为高斯窗时一般称为Gabor变换。选高斯窗的原因在于:1)高斯函数的Fourier变换仍是高斯函数,这使得Fourier逆变换也用窗函数局部化了,同时体现了频率域的局部化;2)根据Heisenberg测不准原理,高斯函数窗口面积已达到测不准原理下界,是时域窗口面积达到最小的函数,即Gabor变换是最优的STFT。 注意STFT的公式输出有两个自变量,时间t和频率ω,即它是一种时频分析!但由于一旦窗口函数选定后,时频窗口的形状便保持不变,割断了频率与窗口宽度的内在联系,Gabor变换实质是具有单一分辨率的分析。 Gabor变换可以达到时频局部化的目的:它能够在整体上提供信号的全部信息而又能提供在任一局部时间内信号变化剧烈程度的信息。简言之,可以同时提供时域和频域局部化的信息。 这里提一下“紧支集”的概念,因为会经常见到这个术语,对于STFT的窗函数就要求是一个紧支集函数,百度知道里对“紧支集”有一个很通俗的解释:对于函数f(x),如果自变量x在0附近的取值范围内,f(x)能取到值;而在此之外,f(x)取值为0。那么这个函数f(x)就是紧支撑函数,而这个0附近的取值范围就叫做紧支撑集。 四、Gabor变换的缺点 Gabor变换在一定程度上解决了局部分析的问题,但对于突变信号和非平稳信号仍难以得到满意的结果,即Gabor变换仍存在着较严重的缺陷。1)Gabor变换的时频窗口大小、形状不变,只有位置变化,而实际应用中常常希望时频窗口的大小、形状要随频率的变化而变化,因为信号的频率与周期成反比,对高频部分希望能给出相对较窄的时间窗口,以提高分辨率,在低频部分则希望能给出相对较宽的时间窗口,以保证信息的完整性,总之是希望能给出能够调节的时频窗;2)Gabor变换基函数不能成为正交系,因此为了不丢失信息,在信号分析或数值计算时必须采用非正交的冗余基,这就增加了不必要的计算量和存储量。 Gabor变换的时间-频率窗如下图所示:
即无论研究低频成分还是研究高频成分,Gabor变换所采用的时间-频率窗口的宽度和高度都不变,这对研究较高频率或者较低频率都不利。 我们更希望时间-频率窗如下图所示: 为了解决这些问题,小波(Wavelet)变换诞生了…… 五、什么是小波(Wavelet) 小波,英文单词为Wavelet,这里的后缀-let即为“小”的意思,比如booklet(小册子),所以前面图中的Gaboret旁边我用红色字注了一下“应该是Gaborlet吧?”,因为有时也把Gabor变换归为小波变换之一(小波系列变换中所有单词一般均加后缀-let,如Ridgelet、Curvelet、Wedgelet、Bandelet、Beamlet、Contourlet等等),实际上我感觉它只能算是傅里叶变换与小波变换之间的一个过渡品。 什么是小波呢?所谓小波就是小的波形,“小”即具有衰减性,“波”是指具有波动性。 在说“小波(wavelet)”之前得先说“波(wave)”:
傅里叶变换就是基于这些“波”(正弦和余弦),它从负无穷到正无穷都存在,而小波变换则是基于以下的这种“小波”:
这是一个小波母函数,比较它和前面的“波”也就可以知道为什么称它为小波(只存在于一段时间内为非零值)。小波母函数经过尺度变换、时移等,可得到一系列小波函数,简称小波(前三个图是尺度变换的,后三个图是时移变换的):
下面把“波”与“小波”作一个对比:
从数学上来说,小波是函数空间L2(R)中满足“容许性”条件(简单理论就是上面的wavelet的几个特点吧,详细请看参考文献)的一个函数或信号ψ(x)。对于任意实数对(a,b),其中参数a必须为非零实数,称如下形式的函数:
为由小波母函数ψ(x)生成的依赖于参数(a,b)的连续小波函数,简称小波。小波母函数ψ(x)只有在原点的附近才会有明显偏离水平轴的波动,在远离原点的地方函数值将迅速衰减为零(从前面的小波母函数图中也可以看出来)。所以对于任意参数(a,b),小波函数ψa,b(x)在x=b附近存在明显的波动,远离x=b的地方迅速衰减到零(因为b是时移量,母小波是以原点为中心,时移就以b为中心了,如果有尺度变换的话再考虑进去就可以了)。 六、小波(Wavelet)变换 “小波”的概念是由法国地质学家J.Morlet在上个世纪八十年代(1984年)在研究地下岩石油层分布时提出的,并成功应用于地质数据处理中;其后数学家Meyer创造性地构造了第一个具有一定衰减性质的光滑小波;1987年,Matllat提出了多尺度分析思想和Mallat算法(Mallat算法在离散小波变换中的地位相当于FFT在Fourier变换中的地位),成功地统一了在此之前提出的各种具体小波函数的构造。小波变换继承和发展了Gabor变换的局部化思想,同时克服了傅里叶变换和Gabor变换的一些缺陷。最重要的是小波变换给出了一个可以调节的时频窗口,窗口的宽度随频率变化,频率增高时时间窗口的宽度自动变窄,以提高分辨率,“采用小波分析,就像使用一架可变焦距镜头的照相机一样,可以转向任一细节部分”。 设信号f(t)∈L2(R),其连续小波变换(Continuous WaveletTransform, CWT)定义为
可见,信号f(t)的小波变换是一个二元函数。从形式上也可以看出,信号f(t)的小波变换本质上是原来的f(t)在t=b附近按ψa,b(t)进行加权平均,体现的是以ψa,b(t)为标准f(t)的快慢变化情况。这样,参数b表示分析的时间中心或时间点,而参数a体现的是以t=b为中心的附近范围的大小。所以,一般称参数a为尺度参数(即伽柏变换中的ω),而参数b为时间中心参数(即枷柏变换中的t)。因此小波变换也是时频分析(这似乎是废话,它比Gabor变换还牛,前者都已经是时频分析了,它能不是么?) 小波变换相比于STFT,优点是明显的:1)由于小波母函数ψa,b(t)相当于窗函数,但其窗宽是可变的,较好地解决了时间分辨率和频率分辨率的矛盾,其变化规律使得小波变换具有优良的局部化特性,对分析突变信号和奇异信号非常有效,充分体现了常相对带宽频率分析和自适应分析的思想;2)小波变换能将各种交织在一起的由不同频率组成的混合信号分解成不同频率的信号,并对频率大小不同的信号采用相应粗细的时空域取样步长,从而能够不断聚焦到对象的任意微小细节,对时变信号的频谱分析意义重大。3)并不要求小波变换基底是正交的,其时宽频宽乘积较小,因而展开系数的能量较为集中【8】。 比较一下小波变换、伽柏变换、傅里叶变换可以发现:傅里叶变换不具有局部性;伽柏变换有局部性,但有一些缺点(如前所述);而小波变换不但具有局部性,而且尺度参数a可以改变频谱结构和窗口的形状,起到“变焦”的作用,因此小波分析可能达到多分辨率分析的效果(小变波换被誉为数学显微镜)。从信号分析方法的理论发展过程可能看出:傅里叶分析特别适合分析长时间内较稳定的信号;STFT也有其一定的应用场合,但其效果取决于适当地选取窗函数;小波分析特别适合分析突变信号和奇异信号。 学习小波变换时会发现有一大堆形形色色的小波变换,这是因为小波变换与小波母函数ψ(x)有关,不同的小波母函数ψ(x)则对应着不同种类的小波变换了,比如Haar小波、Shannon小波、墨西哥草帽状小波等等。可以证明,ψa,b(x)的时频窗口面积与参数a和b无关,仅于ψ (x)的选取有关,所以不能通过选择参数a和b使时域和频域窗口的半径同时缩小,时域和频域上的分辨率相互牵制,要想使两者的分辨率同时提高,就必须选择适当的小波母函数ψ (x),小波母函数趋向于零的速度是衡量小波母函数性质好坏的一个重要标志。 经常见到正交小波、半正交小波、双正交小波的概念,文献【6】中有解释如下:
一般说来,常见的小波基有:Haar小波基、db系列小波基(Daubechies小波)、Biorthogonal(biorNr.Nd)小波系、Coiflet(coifN)小波系、SymletsA(symN)小波系、Molet(morl)小波、MexicanHat (mexh)小波、Meyer小波、DOG(Differenceof gaussian)小波。
参考文献: 【1】李丽容. 小波分析的产生、发展及应用[J]. 中国水运,2007,5(3):94-96. 【2】金连文.Gabor滤波器及其应用[PPT],百度文库 【3】微雪.matlab学习:图像频域分析之Gabor滤波.博客园 【4】wcrzq,microwest.紧支集是什么意思,求详细解释,谢谢.百度知道 【5】郑治真,沈萍,谢永.从Gabor变换到小波分析[J].中国地震,1996,12(3):237-242. 【6】董新洲,贺家李,葛耀中.小波变换:第2讲离散小波变换[J].1999,27(2):57-60. 【7】liuchunranshao,qianxun881119.小波的基函数有哪些?.百度知道 【8】余小勇. 信号分析从傅氏变换到小波变换[J]. 西安邮电学院学报,2001,6(1):64-66. 【9】贾朱值,董立文,董勃,谢元旦.Fourier变换和Gabor变换与小波变换的比较研究[J].鞍科技大学学报,2005,28(1):12-16,21. 【10】李建华,李万社. 小波理论发展及其应用(综述)[J]. 河西学院学报,2006,22(2):27-31.
转自:点击查看
dennis gabor 从傅里叶(Fourier)变换到伽柏(Gabor)变换再到小波(Wavelet)变换(转载)的更多相关文章
- 图像算法五:【图像小波变换】多分辨率重构、Gabor滤波器、Haar小波
原 https://blog.csdn.net/alwaystry/article/details/52756051 图像算法五:[图像小波变换]多分辨率重构.Gabor滤波器.Haar小波 2018 ...
- 小程序canvas 变换
var ctx = wx.createCanvasContext('base'); var centerX = 375/ 2; var centerY = 200; var rotate = 90; ...
- Gabor变换、Gabor滤波器
D.Gabor 1946年提出 窗口Fourier变换,为了由信号的Fourier变换提取局部信息,引入了时间局部化的窗函数. 由于窗口Fourier变换只依赖于部分时间的信号,所以,现在窗口Four ...
- 小波变换(wavelet transform)的通俗解释(一)
小波变换 小波,一个神奇的波,可长可短可胖可瘦(伸缩平移),当去学习小波的时候,第一个首先要做的就是回顾傅立叶变换(又回来了,唉),因为他们都是频率变换的方法,而傅立叶变换是最入门的,也是最先了解的, ...
- Learn to See in the Dark(论文阅读笔记)
最近做项目看了一篇论文<Learn to See in the Dark>下面是一些论文笔记 概括: 这篇论文主要介绍的是在低光照的环境下用两个标准的FCN网络,通过控制变量法来对比不同的 ...
- PIE SDK Command&&Tool工具命令一览表
PIE SDK Command&&Tool工具命令一览表 编号 模板 名称(中文) Command&Tool 程序集 备注 1 数据管理 加载栅格数据 PIE.Controls ...
- 小波变换 C++ opencv 实现
小波变换 C++ opencv 实现 小波简介: http://www.blogbus.com/shijuanfeng-logs/221293135.html 源码: /// 小波变换 Mat W ...
- 基于opencv的小波变换代码和图像结果
#include "stdafx.h" #include "WaveTransform.h" #include <math.h> #include ...
- PIE SDK小波变换
1.算法功能简介 小波变换是一种信号的时间——尺度分析方法,具有多分辨率分析的特点,而且在时频两域都具有表征信号局部特征的能力,是一种窗口大小固定不变但其形状可变,时间窗和频率窗都可变的时频局部化分析 ...
随机推荐
- clearfix
过渡放在原:transiton:2s; 块无素:block,inline inline-block1,占一行,有宽,有高内元素:2,无宽高,内容撑开宽高.不支持上下margin.代码换行补解析.3, ...
- 数据结构-Stack和Queue
实现: #include "c2_list.h" template <typename object> class Stack{ public: bool isEmpt ...
- HTTP Status 404 - No result defined for action com.csdhsm.struts.action.LoginAction and result error
智商拙计的问题,没有找到为类LoginAction和error找到定义,然后重新去struts.xml去看,我类个去,我居然把result写成了ERROR <result name=" ...
- 经典线程同步 互斥量Mutex
阅读本篇之前推荐阅读以下姊妹篇: <秒杀多线程第四篇一个经典的多线程同步问题> <秒杀多线程第五篇经典线程同步关键段CS> <秒杀多线程第六篇经典线程同步事件Event& ...
- Linux摄像头驱动学习之:(二)通过虚拟驱动vivi分析摄像头驱动
一.通过指令 "strace -o xawtv.log xawtv" 得到以下调用信息:// 1~7都是在v4l2_open里调用1. open2. ioctl(4, VIDIOC ...
- Enumeration 接口
Enumeration是遍历集合元素的一种方法. Enumeration中只有两个方法: 1.hasMoreElements() 测试此枚举是否包含更多的元素. 2.nextElement() 如 ...
- android 原生dialog对话框
http://www.cnblogs.com/xiaoluo501395377/p/3419398.html
- DotNetBar v12.6.0.4 Fully Cracked
更新信息: http://www.devcomponents.com/customeronly/releasenotes.asp?p=dnbwf&v=12.6.0.4 如果遇到破解问题可以与我 ...
- GPIO的8种工作模式
1.浮空输入GPIO_IN_FLOATING ——浮空输入,可以做KEY识别,RX1 2.带上拉输入GPIO_IPU——IO内部上拉电阻输入 3.带下拉输入GPIO_IPD——IO内部下拉电阻输入 4 ...
- ThinkPHP中Session用法详解
在ThinkPHP封装了Session类,用户可以直接使用,常用的方法有: Session::set(name, value):注册 session . Session::is_set(name):检 ...