热门标签 | HotTags
当前位置:  开发笔记 > 后端 > 正文

傅里叶变换(二维离散傅里叶变换)

离散二维傅里叶变换一常用性质:可分离性、周期性和共轭对称性、平移性、旋转性质、卷积与相关定理;(1)可分离性:二维离散傅里叶变换DFT可分离性的基本思想是
离散二维傅里叶变换

一常用性质:

       可分离性、周期性和共轭对称性、平移性、旋转性质、卷积与相关定理;

(1)可分离性:

   二维离散傅里叶变换DFT可分离性的基本思想是DFT可分离为两次一维DFT。因此可以用通过计算两次一维的FFT来得到二维快速傅里叶FFT算法。根据快速傅里叶变换的计算要求,需要图像的行数、列数均满足2的n次方,如果不满足,在计算FFT之前先要对图像补零以满足2的n次。

   一个M行N列的二维图像f(x,y),先按行队列变量y做一次长度为N的一维离散傅里叶变换,再将计算结果按列向对变量x做一次长度为M傅里叶变换就可以得到该图像的傅里叶变换结果,如式所示:

                      

将上式分解开来就是如下的两部分,先得到F(x,v),再由F(x,v)得到F(u,v):

                        


计算过程如下:


每一行由N个点,对每一行的一维N点序列进行离散傅里叶变换得到F(x,u),再对得到F(x,u)按列向对每一列做M点的离散傅里叶变换,就可以得到二维图像f(x,y)的离散傅里叶变换F(u,v).

同样,做傅里叶逆变换时,先对列向做一维傅里叶逆变换,再对行做一维逆傅里叶变换,如下式所示:


(2)周期性和共轭对称性

由傅里叶变换的基本性质可以知道,离散信号的频谱具有周期性。离散傅里叶变换DFT和它的里变换都以傅里叶变换的点数N为周期的。

对于一维傅里叶变换有:

对于二维傅里叶变换有:

类似有:即从DFT角度来看,反变换得到的图像阵列也是二维循环的。

共轭对称性

对于一维信号有:F(u)=F*(-u),如图所示的一维信号的幅度谱:点数为M的傅里叶变换一个周期为M,关于原点对称。原点即为0频率点,从图中可以看出在0频率的值最大,即信号f(x)的直流分量(均值),远离原点处的即为高频成份,高频成份的幅值较小,说明信号的大部分能量集中在低频部分。


对于二维信号有:F(u,v)=F*(-u,-v)对于二维图像,其结果如图c所示。左上角(0,0)处为二维图像得0频率点,该点得值对应图像的平均灰度值,图中四个角对应低频成分,中间区域为高频成份,低频区域的幅度值打羽高频区域的幅度值,也同样表示该信号的主要能量集中在低频区域。


根据周期性和共轭对称性,在对图像进行频谱分析处理时只需要关注一个周期就可以了,同时利用图像的傅里叶变换和傅里叶变换的共轭可以直接计算图像的幅度谱,因此使得图像的频谱计算和显示得以简化。

(3)平移性:

傅里叶变换对有如下平移性质:


式子表明,

在频域中原点平移到(u0 ,v0)时,其对应的空间域 f(x,y)要乘上一个正的指数项:

                             

在空域中图像原点平移到(x0,y0)时,其对应的F(u,v)要乘上一个负的指数项:

                              

在数字图像处理中,常常需要将F(u,v)的原点移到N*N频域的中心,以便能清楚地分析傅里叶谱的情况,平移前空域、频域原点均在左上方。要做到这点,只需令上面平移公式中的:u0=v0=N/2;


所以

上式表明:如果需要将图像傅里叶谱的原点从左上角(0,0)移到中心点(N/2,N/2),只要f(x,y)乘上因子进行傅里叶变换即可实现。

平移性还体现了:当空域中f(x,y)产生移动时,在频域中只发生相移,并不影响他的傅里叶变换的幅度,因为:

                                        

