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

本节书摘来自异步社区《精通Matlab数字图像处理与识别》一书中的第6章,第6.2节,作者 张铮 , 倪红霞 , 苑春苗 , 杨立红,更多章节内容可以访问云栖社区“异步社区”公众号查看

6.2 傅立叶变换基础知识

精通Matlab数字图像处理与识别
要理解傅立叶变换,掌握频率域滤波的思想,必要的数学知识是不能跳过的。为便于理解,我们将尽可能定性地去描述。其实傅立叶变换所必需的数学知识对于一个理工科大学二年级以上的学生来说是很有限的,高等数学中傅立叶级数的知识加上线性代数中基和向量空间的概念就足够了。下面就从一维情况下的傅立叶级数开始进行介绍。

6.2.1 傅立叶级数

法国数学家傅立叶发现任何周期函数只要满足一定条件(狄利赫里条件)都可以用正弦函数和余弦函数构成的无穷级数,即以不同频率的正弦和余弦函数的加权和来表示,后世称为傅立叶级数。

对于有限定义域的非周期函数,可以对其进行周期拓延,从而使其在整个扩展定义域上为周期函数,从而也可以展开为傅立叶级数。

1.傅立叶级数的三角形式
周期为T的函数f (t)的三角形式傅立叶级数展开为

image

a k和b k称为傅立叶系数。稍后在学习傅立叶级数的复数形式时还将介绍傅立叶系数的另一种形式。事实上,傅立叶系数正是我们在6.2.2小节傅立叶变换中所关心的对象。

于是,周期函数f(t)就与下面的傅立叶序列产生了一一对应,即

image

图6.1所示形象地显示出了这种频率分解,左侧的周期函数f(x)可以由右侧函数的加权和来表示,即由不同频率的正弦和余弦函数以不同的系数组合在一起。

image

原函数f(x)(左),其傅立叶展开为一系列不同频率的正弦、余弦函数的加权和(右)

从数学上已经证明了,傅立叶级数的前N项和是原函数f(t)在给定能量下的最佳逼近。

image

图6.2为我们展示了对于一个方波信号函数采用不同的N值的逼近情况。随着N的增大,逼近效果越来越好。但同时也注意到,在f (x)的不可导点上,如果只取式(6-1)右边的无穷级数中的有限项之和作为hat f(x),那么hat f(x)在这些点上会有起伏,对于图6.2(a)的方波信号尤为明显,这就是著名的吉布斯现象。

2.傅立叶级数的复指数形式
除上面介绍的三角形式外,傅立叶级数还有其他两种常用的表现形式,即余弦形式和复指数形式。借助欧拉公式,上述3种形式可以很方便地进行等价转化,本质上它们都是一样的。

image

复指数傅立叶级数即我们经常说的傅立叶级数的复数形式,因其具有简洁的形式(只需一个统一的表达式计算傅立叶系数),在进行信号和系统分析时通常更易于使用;而余弦傅立叶级数可使周期信号的幅度谱和相位谱意义更加直观,函数的余弦傅立叶级数展开可以解释为f(x)可以由不同频率和相位的余弦波以不同系数组合在一起来表示,而在三角形式中相位是隐藏在系数a n和b n中的。下面主要介绍复指数傅立叶级数,在后面的傅立叶变换中要用到的正是这种形式。关于余弦傅立叶级数的有关知识,感兴趣的读者请参考附录Ⅲ。

傅立叶级数的复指数形式为

image

由式(6-4)和(6-5)可见,复指数傅立叶级数形式比较简洁,级数和系数都可以采用一个统一的公式计算。有关如何由式(6-1)推导出傅立叶级数复指数形式(6-4)的过程,由于这里我们感兴趣的并非傅立叶级数本身,就不在正文中给出了,详细的内容可参考附录Ⅱ,只要您相信不同的展开形式之间本质上是等价的,并对复指数形式的傅立叶级数展开建立了一个基本的形式上的认识就足以继续阅读和理解后面的内容了。

6.2.2 傅立叶变换

