晓查 发自 凹非寺

量子位 报道 | 公众号 QbitAI

无论是处理声音和图像信号,都必须用到傅立叶变换。其实除了这些“正经”用途,它还能做一些有意思的事情。

最近,一位名叫Jez Swanson的谷歌工程师自己写了篇博客,教你用傅立叶变换画出任何简笔画。目前已在Twitter已经收获了3000+点赞。

什么是傅立叶变换

简而言之,傅里叶变换是将某些东西分解成一系列正弦波,而正弦波是最简单的周期函数。

我们先从一些简单的例子开始,比如下面的波形可以分解成两个正弦波。

反过来说,傅里叶变换也是组合波形的一种方式。把这两个正弦波叠加起来,就得到上方的波形。

即使是看起来并不平滑的方波,也能分解成正弦波。

但是方波和前面波形不同,它在进行叠加操作的时候会有困难。因为方波的成分包含无数正弦波。但是在现实世界中,我们不可能能叠加无限多的波形。

如果我们截取其中主要的部分,就能得到近似的方波波形。随着高频的成分越来越多,图形也会越来越接近方波。

点击播放 GIF 1.9M

接下来,我们在互动页面上随便画出一个波形,

通常计算机会离散地记录下波形上一些点的数值,然后对它们做傅立叶变换,最终得到的波形与原始波形非常相似

这也是计算机处理声音的方式,MP3文件就是这么做的。

通常计算机会把声波存储为一系列点,点的密集程度决定了舍弃掉多高的频率。电脑只存储那些前面低频部分,忽略声音里的高频,这就是MP3压缩的原理。

从三维角度理解

上面简单介绍了傅立叶变换的基本知识。如果你学过一点三角函数的知识,就知道正弦波其实和圆有密切的关系。

我们一边画圆,一边让绘制点随着时间前进,就得到在三维空间中的螺旋线图像。

点击播放 GIF 0.3M

它从侧面来看就是正弦波:

点击播放 GIF 0.4M

叠加的“轮子”

既然正弦波可以理解成圆周运动的投影,那么傅立叶变换就可以理解成不同圆周运动的叠加。

每个轮子的转速代表着频率,轮子的半径代表着振幅。

理解了以上内容,我们就可以用“三维正弦波”做一些有趣的事情,比如画一个胜利手势:

在三维角度看,它是这样的:

点击播放 GIF 1.1M

我们可以将简笔画视为一个3D图形。想象一个人正在画一只手,那么这3D图形就代表了笔尖位置的变化。x、y维度代表笔尖位置,z维度代表笔尖所在的某个时刻。

在这里,我们使用的是3D螺旋正弦波的组合,来得到我们的图像。

当我们从正面观察这个3D图像时,就会看到许多圆圈的叠加运动。我们把一个圆围绕另一个圆旋转叫做“本轮”(epicycle)。

和前面叠加出方波一样。我们只用几个圆圈就可以很好地逼近简笔画。前面的大圆确定图像的大致形状,而最后的小圆让边缘更锐利。

作者Jez已经把它做成Demo放在网站上试玩,还用它画了一幅自画像。

作者自画像的傅立叶变换

最后奉上Jez本人照片:

自己动手

如果你觉得很酷炫,可以去Jez的个人博客网站去尝试。

http://www.jezzamon.com/fourier/index.html

他还公布了交互部分的源代码。这些交互元素大部分是用JS编写的。

另外Jez还简单介绍了傅立叶变换是如何用于JPEG图像压缩的,这部分内容使用了Python和Jupyter Notebook。并把说明文档放在了Python文件夹中。

如果你想折腾JPEG图像压缩原理的部分,还需要安装Jupyter,以及NumPy,PIL,SciPy和Matplotlib。

学习资料

Jez这篇博客的介绍还是非常简略的,即使你完全没有数学基础也能上手。如果想更深入的学习傅立叶变换,Jez也给出了更多学习教程。

傅立叶变换的交互式学习指南:

https://betterexplained.com/articles/an-interactive-guide-to-the-fourier-transform/

数学播客“3Blue1Brown”的视频教程:

http://www.bilibili.com/video/av19141078/

作者系网易新闻·网易号“各有态度”签约作者

—完—

加入社群

量子位AI社群开始招募啦,欢迎对AI感兴趣的同学,在量子位公众号(QbitAI)对话界面回复关键字“交流群”,获取入群方式;

此外,量子位专业细分群(自动驾驶、CV、NLP、机器学习等)正在招募,面向正在从事相关领域的工程师及研究人员。

进专业群请在量子位公众号(QbitAI)对话界面回复关键字“专业群”,获取入群方式。(专业群审核较严,敬请谅解)

诚挚招聘

量子位正在招募编辑/记者,工作地点在北京中关村。期待有才气、有热情的同学加入我们!相关细节,请在量子位公众号(QbitAI)对话界面,回复“招聘”两个字。

喜欢就点「好看」吧 !

