无论是学习信号处理,还是做图像、音视频处理方面的研究,你永远避不开的一个内容,就是傅里叶变换和小波。但是这两个东西其实并不容易弄懂,或者说其实是非常抽象和晦涩的!

完全搞懂傅里叶变换和小波,你至少需要知道哪些预备知识?主页君从今天开始就将通过一些列文章告诉你他们之间的来龙去脉!本节是全部系列文章的第一节——总纲,日后我们也将按照这个思路一点一点讲述所有的知识。需要说明的是,本文主要面向计算机专业或者电子信息专业的读者,为此我们将尽量采取一些非常非常基础的知识来帮助你理解。所以,题目里面讲的“完全搞懂”并非是从物理学或者纯数学的角度去讲的,因为傅里叶变换最初是法国科学家傅里叶在研究物理学(主要是热力学)时创造出来的一套理论,如果要从这个角度去说“彻底搞懂”,肯定得需要很多物理知识、复变实变分析,之类的像天书一样的东西。这样牵扯下去,其实很多对于学计算机或者学电子信息的人来说,其实完全没有必要。我们要做的,就是利用你已经掌握的知识来构建整个体系!

金庸在他的武侠小说《天龙八部》里塑造了一个吐蕃国师的人物形象——“鸠摩智”。鸠摩智练武急功近利,为了在短期内多炼成几门功夫,往往基础不打牢,就强行修炼上乘武学。用道家的小无相功催动少林的七十二绝技,看似威力无比,其实后患无穷。其实日常学习也是这样,如果上来就记住几个公式,然后单刀直入地去啃傅里叶变换或者小波,其实也能做出点东西来,但是由于基础都是空的,所以内化的过程几乎是断裂的,缺损的。无论是傅里叶变换还是小波,它们的最基本理论全部都是数学。只是大部分学生很难建立起它们之间的联系。我们今天就从数学开始说起。

图中虚线框里的内容,都应该是在高等数学里必学的内容,这部分有啥不懂的,去问童校长应该最合适不过了。首先,你应该知道费马定理(这个很简单,说白了其实就是函数有极值的条件),通过费马定理,你可以证明罗尔定理,然后通过罗尔定理,你又可以证明拉格朗日中值定理,通过拉格朗日中值定理,你又可以继而证明柯西中值定理。证明柯西中值定理的意义在于,它可以被用来证明泰勒公式。泰勒公式当然是一个叫做泰勒的人提出来的,但是真正证明泰勒公式的人是柯西,因为柯西知道柯西中值定理,而要证明泰勒公式就需要用到柯西中值定理。泰勒公式在我们这里有两个用途,首先它可以用来证明欧拉公式,欧拉公式在傅里叶变换里面也是必须要用到的。其次,通过泰勒公式可以得到幂级数的展开。这是一个先导,因为无论是小波展开,还是傅里叶展开,如果你理解泰勒展式或者幂级数展开式,那么对应的就很容易解释,人们设计傅里叶展式和小波展式的初衷和用意了。高数里的级数主要学两种,除了幂级数以外,另外一个就是傅里叶级数。到这里你所需要的高数知识就已经足够了。

图中黄色框图里的内容都是你在数字信号处理课程里应该学的。我们在学傅里叶变换之前,肯定要在高数里先学一个傅里叶级数,但是傅里叶级数和傅里叶变换有啥关系呢?说白了,他们的本质是一样一样的,尽管它们各自公式的表达式好像差别还很大。通过傅里叶级数公式,其实你做一些化简和变量替换(关于这部分内容,如果读者有兴趣,主页君后续可以给出详细证明过程),傅里叶级数就变成傅里叶变换了,当然是连续的。然后你根据数字信号处理里面学的采样定理,就能到处傅里叶变换了,这就是DFT!但是DFT有个问题,如果按公式计算,效率太低,实用价值不高,后来人们就发明了一个快速算法,FFT!这一路下来,如果每一步,你都非常清楚,那你就已经算是对傅里叶变换理解的很到位了。