反之,当频域中F(u,v)产生移动时,相应f(x,y)在空域中也只发生相移,不产生幅值变化。根据平移性质,为了更清楚查看二维图像的频谱,使直流成分出项在图像中央,在把画面分成四分的基础上,进行如图所示的换位(移位)也是可以的,这样,频域原点就回平移到中心。如下所示:


(4)旋转性质

如果 f(x,y)旋转了一个角度,那么 f(x,y)旋转后的图像的傅立叶变换也旋转了相同的角度。平面直角坐标改写成极坐标形式:

替换则有:

如果f(x,y)被旋转W,则F(u,v)被旋转同一角度。即有傅里叶变换对:

                            


如下所示:


同时,我们可以得出结论,对图像进行旋转变换和傅立叶变换的顺序是可交换的。即先旋转再傅里叶变换或者先傅里叶变换再旋转,得到的结果相同。F{R{f(x,y)}} = R{F{f(x,y)}}。

(5)卷积与相关定理

卷积定理包括空间域卷积和频率域卷积,卷积是空间域滤波和频率域滤波之间的纽带:两个空域信号的卷积等价于其频域信号的 乘积f(x,y)*h(x,y) → F(u,v)H(u,v) 或者 F{f(x,y)*h(x,y)} = F(u,v)H(u,v)

两个信号频域上的卷积等价于空间域的相乘f(x,y) g(x,y) →F(u,v)*H(u,v);

该性质的好处是将需要经过翻折、平移、相乘、求和等步骤实现的复杂的卷积运算简化为简单的乘法运算,这也是快速傅里叶变换(FFT)的出现使得该性质得到更广泛应用,同时,该性质对于理解信号的频率域处理方法特别重要,使得信号的空间域处理可以转换到频率域进行处理实现。

根据空间域卷积定理,在空间域对应的是原始信号与滤波器的冲击响应的卷积,卷积定义式为信号翻折平移求和的过程,步骤复杂,运算量大,但如果转换到频率域进行处理,则对在将二者的频谱直接相乘就可以得到滤波结果,然后对滤波结果进行傅里叶逆变换就可以得到滤波后的空间域域图像。如下图所示,对信号进行低通和高通滤波处理的过程和效果。

相关定理:

空域中 f(x,y)与 与 g(x,y) 的相关等价于频域中 F(u,v) 的共轭与 G(u,v)  相乘f(x,y) g(x,y) → F*(u,v)G(u,v)

同时有:f*(x,y)g(x,y) → F(u,v) G(u,v)

相关定理与卷积定理类似,也是把积分求和过程转化为了频域相乘,因此,也使得相关分析的计算简化。

相关的重要应用在于匹配:确定是否有感兴趣的物体区域。f(x,y)是原始图像,g(x,y)作为感兴趣的物体或区域(模板),如果匹配,两个函数的相关值会在 f 中找到相应 g 点的位置上达到最大值。如下图所示。图像 f(x,y) 与模板 g(x,y),通过计算相关函数,在匹配点处达到最大值,如图中红色圆圈标注的区域


延拓图像 f(x,y),延拓图像 g(x,y),相关函数图像,通过相关图像最大值的水平灰度剖面图。

傅里叶变换的实例与应用

首先我们认识几点有关傅里叶变换的特点:

l 傅里叶变换是从将图像从空间域变换到频率域,具有明确的物理意义。图像的频率是表征图像中灰度变化剧烈程度的指标,是灰度在平面空间上的梯度,在噪声点和图像边缘处的频率为高频。

l 在频率域中,将信号表示为一系列正弦信号或者复指数函数的叠加,正弦信号的频率、幅值和相位可以描述正弦信号中的所有信息,由此可以得到信号的幅度谱和相位谱。在图像领域就是将图像灰度作为正弦变量。

l 傅里叶变换全局性的,是一个积分求和的过程,对时间、地点位置无法进行准确定义,也就是说傅里叶变换得到的频谱图中的点无法与空间域中的某个空间位置对应,因此,从傅里叶变换图中并不能直接对应某个位置的特点。