python正弦波叠加方波_傅立叶变换还能画简笔画?谷歌工程师开发的这个试玩网站火了...相关推荐

  1. 傅立叶变换还能画简笔画?谷歌工程师开发的这个试玩网站火了| 附资源

    晓查 发自 凹非寺  量子位 报道 | 公众号 QbitAI 无论是处理声音和图像信号,都必须用到傅立叶变换.其实除了这些"正经"用途,它还能做一些有意思的事情. 最近,一位名叫J ...

  2. python正弦波叠加方波_无穷多个(幅值)和(频率)不等的正弦波叠加就能形成周期方波。_学小易找答案...

    [简答题]请上传撰写的演讲稿 (30.0分) [单选题]被称为"信息化的第一场战争"的是() [简答题]编程题 1 .编写一个 C 程序 , 从键盘上输入任意两个整数 , 输出他们 ...

  3. 图像处理之_傅立叶变换

    1.      图像处理中的傅立叶变换 将一幅图像从其空间域(spatialdomain)转换为频域(frequencydomain).图像处理用到的主要是离散傅立叶变换(Discrete Fouri ...

  4. 狄立克雷函数傅立叶变换0点_傅立叶变换-描述曲线

    傅立叶变换是Jean-Baptiste Joseph Fourier在研究热传导微分方程中发明的数学工具,对于一个时域上的函数可以分解为频域分量的叠加.在处理有限序列过程中我们可以把序列假设为时间序列 ...

  5. Python信号分析 | 连续信号的傅立叶变换

    1.连续周期信号的傅立叶级数 由傅立叶级数的形式可以看出,其都属于积分形式,故在MATLAB中和Python中均可以用积分函数来实现求解. 例:Python中代码如下: ""&qu ...

  6. matlab实现傅里叶变换_傅立叶变换求解偏微分方程和积分方程

    本编文章探讨一下数学物理方法中一个常见的问题,即如何用傅立叶变换得到PDE或者积分方程的解.在文章的最后,会附上MATLAB的实现代码.学疏才浅,欢迎大家指点! 1. 什么是傅立叶变换? 从数学形式上 ...

  7. 用python做元旦贺卡_用AI帮你画新年贺卡:只需输入几个单词,就能模仿大师名作...

    原标题:用AI帮你画新年贺卡:只需输入几个单词,就能模仿大师名作 晓查 发自 凹非寺 量子位 出品 | 公众号 QbitAI 如果你的手法拙劣,没有任何艺术细菌,自己作画完全无法见人.但是你想给妹子送 ...

  8. python不会怎么办_怕你还不会Python函数,我特意为你整理了一篇博客

    什么是函数 函数是组织好的,可重复使用的,用来实现单一,或相关联功能的代码段. 函数能提高应用的模块性,和代码的重复利用率.你已经知道Python提供了许多内建函数,比如print().但你也可以自己 ...

  9. python 抠图源码_比PS还好用!Python 20行代码批量抠图

    你是否曾经想将某张照片中的人物抠出来,然后拼接到其他图片上去,从而可以即使你在天涯海角,我也可以到此一游? 很多人学习python,不知道从何学起. 很多人学习python,掌握了基本语法过后,不知道 ...

最新文章

  1. 偷走不经意流逝的时光,摸鱼神器:神偷
  2. 如何在属性面板中增加一个属性-UI界面编辑器(XproerUI)教程
  3. 为什么Python是最吸金编程语言?
  4. 6-第三方库离线安装法
  5. 简单实现分行输出的javascript代码
  6. 找出两个字符串中所有共同的字符_面试中的两个字符串问题竟给我整懵了?!| 原力计划...
  7. SQL实战之查找薪水涨幅超过15次的员工号emp_no以及其对应的涨幅次数t
  8. @程序员,2020年,这类程序员要做好苦日子准备了!
  9. C#之Chart控件使用
  10. 单片机学习笔记(持续更新中)
  11. pdf分解成多个pdf?PDF分割怎么做
  12. 07过去进行时,过去将来时,陈述句 变宾语从句(that 引导)
  13. “报告星”自动报告生成系统介绍
  14. ibm常用分析工具ha.jar,jca.jar
  15. 任务调度管理-触发任务调度的机制
  16. viso画图神器VS CONDE插件PlantUML
  17. 迅雷的xss漏洞和敏感信息泄露
  18. “碳中和”愿景下的智慧灯杆,助力智能交通全链条减碳
  19. 1.PMAC卡-简介和预备知识
  20. 7z 头部错误 数据错误_简单的方法来修复损坏的7Zip的文件

热门文章

  1. python pandas (ix iloc loc) 的区别
  2. 高并发存储优化篇:诸多策略,缓存为王
  3. 2015下半年软件测评师上午考试试题
  4. ZPL打印二维码、汉字
  5. 世界最大的图像:26,031,250,000像素
  6. y空间兑换代码_动态空间面板模型教程(一文读懂动态面板空间spregdpd操作应用)...
  7. adum1201参考电路_【VIP专享】数字式隔离器ADUM1201在RS232总线通信系统中的应用
  8. 新鲜出炉:Zadig v1.2.0 发布
  9. 2.git和github(github账号注册)
  10. 【红蓝对抗】边界突破-思维导图