1.      图像处理中的傅立叶变换

将一幅图像从其空间域(spatialdomain)转换为频域(frequencydomain)。图像处理用到的主要是离散傅立叶变换(Discrete Fourier Transform),下文中简称DFT。

如上图所示,左边是原始图像(左白右黑),中间是DFT变换,右侧为变换后生成的频谱图(幅度相位共同决定了图中点亮度)。
上图展示了红色点(x,y)的变换,在纵轴方向,它所在的列颜色值都为0(黑色),因此组成它的波形也能量也都为0,在横轴方向,如中间图所示,左则为255(白色),右则为0(黑色),将其拆分成正弦波的组合,再利用拆分后的各个波的幅度(亮度)相位(亮度)以及频率大小(位置)生成频谱图(上图中简化了相位)。
原始图中的每个像素点,是由不同频率波投射在该点的能量叠加而成的,而频谱图中的每个点是原始图中每个像素点在该频率上的能量叠加而成的。它们之间都是一对多的关系,不存在一一对应。

2.      如何理解公式


以上公式分别是一维和二维DFT的定义(摘自《学习OpenCV》),先看看一维DFT公式,其中x0…xN-1是N个复数,它是原始数据,如音频数据中的每一帧,图像的像素点的灰度等,f是映射到频域后的值,也是复数.下标n是x的变化范围,下标k是f的变化范围.二维空间公式同理.
图像对应的二维空间举例:把一个256x256像素(Nx=256,Ny=256,共65536个点,每一点视为x,其值为亮度)的灰度图转换到频域,得到的也是一个256x256的矩阵,矩阵中的每个点都是复数(每一点视为f).

3.      频域矩阵中的各个点的值怎么求?

每一个f点的值,都由所有的x点通过上述公式累加求得.

4.      自然指数exp()的作用是什么?exp()和正弦/余弦波有什么关系?

拆分点x在各个频率上的相位和幅度分量.
exp()和正弦/余弦波的关系,详见欧拉公式:

5.      如何描述频域中的值

描述频率三个重要属性是:频率高低、幅值、相位。
输出的频域数据也由矩阵表示,其中每个点都是复数,实部和虚部分别对应幅值和相位,而该点在矩阵中的位置表示它的频率高低。

6.      怎么看DFT变换后的输出图


在很多例程中,变换后,都得到一个从中间到四周的放射状图形,如上图所示。
右侧图就是频率分布图谱,其中越靠近中心的位置频率越低,越亮的位置代表该频率的信号振幅越大。示意图大多是经过频谱中心化之后的图,如:OpenCV的例程OpenCV/samples/cpp/dft.cpp.在该程序中可以看到调整象限的操作。即左上右下互换,右上左下互换。数字图像的二维DFT所得结果,左上角是直流成分(图像的平均灰度级),四个角周围对应于低频成分,中央部分对应于高频部分。通过象限调整后,低频位置被换到了中间,这称为频谱中心化。对显示的频谱图而言,我们知道中间是低频,周围是高频即可。低频对应图像大致轮廓,高频对应图像细节。
一维DFT的系数对称(2N点的数据做DFT,变换系数关于N点位置对称,类似图5)。这是因为DFT的的变换基是对0~2π分析的,因为0到π和π到2π对称所以对称。二维可理解为两个一维的组合(见图1,2,3),因此它是从中心向四周扩散的。
图像中的像素点与频谱中的点虽然大小一样,但并没有一一对应的关系(见图4)

7.      如何使用DFT实现滤波

图6中能量分布在中高频区,从原始上看,它的细节比较多,局部跳变明显(梯度大),可想见,组成它的波成也是在某一中高频波的能量更大,也就是说边缘越多,变化的剧烈程序,中高频波分量越多。
滤波一般分为:低通(Low-pass)、高通(High-pass)、带通(Band-pass)。所谓高通就是保留图像中的高频成分,过滤低频成分,它类似于通过梯度求图像边缘。需要注意的是它过滤的是频率,而不是亮度。
具体实现就是将图片转成频谱图,过滤某一部分后,再通过逆变换转成灰度图。

8.      图像的变换与频谱图

图像的旋转平移等操作,只是位置变化,整体的亮度(能量)不变,但是在频谱图中却有差异。这是由于变换之后相位的差异,在频谱图上看到的点,实际是由幅度和相位共同算出的(见dft.cpp中的magnitude函数)

9.      DFT与卷积

利用DFT可以大大加快卷积运算的速度。卷积定理:空间域的卷积运算可以转换为频域的乘法运算。具体实现是将图片转换到频域,将卷积核也转换到频域,计算频域乘法,最后将乘积进行逆变换,转回空间域。
一般只在卷积核比较大时,才使用该方法优化。

10.  对频域一些想法