然后说说小波,小波完全可以跟傅里叶变换对比着来理解,而且事实上,在小波出现之前,人们先创造出了一种叫短时傅里叶变换的东西,这可以被认为是二者之间的桥梁。当然,这部分内容,你不知道也没关系,你甚至可以以泰勒公式和幂级数为起点来理解小波。小波级数展开对应的是傅里叶展开,连续小波对应连续傅里叶变换,DWT对应DFT。这些都非常容易理解。同样,人们(其实主要是Mallat)也开发了一种小波的快速算法,FWT。FWT就像FFT在傅里叶变换中的地位。要理解FWT,你需要知道两个基础知识,一个叫做MRA,即多分辨率分析,学习MRA对于理解小波也非常有意义。因为MRA是构建小波的一种方法。另外一个你必须要知道的东西叫做“子带编码”或者子带分解。

要想理解子带分解,你就必须知道QMF,即正交镜像滤波器,而QMF是多采样率信号处理里面的重要内容。所以你必须有多采样率信号处理知识的基础,而多采样率信号处理的基础又是数字信号处理!另外,子带编码还有一个理论基础,或者说,子带编码为啥被证明有效,这就必须要知道率失真理论的有关结论。率失真理论又是信息论的重要组成部分。所以,最后这条线路上,你的学习脉络应该是从信息论出发的(其实主要是互信息和率失真方面的内容),然后才是信号处理,然后是多抽样率处理,然后是子带编码和QMF,这些你都懂了之后,FWT就太Easy了!当然,你直接就学FWT的算法,而不去管它到底是怎么来的,也是可以的,只是就像我之前说的,你的基础基本上都是空的,你学了也只是学个招式,内功心法几乎不会,所以再往上走可能会遇到很多困难。

任何一门学科或者知识发展到现在少说都是几十年了,让我们在短短个把月之内就学完,其实很不容易。所以看起来自己要知道的东西实在太多了,而学习的时间又是这样的有限。但是也没办法,楼宇要盖的越高,地基就势必要打得越深。

另外:补充一点,后续在具体代码实现时,我们采用的语言C++,在Visual C++下完成。

未完,待续... ....

完全搞懂傅里叶变换和小波(1)——总纲<转载>的更多相关文章

  1. 完全搞懂傅里叶变换和小波(2)——三个中值定理<转载>

    书接上文,本文章是该系列的第二篇,按照总纲中给出的框架,本节介绍三个中值定理,包括它们的证明及几何意义.这三个中值定理是高等数学中非常基础的部分,如果读者对于高数的内容已经非常了解,大可跳过此部分.当 ...

  2. 一文搞懂EMAS Serverless小程序开发|电子书免费下载

    >> 快来免费下载|电子书<五天玩转 EMAS Serverless> << 点击免费下载 <五天玩转 EMAS Serverless> EMAS Se ...

  3. MATLAB(2)——小波工具箱使用简介

    作者:桂. 时间:2017-02-19  21:47:27 链接:http://www.cnblogs.com/xingshansi/articles/6417638.html 前言 本文主要介绍MA ...

  4. java线程间通信:一个小Demo完全搞懂

    版权声明:本文出自汪磊的博客,转载请务必注明出处. Java线程系列文章只是自己知识的总结梳理,都是最基础的玩意,已经掌握熟练的可以绕过. 一.从一个小Demo说起 上篇我们聊到了Java多线程的同步 ...

  5. dennis gabor 从傅里叶(Fourier)变换到伽柏(Gabor)变换再到小波(Wavelet)变换(转载)

    dennis gabor 题目:从傅里叶(Fourier)变换到伽柏(Gabor)变换再到小波(Wavelet)变换 本文是边学习边总结和摘抄各参考文献内容而成的,是一篇综述性入门文档,重点在于梳理傅 ...

  6. 链表算法题二,还原题目,用debug调试搞懂每一道题

    文章简述 大家好,本篇是个人的第4篇文章. 承接第3篇文章<开启算法之路,还原题目,用debug调试搞懂每一道题>,本篇文章继续分享关于链表的算法题目. 本篇文章共有5道题目 一,反转链表 ...

  7. 一天搞懂深度学习-训练深度神经网络(DNN)的要点

    前言 这是<一天搞懂深度学习>的第二部分 一.选择合适的损失函数 典型的损失函数有平方误差损失函数和交叉熵损失函数. 交叉熵损失函数: 选择不同的损失函数会有不同的训练效果 二.mini- ...

  8. 一文搞懂RAM、ROM、SDRAM、DRAM、DDR、flash等存储介质

    一文搞懂RAM.ROM.SDRAM.DRAM.DDR.flash等存储介质 存储介质基本分类:ROM和RAM RAM:随机访问存储器(Random Access Memory),易失性.是与CPU直接 ...

  9. 真正“搞”懂http协议01—背景故事

    去年读了<图解HTTP>.<图解TCP/IP>以及<图解网络硬件>但是读了之后并没有什么深刻的印象,只是有了一层模糊的脉络,刚好最近又接触了一些有关http的相关内 ...

