11月13, 2019

封神——傅立叶变换

封神?一点都不夸张!

如果对所有算法排位,傅立叶变换绝对可以封神。傅立叶变换有多牛?!相当于给人类安了第三只眼!基本上不是人类能搞出来的东西。凡人,准备膜拜吧!

推荐书籍

title

这是我从大量算法书籍中精心筛选出来的,它

  • 重视算法原理的理解,
  • 用生动的例子替代晦涩的公式证明,
  • 绘图也非常有趣,

​对非专业开发者十分友好​。 我的算法教程,也是以《算法图解》 为蓝本展开​。

获取渠道

除了购买纸质图书外,你还可以从微信读书搜索到,领用无限读书券非常划算。

准备开始

本节是《算法图解》第 11.3 节的拓展。首先认识一下,傅立叶是一个生活在 18 世纪的法国帅哥,跟随大佬拿破仑打过仗,当过官儿吃过皇粮,后来又弃枪从学搞得也不错,一路干到法兰西学院终身秘书。履历是金光闪闪,跟着大佬,自己也成了大佬。

原理

我非常喜欢喝可乐,据说可口可乐的配方是最高机密。就是这么简单的一个糖水,每个人都能轻松的得到一份成品,但是没有人能百分百复原它的味道。这种从成品到原料的分析过程,在技术上称之为:逆向工程。通常非常困难,因为这是一个开放问题。

有的时候我们不仅对食物的成分感兴趣,也对各种信号的成分感兴趣比如:声音、图像。和猜测可口可乐的配方一样,声音、图像的配方也是一项非常困难的逆向工程,做起来非常困难。但是有个人做到了,他就是傅立叶。

我们一般看待信号的角度是时域的,无论什么信号我们都是沿着进度条去观察,除此之外我们似乎没有其他的观察方法。傅立叶成功的将信号分解为一系列更简单的信号:频率不同的正弦信号。这就得到了信号的配方,只要知道这个配方,就可以按照配方将各种频率的信号混合在一起,完成信号的再现。这个配方就是频谱。傅立叶将人类对信号的理解带入频域。

有意思的特性

只要按照菜谱做,鱼香肉丝的味道都差不多。时域信号可以转换到频域,从频域再转换回来就还是之前的信号(实际上会有轻微的差异,但那无伤大雅)。如果傅立叶变换只能获得信号的配方那就有点 low 了,在此基础上我们能做更多有意思的事。

高通滤波

很多时候我们会需要提取图片的边缘,你会怎么做呢?用笔描边吗?傅立叶爸爸带你飞,咱们用高通滤波器。 这个高通不是 “高通” 公司,高通是 “高频通过“ 的意思。我们看到的图片的边缘,实际上是两个不同色块之间跳跃的像素,如果想像成声音的话,这些部位就更加尖锐,或者说频率更高。 如果我们将图片转换到频域,节制低频信号,让高频信号通过,再转换回时域信号,会得到有趣的结果。

首先有请图像领域的知名麻豆——莱娜女士。

title

它的频谱看起来如何呢?

title

越亮的区域,代表这个频率的成分更多。频谱正中央是低频区域,外围是高频区域。

我们可以看到低频区域有一块比较集中的信息,现在我们挖掉频谱中央的低频信息,频谱看起来这样:

title

再将频域信号转换回时域信号,看看 “莱娜” 女士发生了什么变化?

title

我们得到一张 “线稿”,完成对图片边缘的提取。我们所做的只是傅立叶变换,应用了高通滤波,就完成了,很神奇不是么!

对于声音信号,借助傅立叶变换,我们可以轻松的在频域 P 掉低频噪音,或者美化声音,原理大体相同。

没有傅立叶,就没有互联网

如今几乎所有信息最终都会数字化,就会用到傅立叶变换及其变种,借助傅立叶变换才将信号识别为具体的成分,完成数字化。

下次用到美颜相机、刷抖音的时候,记得给傅立叶大佬双击!

代码在这里

本文链接:http://www.thinkinpython.com/post/Fourier_transform.html

-- EOF --