1.一维连续傅立叶变换
对于定义域为整个时间轴(-∞

image

式(6-6)和式(6-7)即为我们通常所说的傅立叶变换对,6.1节中提到的函数可以从它的反变换进行重建正是基于上面的傅立叶变换对。

由于傅立叶变换与傅立叶级数涉及两类不同的函数,在很多数字图像处理的书中通常对它们分别进行处理,并没有阐明它们之间存在的密切联系,这给很多初学者带来了困扰,实际上我们不妨认为周期函数的周期可以趋向无穷大,这样可以将傅立叶变换看成是傅立叶级数的推广。

仔细地观察式(6-6)和式(6-7),对比复指数形式的傅立叶级数展开公式式(6-4),注意到在这里傅立叶变换的结果F(u)实际上相当于傅立叶级数展开中的傅立叶系数,而反变换公式式(6-7)则体现出不同频率复指数函数的加权和的形式,相当于复指数形式的傅立叶级数展开公式,只不过这里的频率u变为了连续的,所以加权和采用了积分的形式。这是因为随着作为式(6-5)的积分上下限的T向整个实数定义域扩展,即T→∞,频率u则趋近于du(因为u=1/T),导致原来离散变化的u的连续化。

2.一维离散傅立叶变换
一维函数f(x)(其中x=0, 1, 2 ,… , M-1)的傅立叶变换的离散形式为

image

由于一维情况下很多性质更为直观,我们更青睐于分析一维离散傅立叶变换,而由此得出的这些结论都可顺利推广至二维。一些有用的性质如下。

仔细观察式(6-8)和式(6-9),注意到在频域下变换F(u)也是离散的,且其定义域仍为0~M-1,这是因为F(u)的周期性,即
image

考虑式(6-9)中的系数1/M,在这里该系数被放在反变换之前,实际上它也可以位于式(6-8)的正变换公式中。更一般的情况是只要能够保证正变换与反变换之前的系数乘积为1/M即可。例如,两个公式的系数可以均为 1/sqrt M 。
为了求得每一个F(u)(u=0, 1, 2,…, M-1),都需要全部M个点的f(x)参与加权求和计算。对于M个u,则总共需要大约M2次计算。对于比较大M(在二维情况下对应着比较大的图像),计算代价还是相当可观的,我们会在下一节快速傅立叶变换中来研究如何提高计算效率的问题。
3.二维连续傅立叶变换
有了之前的基础,下面我们将傅立叶变换及其反变换推广至二维。对于二维连续函数,傅立叶变换为

F(u,v) = int_{ - infty }^infty {int_{ - infty }^infty {f(x,y)text{e}^{ - text{j}2pi (ux + vy)} dxdy} }

image

4.二维离散傅立叶变换
在数字图像处理中,我们关心的自然是二维离散函数的傅立叶变换,下面直接给出二维离散傅立叶变换(Discrete Fourier Transform, DFT)公式。

image

显然,这是f(x, y)各个像素的灰度之和。而如果将系数1/MN放在正变换之前,则F(0, 0)对应于原图像f(x, y)的平均灰度。F(0, 0)有时被称作频谱的直流分量(DC)。

我们之前曾指出了一维函数可以表示为正弦(余弦)函数的加权和形式;类似的,二维函数f(x, y)可以分解为不同频率的二维正弦(余弦)平面波的按比例叠加。图6.3(a)中给出了一幅简单的图像,可将它视为以其灰度值作为幅值的二维函数,如图6.3(b)所示,根据式(6-13),它可以分解为如图6.3(c)所示的不同频率和方向的正弦(余弦)平面波的按比例叠加(只给出了一部分)。比如图6.3(c)中第一行中间的平面波为sin(Y),而第二行右面的平面波则为sin(X+2Y),而第三行最后的一个为sin(2X+2Y)。

image

image

6.2.3 幅度谱、相位谱和功率谱

下面,我们再来定义傅立叶变换的幅度谱、相位谱以及功率谱。

image

幅度谱又叫频率谱,是图像增强中关心的主要对象,频域下每一点(u,v)的幅度|F(u, v)|可用来表示该频率的正弦(余弦)平面波在叠加中所占的比例,如图6.4所示。幅度谱直接反映频率信息,是频域滤波中的一个主要依据。

图6.4所示幅度谱中的A、B、C、D四点的幅值分别为四周的4个正弦平面波在的加权求和中的权值(混合比例)。注意这4个正弦平面波的方向和频率。

image

相位谱表面上看并不那么直观,但它隐含着实部与虚部之间的某种比例关系,因此与图像结构息息相关。

由于对于和空域等大的频域空间下的每一点(u, v),均可计算一个对应的|F(u, v)|和φ(u, v),因此可以像显示一幅图像那样显示幅度谱和相位谱。图6.5(b)、(c)分别给出了图6.5(a)中图像的幅度谱和相位谱,获得它们的方法请参考6.3节中傅立叶变换实现的相关内容,关于幅度谱和相位谱的一个非常有趣的例子请参考例6.2。

image

▲图6.5 circuit.tif幅度谱和相位谱。幅度谱和相位谱都将(0,0)点移到了中心

6.2.4 傅立叶变换的实质—基的转换

无论是傅立叶变换、离散余弦变换还是小波变换,其本质都是基的变换。下面首先让我们一起回顾一下线性代数中基和向量空间的相关知识。

1.基和向量空间
在三维欧氏向量空间中,某向量vec v 可以由3个复数{v_1 ,v_2 ,v_3 }来定义,常常记作vec v =(v_1 ,v_2 ,v_3 ),这3个复数与3个正交单位向量{vec e_1 ,vec e_2 ,vec e_3 }相联系。实际上,有序集{ v_1 ,v_2 ,v_3 }表示向量 vec v 的3个标量分量,也就是系数;而3个正交单位向量{vec e_1 ,vec e_2 ,vec e_3 }即为该三维欧氏空间的基向量。我们称该空间为这3个基向量所张成的空间,任何该空间中的向量vec v 均可由这3个基向量的线性组合(加权和)表示为

image

在上面的叙述中涉及了向量的正交,这是向量代数中一个非常重要的概念。为了说明正交的概念,让我们首先回顾一下向量点积(数量积),两个向量的点积定义为

image

此时,如果vec u bullet vec v = 0 ,则称这两个向量vec u 和vec v 互相正交。由式(6-22)可知,两非零向量正交则cos theta = 0 ,说明其夹角为90(垂直)。

接下来,定义一个向量在另一个向量方向上的投影或分量为

image

式中:vec e_v 为向量vec v 单位化后的单位向量,模为1,方向与vec v 相同。式(6-23)说明如果需要得到某向量在给定方向上的分量,只需计算该向量与给定方向单位向量的点积。

图6.6能够帮助我们理解上述内容,图6.6(a)中为一个三维空间中的向量vec v 以及3个单位正交基向量vec e_1 ,vec e_2 ,vec e_3 ;图6.6(b)中给出了向量vec v 在vec e_2 方向的投影v_2 ;在图6.6(c)中,根据矢量加法的平行四边形法则,向量vec v 被分解为3个正交基向量vec e_1 ,vec e_2 ,vec e_3 线性组合,显然可以表示为vec v =(v_1 ,v_2 ,v_3 )的形式。

image

将三维向量空间中基与投影的概念推广至N维向量空间。任何一个该空间中的N×1向量均可由N个基向量vec e_1 ,vec e_2 ,...,vec e_N 的线性组合来表示,记作

image

2.基函数和函数空间
尽管上面的向量分解与重构的问题比较基础,但它与傅立叶变换与反变换之间的关系却十分紧密。事实上,它们在形式上有着惊人的相似,唯一不同的是这里的向量空间变成了函数空间,向量vec v 变成了函数f(x),而基向量vec e 1,vec e 2,…,vec e n也相应地变成了基函数。对比式(6-24)~(6-25)和式(6-8)~(6-9)的形式不难看出,式(6-25)的分解过程即相当于傅立叶变换,而式(6-26)的重构过程则恰恰相当于傅立叶反变换。也就是说,相应函数空间中的任意函数均可以由该函数空间中的一组基函数的加权和来表示。观察式(6-8)容易发现,这里的基函数的形式为text{e}^{ - i2pi ux} ,我们用下面的等式来表示函数的正交性。

image

至此,读者应该已经理解了傅立叶变换的实质——基的转换。对于给定函数f(x),关键是选择合适的基,使得f(x)在这组基下表现出我们需要的特性。当某一组基不满足要求时,就需要通过变换将函数转换到另一组基下表示,方可得到我们需要的函数表示。常用的变换有傅立叶变换(以正弦和余弦函数为基函数)、小波变换(以各种小波函数为基函数)、离散余弦变换以及Walsh变换等。实际上,我们在第12章中将指出,特征降维中常用的主成份分析法(K-L变换)本质上也是一种基的转换。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/541464.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

《iOS 6核心开发手册(第4版)》——2.11节秘诀:构建星星滑块

本节书摘来自异步社区《iOS 6核心开发手册(第4版)》一书中的第2章,第2.11节秘诀:构建星星滑块,作者 【美】Erica Sadun,更多章节内容可以访问云栖社区“异步社区”公众号查看 2.11 秘诀:构建星星…

软考下午题具体解释---数据流图设计

在历年的软考下午题其中,有五道大题。各自是数据流图的设计,数据库设计,uml图,算法和设计模式,从今天这篇博文開始,小编就跟大家来一起学习软考下午题的相关内容。包含理论上的知识以及典型例题的解说&…

mysql属于数据库三级模式_数据库系统的三级模式指的是什么

数据库系统的三级模式指的是什么发布时间:2020-10-26 10:11:21来源:亿速云阅读:52作者:小新小编给大家分享一下数据库系统的三级模式指的是什么,希望大家阅读完这篇文章后大所收获,下面让我们一起去探讨吧&…

《自顶向下网络设计(第3版)》——导读

目录 第1部分 辨明客户的需求和目标 第1章 分析商业目标和制约 1.1 采用自顶向下的网络设计方法 1.2 分析商业目标 1.3 分析商业制约 1.4 商业目标检查表 1.5 小结 1.6 复习题 1.7 设计环境 第2章 分析技术目标与折衷措施 2.1 可扩展性 2.2 可用性 2.3 网络性能 2.4 安全性 2…

最小硬币问题_进行更改的最小硬币数量

最小硬币问题Description: 描述: This is classic dynamic programming problem to find minimum number of coins to make a change. This problem has been featured in interview rounds of Amazon, Morgan Stanley, Paytm, Samsung etc. 这是经典的动态编程问题…

补丁(patch)的制作与应用

为什么80%的码农都做不了架构师?>>> 转自http://linux-wiki.cn/wiki/zh-hans/%E8%A1%A5%E4%B8%81(patch)%E7%9A%84%E5%88%B6%E4%BD%9C%E4%B8%8E%E5%BA%94%E7%94%A8 如果hack了开源代码,为了方便分享(如提交Bug)或自己…

hbase 伪分布安装 java_HBase基础和伪分布式安装配置

一、HBase(NoSQL)的数据模型1.1 表(table),是存储管理数据的。1.2 行键(row key),类似于MySQL中的主键,行键是HBase表天然自带的,创建表时不需要指定1.3 列族(column family),列的集合。一张表中有多个行健&#xff0c…

java script创建对象_JavaScript七种非常经典的创建对象方式

JavaScript创建对象的方式有很多,通过Object构造函数或对象字面量的方式也可以创建单个对象,显然这两种方式会产生大量的重复代码,并不适合量产。接下来介绍七种非常经典的创建对象的方式,他们也各有优缺点。一、工厂模式可以无数…

axis2开发webservice之编写Axis2模块(Module)

axis2中的模块化开发。能够让开发者自由的加入自己所需的模块。提高开发效率,减少开发的难度。 Axis2能够通过模块(Module)进行扩展。Axis2模块至少须要有两个类,这两个类分别实现了Module和Handler接口。开发和使用一个Axis2模块…

java 看书浏览器官_JAVA读取文件流,设置浏览器下载或直接预览操作

最近项目需要在浏览器中通过url预览图片。但发现浏览器始终默认下载,而不是预览。研究了一下,发现了问题:// 设置response的header,注意这句,如果开启,默认浏览器会进行下载操作,如果注释掉&…

scrapy抓取淘宝女郎

scrapy抓取淘宝女郎 准备工作 首先在淘宝女郎的首页这里查看,当然想要爬取更多的话,当然这里要查看翻页的url,不过这操蛋的地方就是这里的翻页是使用javascript加载的,这个就有点尴尬了,找了好久没有找到,这里如果有朋…

win10 iot core java_Windows 10 IoT Core 正式版初体验

今天收到Windows 10 IoT Core Team邮件,Windows 10 IoT Core正式发布。以下记录了今天在Raspberry Pi 2上的体验过程:准备工作一台运行着正版Windows 10且版本不小于10240的个人PCVisual Studio 2015 版本不小于14.0.23107.0 D14Rel Install Visual Stud…

VUE2 第五天学习--过渡效果

阅读目录 1.理解VUE---过渡效果回到顶部1.理解VUE---过渡效果 1. 过渡的-css-类名会有4个(css) 类名在 enter/leave 在过渡中切换。1. v-enter: 进入过渡的开始状态。在元素被插入时生效,在下一个帧移除。2. v-enter-active: 进入过渡的结束状态。在元素被插入时生效…

国家可持续发展议程创新示范区创建工作推进会在北京召开

2019独角兽企业重金招聘Python工程师标准>>> 为推进地方申报国家可持续发展议程创新示范区相关工作,根据国家可持续发展议程创新示范区创建工作的进展及需求,2017年4月23日—25日,科技部社会发展科技司、中国21世纪议程管理中心在…

BlockingQueue详解

前言: 在新增的Concurrent包中,BlockingQueue很好的解决了多线程中,如何高效安全“传输”数据的问题。通过这些高效并且线程安全的队列类,为我们快速搭建高质量的多线程程序带来极大的便利。本文详细介绍了BlockingQueue家庭中的所…

[QGLViewer]3D场景鼠标点击位置

重载鼠标事件: void AxMapControl::mousePressEvent(QMouseEvent* e) {switch(currentTool){case AX_DRAW_DIRECTION:{if (e->button() Qt::LeftButton) {QPoint screenPte->pos();qglviewer::Vec orig1, dir1;camera()->convertClickToLine(screenPt, or…

can收发器 rx_CANOpen系列教程03 _CAN收发器功能、原理及作用

1写在前面前面文章是从大方向介绍了CAN网络,让大家对CAN网络有一定的认识。本文将范围缩小,讲述整个CAN网络其中的一个CAN收发器。如下图标记出来的部分:本文结合众多初学者容易产生的疑问来讲述CAN收发器相关的知识点,大概有如下…

centos php fpm 停止_如何关闭php-fpm进程?

因为你是编译的,可以在源码中复制php-fpm的init文件到系统中:cp -f sapi/fpm/init.d.php-fpm /etc/init.d/php-fpm然后就可以使用以下命令启动、停止、重启和重新加载php-fpm了:service php-fpm startservice php-fpm restartservice php-fpm…

Mongodb聚合函数

插入 测试数据 for(var j1;j<3;j){ for(var i1;i<3;i){ var person{Name:"jack"i,Age:i,Address:["henan","wuhan"],Course:[{Name:"shuxue",Score:i},{Name:"wuli",Score:i}]}db.DemoTest.Person.insert(pers…

php rename函数_php rename函数怎么用

PHP rename()函数用于重命名文件或目录&#xff0c;语法“rename(文件旧名称,新名称,句柄环境)”&#xff0c;使用用户指定的新名称更改文件或目录的旧名称&#xff0c;并且可以根据需要在目录之间移动&#xff1b;成功时返回True&#xff0c;失败时返回False。php rename()函数…