l 傅里叶变换是一系列不同频率三角函数的和,每个频率分量的系数不同,这些系数代表了各频率成分的强弱或者所占比重,通过分析这些系数就可以分析图像的特性。








推荐阅读
  • 兆芯X86 CPU架构的演进与现状(国产CPU系列)
    本文详细介绍了兆芯X86 CPU架构的发展历程,从公司成立背景到关键技术授权,再到具体芯片架构的演进,全面解析了兆芯在国产CPU领域的贡献与挑战。 ... [详细]
  • 双指针法在链表问题中应用广泛,能够高效解决多种经典问题,如合并两个有序链表、合并多个有序链表、查找倒数第k个节点等。本文将详细介绍这些应用场景及其解决方案。 ... [详细]
  • 本文详细介绍了数据库并发控制的基本概念、重要性和具体实现方法。并发控制是确保多个事务在同时操作数据库时保持数据一致性的关键机制。文章涵盖了锁机制、多版本并发控制(MVCC)、乐观并发控制和悲观并发控制等内容。 ... [详细]
  • 事件是程序各部分之间的一种通信方式,也是异步编程的一种实现形式。本文将详细介绍EventTarget接口及其相关方法,以及如何使用监听函数处理事件。 ... [详细]
  • 本文详细介绍了Java代码分层的基本概念和常见分层模式,特别是MVC模式。同时探讨了不同项目需求下的分层策略,帮助读者更好地理解和应用Java分层思想。 ... [详细]
  • JUC(三):深入解析AQS
    本文详细介绍了Java并发工具包中的核心类AQS(AbstractQueuedSynchronizer),包括其基本概念、数据结构、源码分析及核心方法的实现。 ... [详细]
  • 探讨Redis的最佳应用场景
    本文将深入探讨Redis在不同场景下的最佳应用,包括其优势和适用范围。 ... [详细]
  • IOS Run loop详解
    为什么80%的码农都做不了架构师?转自http:blog.csdn.netztp800201articledetails9240913感谢作者分享Objecti ... [详细]
  • 2012-06-0821:26:42  用matlab来建模,仿真不同时刻ostask在队列中的装载情况。输入参数如下作为初学者,M文件写的有点长。能实现功能就算学以致用了。cle ... [详细]
  • 在工业过程控制系统中,由于被控对象的环境比较恶劣,干扰源比较多,仪器、仪表采集的信息常会受到干扰,所以在模拟系统中,为了消除干扰,常采用RC滤波电路,而在由工业控制计算机组成的自动 ... [详细]
  • 从0到1搭建大数据平台
    从0到1搭建大数据平台 ... [详细]
  • Java高并发与多线程(二):线程的实现方式详解
    本文将深入探讨Java中线程的三种主要实现方式,包括继承Thread类、实现Runnable接口和实现Callable接口,并分析它们之间的异同及其应用场景。 ... [详细]
  • 本文总结了一些开发中常见的问题及其解决方案,包括特性过滤器的使用、NuGet程序集版本冲突、线程存储、溢出检查、ThreadPool的最大线程数设置、Redis使用中的问题以及Task.Result和Task.GetAwaiter().GetResult()的区别。 ... [详细]
  • 在多线程环境中,IpcChannel的性能表现并未如预期般优于Tcp和Http通道。实际测试结果显示,在IIS6中通过Remoting创建的Ipc通道,其速度比Tcp通道慢了约20倍。本文详细分析了这一现象的原因,并提出了针对性的优化建议,以提升IpcChannel在高并发场景下的性能表现。 ... [详细]
  • 本文是Java并发编程系列的开篇之作,将详细解析Java 1.5及以上版本中提供的并发工具。文章假设读者已经具备同步和易失性关键字的基本知识,重点介绍信号量机制的内部工作原理及其在实际开发中的应用。 ... [详细]
author-avatar
当个谎言家很不错非
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有