把声音拆成正弦波比较好理解,声音是声波的叠加:不同高度,宽度,起始位置的波的叠加。比如弹奏“do”,发出的声音是琴弦振动的结果,弦的连续振动,必然是有规律的。人听到的是一系列基音和泛音组合的结果。声音是时域到频域的映射,维度是一,即y=f(x),其中x是帧发生的时间,y是该帧强度的大小。我们可以通过切分出一个小的时间片 (do所在的时间段),把它拆分到频谱,找个它的各个基音和泛音,进行对比,重组等等后续处理,人声也是一样,当发出“啊“声音的时候,也是一系列振动引起的。频率是声音的局部特征,即从整条音频中切出“do”或”啊”的时间片段,求取其频谱。
把一张画拆分成频率,首先把一张彩图拆成不同通道的灰度图,考虑单张灰度图的频谱。图片是空间到频域的映射,维度是二,即z=f(x,y),其中x,y是像素点的坐标,z是灰度。我们认为像素点间的灰度变化(即梯度)是有规律的。比如画中,墙和窗相交边缘上的各个点,变化都差不多(变化快,梯度大,频率高),远处云与蓝天的边缘也有相似性(变化慢),在单色的区域,比如蓝天整体变化不大(无变化),多处具体共同的性质,也是视作一种重复,我们就把它提取为规律和特征。
除了图像音频,还有很多地方都可以用到频域映射,只要是有规律的重复出现即可,进而通过频谱分析,什么东西重复出现最多?它背后原因是什么?

11.  参考

1)       图像傅里叶变换
http://blog.csdn.net/abcjennifer/article/details/7622228

2)       理解深度学习中的卷积
http://www.jiqizhixin.com/article/2558

3)       (精心整理)图像的傅里叶变换
https://wenku.baidu.com/view/c5e2cca8fab069dc502201db.html

4)       傅里叶分析之掐死教程(完整版)
https://zhuanlan.zhihu.com/p/19763358?columnSlug=wille

5)       如何通俗易懂地解释欧拉公式
http://www.matongxue.com/madocs/8.html

图像处理之_傅立叶变换相关推荐

  1. 图像处理中的傅立叶变换

    傅立叶变换在图像处理中有非常非常的作用.因为不仅傅立叶分析涉及图像处理的很多方面,傅立叶的改进算法,比如离散余弦变换(DCT),gabor与小波(WT)在图像处理中也有重要的分量. 印象中,傅立叶变换 ...

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

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

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

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

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

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

  5. QT实现图像处理-傅立叶变换、傅立叶反变换、平滑、锐化与模板匹配

    From: http://www.cnblogs.com/qytan36/archive/2010/04/04/1704226.html 实验环境: 1,Linux操作系统 2,QT3编程开发环境 3 ...

  6. 边缘指示函数matlab,matlab图像处理——傅立叶变换边缘提取

    第一部分 图像的傅立叶变换 一. 实验目的 1.了解图像变换的意义和手段: 2. 熟悉傅里叶变换的基本性质: 3. 熟练掌握FFT的方法及应用: 4. 通过实验了解二维频谱的分布特点: 5. 通过本实 ...

  7. 《精通Matlab数字图像处理与识别》一6.2 傅立叶变换基础知识

    本节书摘来自异步社区<精通Matlab数字图像处理与识别>一书中的第6章,第6.2节,作者 张铮 , 倪红霞 , 苑春苗 , 杨立红,更多章节内容可以访问云栖社区"异步社区&qu ...

  8. sin傅里叶变换公式_全面解析傅立叶变换(非常详细)

    前言 第一部分. DFT 第一章.傅立叶变换的由来 第二章.实数形式离散傅立叶变换(Real DFT) 从头到尾彻底理解傅里叶变换算法.下 第三章.复数 第四章.复数形式离散傅立叶变换 前言:&quo ...

  9. 数字图像处理100问—33 傅立叶变换——低通滤波

    提示:内容整理自:https://github.com/gzr2017/ImageProcessing100Wen CV小白从0开始学数字图像处理 33 傅立叶变换--低通滤波 将imori.jpg灰 ...

最新文章

  1. LAMMP源码环境搭建
  2. 保存/恢复cxGrid布局
  3. QNX设置开机启动命令来修改IP地址
  4. boost::math模块计算贝塞尔函数的零点的测试程序
  5. 【C语言进阶深度学习记录】十二 C语言中的:字符和字符串
  6. 用pycharm写python_如何利用pyCharm编写和运行python文件
  7. 看CarbonData如何用四招助力Apache Spark
  8. poj1083 解题报告(poj 1083 analysis report)
  9. pythonfor循环是迭代器吗_Python学习——for循环,生成器,迭代器详解
  10. php给超链接添加图标,怎么给一个PHP密码访问页面加超链接
  11. iPhone13全系列参数对比
  12. 2021SC@SDUSC Zxing开源代码(十三)Aztec二维码(二)
  13. chrome 您的浏览器禁用了Javascript
  14. 网站服务器进不去可以加速进去吗,让网页打开加速的方法
  15. 微信小程序--石头剪刀布(小游戏)
  16. 如何修改chrome账号密码自动填充的字体样式
  17. WESAD:情绪分类多模态传感器数据集
  18. 嵌入式系统设计的核心技术
  19. 关于IE浏览器下载流数据的处理
  20. 万年历c语言攀枝花,C语言实现万年历

热门文章

  1. Python使用PuLP第三方库解决线性规划问题
  2. 推荐中的ctr校准方式
  3. python换零钱_python动态规划-零钱兑换
  4. 北京信息科技大学CSDN高校俱乐部举办的首次活动------考研经验交流会
  5. 【pygame学习+实战】第一篇:游戏最小系统
  6. 计算机李宁,李宁的个人主页-西北工业大学教师个人主页
  7. linux系统横杆,linux横杠怎么打
  8. 我的世界mod整合包java_[1.7.10]我的世界多MOD整合包-糖果领域
  9. react---收藏的点击和取消(刷新还会存在)--demo
  10. mysql反掩码_理解通配符掩码