随机推荐

  1. 两天以来对plsqldev操作的记忆

    frist,开机后,打开服务,打开服务,打开服务(重要的事情说三遍). and then, 打开plsqldev,输入TEST账户而不是SYS账户,否则你会被许多未接触到的内容淹没你刚刚创建好的表. ...

  2. zabbix3.0部署(LAMP)

    0.1 初始化 #!/bin/sh yum clean all systemctl stop firewalld.service systemctl disable firewalld.service ...

  3. ubuntu下的第一个脚本file.sh

    1.新建空文档,写入shell命令: #!/bin/sh cd /home/plg ./usb 第一行一定要有,一开始参考网上写的#!/usr/bin/sh,会提示错误 bash: ./file.sh ...

  4. 虚拟机安装Centos版本的linux

    选择自定义安装,然后一路确定下去,对了,Centos的版本一定要高,比如centos 6,太低安装会出问题

  5. 笔记本安装Win2012R2 心得(包含无线网卡+有线网卡驱动解决方法)

    笔记本:联想昭阳E47G 无线网卡安装方法: 系统安装完毕后将自动识别无线网卡驱动,但需要手动允许WLAN服务开启.(建议,如果是拿来办公或者家用,可以安装上桌面体验)不然,QQ发的截图双击都看不起. ...

  6. viewController的自动扩展属性导致TableViewGroupStyle时向上填充

    self.automaticallyAdjustsScrollViewInsets = NO; 需设置这个属性

  7. js面向对象(构造函数与继承)

    深入解读JavaScript面向对象编程实践 Mar 9, 2016 面向对象编程是用抽象方式创建基于现实世界模型的一种编程模式,主要包括模块化.多态.和封装几种技术. 对JavaScript而言,其 ...

  8. mycat启动后,用Navicat Premium 连接报 "2013"

    最近在学习mycat,启动后,用Navicat Premium 连接报 "2013"  Lost Connection During Query ,经过一顿百度也没发现是怎么回事, ...

  9. 0816 1459 json & pickle ,目录导入,目录规范

    ---恢复内容开始--- 1.json & pickle 磁盘上只能存储字符串或二进制数据,直接存字典.列表.元组等是存不了的,所以需要把各种数据转换成字符串格式,然后再存到硬盘. 直接将一个 ...

  10. php大力力 [001节]2015-08-21.php在百度文库的几个基础教程新手上路日记 大力力php 大力同学 2015-08-21 15:28

    php大力力 [001节]2015-08-21.php在百度文库的几个基础教程新手上路日记 大力力php 大力同学 2015-08-21 15:28 话说,嗯嗯,就是我自己说,做事认真要用表格,学习技 ...