2018-08-22 15:49:09 Replus_ 阅读数 8325
  • 携手STM32CubeMX玩转STM32

    本课程教大家如何利用STM32CubeMX玩转STM32(STM32CubeMX支持的所有型号MCU都适用于本课程)。课程内容分为基础内容和扩展内容,例如:讲解串口时会扩展开讲Xmodem通信协议,讲解ADC/DAC时会扩展讲傅里叶计算,讲解完FLASH操作会扩展将bootloader的编写,讲解完M3的bootloader编写会扩展讲解M0的bootloader...... 内容绝对实在,对于学习以及工作都会有很大的帮助。最终的目的就是让大家学会快速开发STM32并收获与STM32有关的实用技术知识。

    781 人正在学习 去看看 李凯龙

声明:       

       这篇文章的主要目的是通过建立一维傅里叶变换与图像傅里叶变换中相关概念的对应关系来帮助读者理解图像处理中的离散傅里叶变换,因此,理解图像中离散傅里叶变换的前提条件是读者需要了解一维傅里叶变换的基本知识,详情可参考:https://zhuanlan.zhihu.com/p/19763358


基本数学概念的对应关系:

       一维傅里叶变换的作用对象是信号,信号是一维连续的,其数学表现形式如图1所示,该图反应的是随着时间不断推移,信号强度的变换情况,可称为时域:

图1

       而图像处理中的傅里叶变换的作用对象是二维矩阵。二维矩阵的数学表现形式如下图所示,反应了随着位置的不断改变,灰度值大小的变化情况。我们在此将其称为“距离-灰度变化图”:

图2

       从正面看去,由x轴与灰度值轴构成的切面图如图3所示:

图3

       图3与图1的本质是类似的,都是一个自变量一个因变量。因此可以构成对应关系:时间<->距离、信号强度<->灰度值。

傅里叶变换结果的对应关系:

       一维傅里叶变换的原理可以通俗的理解为:将一个复杂无规律的信号拆分成多个简单有规律的子信号来表示(如果对泰勒展开有深刻的理解的话,可以将傅里叶变换理解为将任意一个函数分解为任意个多项式的组合)。如图4所示。

图4

       为了定量表示这个结果,我们用下图进行表达。其中,横轴为频率大小,纵轴为振幅(即信号的最高强度),该图可称为频谱

图5

       通过观察频谱,我们可以发现,频谱中的每个点在时域中都对应一个函数(这个特点很重要,说明了频谱和时域的对应关系是点与线)。

       因此,通过类比,可将图像处理中傅里叶变换理解为:将一个复杂无规律的图像拆分成多个简单有规律的子图像来表示(此处画图太麻烦,请读者自行发挥想象力对图4中的众多子信号,想象成不断起伏的平面)。

       那要如何定量表达众多分解后的子图像呢?

       我们先来看一下图像傅里叶变换后的表现形式,即图像的“频谱”。

       现在,我们就通过类比,来理解这上幅图中的各个方向的自变量到底对应信号频谱中的哪个变量。

       在信号的频谱中,频率的定义为:单位时间内完成周期性变化的次数。而在上文“基本数学概念的对应关系”中,我们已经将时间和距离对应起来了。那么此处只需要将频率定义中的“时间”换成“距离”即可。最终得到用于表达图像傅里叶变换结果的“频谱”中频率的定义:单位距离内完成周期性变化的次数。由于图像中表达距离的单位是像素大小,所以对这个定义进一步可理解为:N个像素内灰度值完成周期性变化的次数。因此我们就成功的将图像“频谱”和信号“频谱”中的自变量联立起来了。在信号频谱中的频率是x(横)轴,而在图像的频谱中频率是(xy轴构成的)平面。距离原点越远,则说明频率越大。因此,窗口边缘处即为高频区域,原点周边即为低频区域。

注意:上文提到了对于信号来说,频谱中的一个点对应子信号时域中的一条线。通过类比,我们可以得出结论:图像频谱中的一个点对应子图像的一整张距离-灰度变化图。(而图像傅里叶变换的数学公式也反应了这个特点)

       同样的,信号频谱中的y轴反应子信号,信号强度的变化范围,而图像频谱中的z轴反应子图像的灰度值的变化范围。频谱窗口中对应的点越亮,则说明该点对应频率的变化范围越大。

总结与举例:

       综上,可对图像频谱进行解读:

       距离原点越远=频率越高=原图中灰度值的变化越频繁。

       灰度值越大=幅值越大=原图中灰度值变化的范围越大。

       因此,低通滤波能保留图像的大致轮廓信息是因为,一张图像所记录到的主要信息(由于受到关照等必然因素的影响)在图像上灰度值的变化是缓慢的,因此主要信息集中在低频区域。而噪音等偶然因素是突然附加到图像上使得灰度值快速变化,而且密密麻麻,这导致N个像元内,灰度值的变化不仅频繁,而且变化的范围还很大。因此,噪音就位于图像频谱的高频区域,表现为高灰度值。

 

 

2019-07-06 10:42:52 qq_33208851 阅读数 1835
  • 携手STM32CubeMX玩转STM32

    本课程教大家如何利用STM32CubeMX玩转STM32(STM32CubeMX支持的所有型号MCU都适用于本课程)。课程内容分为基础内容和扩展内容,例如:讲解串口时会扩展开讲Xmodem通信协议,讲解ADC/DAC时会扩展讲傅里叶计算,讲解完FLASH操作会扩展将bootloader的编写,讲解完M3的bootloader编写会扩展讲解M0的bootloader...... 内容绝对实在,对于学习以及工作都会有很大的帮助。最终的目的就是让大家学会快速开发STM32并收获与STM32有关的实用技术知识。

    781 人正在学习 去看看 李凯龙

图像处理系列笔记: https://blog.csdn.net/qq_33208851/article/details/95335809


傅里叶变换是一种函数在空间域和频率域的变换,从空间域到频率域的变换是傅里叶变换,而从频率域到空间域是傅里叶的反变换
时域与频域

  • 频域(frequency domain)
    是指在对函数或信号进行分析时,分析其和频率有关部份,而不是和时间有关的部份,和时域一词相对。
  • 时域
    是描述数学函数或物理信号对时间的关系。例如一个信号的时域波形可以表达信号随着时间的变化。若考虑离散时间,时域中的函数或信号,在各个离散时间点的数值均为已知。若考虑连续时间,则函数或信号在任意时间的数值均为已知。在研究时域的信号时,常会用示波器将信号转换为其时域的波形。
  • 两者相互间的变换
    时域(信号对时间的函数)和频域(信号对频率的函数)的变换在数学上是通过积分变换实现。对周期信号可以直接使用傅立叶变换,对非周期信号则要进行周期扩展,使用拉普拉斯变换。

信号在频率域的表现
在频域中,频率越大说明原始信号 变化速度越快;频率越小说明原始信号越平缓。当频率为0时,表示直流信号,没有变化。因此,频率的 大小反应了信号的变化快慢。高频分量解释信号的突变部分,而低频分量决定信号的整体形象。
在 图像处理中,频域反应了图像在空域灰度变化剧烈程度,也就是图像灰度的变化速度,也就是图像的梯度大小。对图像而言,图像的边缘部分是突变部分,变化较 快,因此反应在频域上是高频分量;图像的噪声大部分情况下是高频部分;图像平缓变化部分则为低频分量。也就是说,傅立叶变换提供另外一个角度来观察图像, 可以将图像从灰度分布转化到频率分布上来观察图像的特征。书面一点说就是,傅里叶变换提供了一条从空域到频率自由转换的途径。对图像处理而言,以下概念非 常的重要:

  • 图像高频分量:图像突变部分;在某些情况下指图像边缘信息,某些情况 下指噪声,更多是两者的混合;
  • 低频分量:图像变化平缓的部分,也就是图像轮廓信息
  • 高通滤波器:让图像使低频分量抑制,高频分量通过
  • 低通滤波器:与高通相反,让图像使高频分量抑制,低频分量通过
  • 带通滤波器:使图像在某一部分 的频率信息通过,其他过低或过高都抑制
  • 还有个带阻滤波器,是带通的反。

1. 傅里叶变换及其反变换

1.0 什么是傅里叶变换

  1. 什么是傅里叶变换?
    也称作傅立叶变换,表示能将满足一定条件的某个函数表示成三角函数(正弦和/或余弦函数)或者它们的积分的线性组合。在不同的研究领域,傅立叶变换具有多种不同的变体形式,如连续傅立叶变换和离散傅立叶变换。傅里叶变换是一种分析信号的方法,它可分析信号的成分,也可用这些成分合成信号。许多波形可作为信号的成分,比如正弦波、方波、锯齿波等,傅里叶变换用正弦波作为信号的成分。
    傅里叶变换的实质是将一个信号分离为无穷多多正弦/复指数信号的加成,也就是说,把信号变成正弦信号相加的形式——既然是无穷多个信号相加,那对于非周期信号来说,每个信号的加权应该都是零——但有密度上的差别,你可以对比概率论中的概率密度来思考一下——落到每一个点的概率都是无限小,但这些无限小是有差别的所以,傅里叶变换之后,横坐标即为分离出的正弦信号的频率,纵坐标对应的是加权密度
  2. 傅里叶变换有什么用呢?
    举例说明:傅里叶变换可以将一个时域信号转换成在不同频率下对应的振幅及相位,其频谱就是时域信号在频域下的表现,而反傅里叶变换可以将频谱再转换回时域的信号。最简单最直接的应用就是时频域转换,比如在移动通信的LTE系统中,要把接收的信号从时域变成频域,就需要使用FFT(快速傅里叶变换)。又例如对一个采集到的声音做傅立叶变化就能分出好几个频率的信号。比如南非世界杯时,南非人吹的呜呜主拉的声音太吵了,那么对现场的音频做傅立叶变化(当然是对声音的数据做),会得到一个展开式,然后找出呜呜主拉的特征频率,去掉展开式中的那个频率的sin函数,再还原数据,就得到了没有呜呜主拉的嗡嗡声的现场声音。而对图片的数据做傅立叶,然后增大高频信号的系数就可以提高图像的对比度。同样,相机自动对焦就是通过找图像的高频分量最大的时候,就是对好了。

1.1 为什么要在频率域研究图像增强?

  • 可以利用频率成分和图像外表之间的对应关系。一些在空间域表述困难的增强任务,在频率域中变得非常普通
  • 滤波在频率域更为直观,它可以解释空间域滤波的某些性质
  • 可以在频率域指定滤波器,做反变换,然后在空间域使用结果滤波器作为空间域滤波器的指导
  • 一旦通过频率域试验选择了空间滤波,通常实施都在空间域进行

1.2 傅里叶变换及反转

1.2.1 一维连续傅里叶变换及反变换

单变量连续函数f(x)的傅里叶变换F(u)定义为:
在这里插入图片描述
其中,j = 根号(-1)=±i
给定F(u),通过傅里叶反变换可以得到f(x):
在这里插入图片描述

1.2.2 二维连续傅里叶变换及反变换

二维连续函数f(x,y)的傅里叶变换F(u,v)定义为:
在这里插入图片描述
如果f(x,y)是实函数,它的傅里叶变换是对称的,即

F(u,v) = F(− u,−v)
傅里叶变换的频率谱是对称的
|F(u,v)| =| F(− u,−v)|

给定F(u,v),通过傅里叶反变换可以得到 f(x,y):
在这里插入图片描述

1.2.3 一维离散傅里叶变换及反变换

单变量离散函数f(x)(x=0,1,2,…,M-1)的傅里叶变换F(u)定义为:
在这里插入图片描述
其中,u=0,1,2,…,M-1
从欧拉公式:
在这里插入图片描述
在这里插入图片描述
给定F(u),通过傅里叶反变换可以得到f(x):
在这里插入图片描述
其中,x=0,1,2,…,M-1

1.2.4 二维离散傅里叶变换及反变换

图像尺寸为M×N的函数f(x,y)的DFT为:
在这里插入图片描述
u=0,1,2,…,M-1, v=0,1,2,…,N-1
给出F(u,v),可通过反DFT得到f(x,y):
在这里插入图片描述
x=0,1,2,…,M-1, y=0,1,2,…,N-1
注:u和v是频率变量,x和y是空间域图像变量
F(0,0)表示:
在这里插入图片描述
这说明:假设f(x,y)是一幅图像,在原点的傅里叶变换等于图像的平均灰度级(M*N是总的像素点,f(x,y)是(x,y)点的灰度值,将所有的像素点的灰度值求和然后除以总的个数即为平均灰度值)

1.2.5 傅里叶变换的一维极坐标表示

在这里插入图片描述
幅度或频率谱为:
在这里插入图片描述
R(u)和I(u)分别是F(u)的实部和虚部
相角或相位谱为:
在这里插入图片描述
功率谱为:
在这里插入图片描述
f(x)的离散表示:
在这里插入图片描述
F(u)的离散表示:
在这里插入图片描述

1.2.6 傅里叶变换的二维极坐标表示

二维DFT的极坐标表示:
在这里插入图片描述
幅度或频率谱为:
在这里插入图片描述
R(u,v)和I(u,v)分别是F(u,v)的实部和虚部
相角或相位谱为:
在这里插入图片描述
功率谱为:
在这里插入图片描述
F(u,v)的原点变换:
在这里插入图片描述
用(-1)x+y乘以f(x,y),将F(u,v)原点变换到率坐标下的(M/2,N/2),它是M×N区域的中心
u=0,1,2,…,M-1, v=0,1,2,…,N-1

2. 傅里叶变换的性质

2.1 平移性

以⇔表示函数和其傅里叶变换的对应性
在这里插入图片描述
注:u和v是频率变量,x和y是空间域图像变量
公式(1)表明将f(x,y)与一个指数项相乘就相当于把其变换后的频域中心f(u,v) 移动到新的位置 f(u-uo,v-v0)
公式(2)表明将F(u,v)与一个指数项相乘就相当于把其变换后的空域中心f(x,y) 移动到新的位置 f(x-x0,y-y0)
公式(2)表明对f(x,y)的平移不影响其傅里叶变换的幅值

当u0=M/2且v0=N/2,
在这里插入图片描述
带入(1)和(2),得到
在这里插入图片描述

2.2 分配律

傅里叶变换对加法满足分配律,但对乘法则不满足:
在这里插入图片描述

2.3 尺度变换(缩放)

给定2个标量a和b,可以证明对傅里叶变换下列2个公式成立:
在这里插入图片描述

2.4 旋转性

引入极坐标 x = r cosθ, y = rsinθ,u =ω cosϕ,v =ωsinϕ
将f(x,y)和F(u,v)转换为 f (r,θ ) 和F(ω,ϕ)。将它们带入傅里叶变换对得到:
在这里插入图片描述
f(x,y)旋转角度θ 0,F(u,v)也将转过相同的角度
F(u,v)旋转角度θ 0,f(x,y)也将转过相同的角度

2.5 周期性和共轭对称性

在这里插入图片描述
尽管F(u,v)对无穷多个u和v的值重复出现,但只需根据在任一个周期里的N个值就可以从F(u,v)得到f(x,y)
只需一个周期里的变换就可将F(u,v)在频域里完全确定
同样的结论对f(x,y)在空域也成立

如果f(x,y)是实函数,则它的傅里叶变换具有共轭对称性
在这里插入图片描述
其中,F*(u,v)为F(u,v)的复共轭(当两个复数实部相等,虚部互为相反数时,这两个复数叫做互为共轭复数)

2.6 分离性

在这里插入图片描述
F(x,v)是沿着f(x,y)的一行所进行的傅里叶变换。当x=0,1,…,M-1,沿着f(x,y)的所有行计算傅里叶变换。

二维傅里叶变换的全过程
在这里插入图片描述
 先通过沿输入图像的每一行计算一维变换
 再沿中间结果的每一列计算一维变换
 可以改变上述顺序,即先列后行
 上述相似的过程也可以计算二维傅里叶反变换

2.7 平均值

由二维傅里叶变换的定义:
在这里插入图片描述
所以,
在这里插入图片描述
上式说明:如果f(x,y)是一幅图像,在原点的傅里叶变换即等于图像的平均灰度级

2.8 卷积理论

卷积是空间域过滤和频率域过滤之间的纽带
大小为M×N的两个函数f(x,y)和h(x,y)的离散卷积:
在这里插入图片描述
卷积定理:
在这里插入图片描述

2.9 相关性理论

相关的重要应用在于匹配:确定是否有感兴趣的物体区域
 f(x,y)是原始图像
 h(x,y)作为感兴趣的物体或区域(模板)
 如果匹配,两个函数的相关值会在h找到f中相应点的位置上达到最大
大小为M×N的两个函数f(x,y)和h(x,y)的相关性定义为:
在这里插入图片描述
f* 表示f的复共轭。对于实函数,f*=f
相关定理:
在这里插入图片描述
自相关理论
在这里插入图片描述

3. 快速傅里叶变换(FFT)

采用快速傅里叶变换(FFT)算法能使计算机计算离散傅里叶变换所需要的乘法次数大为减少,特别是被变换的抽样点数N越多,FFT算法计算量的节省就越显著。
函数或信号可以透过一对数学的运算子在时域及频域之间转换。和傅里叶变换作用一样。

3.1 为什么需要快速傅里叶变换?

人们想让计算机能处理信号 但由于信号都是连续的、无限的,计算机不能处理,于是就有了傅里叶级数、傅里叶变换,将信号由时域变到频域,把一个信号变为有很多个不同频率不同幅度的正弦信号组成,这样计算机就能处理了,但又由于傅里叶变换中要用到卷积计算,计算量很大,计算机也算不过来,于是就有了快速傅里叶变换,大大降低了运算量,使得让计算机处理信号成为可能。快速傅里叶变换是傅里叶变换的快速算法而已,主要是能减少运算量和存储开销,对于硬件实现特别有利。
在这里插入图片描述

  • 对u的M个值中的每一个都需进行M次复数乘法(将f(x)与 e− j2πux / M 相乘)和M-1次加法,即复数乘法和加法的次数都正比于M2
  • 快速傅里叶变换(FFT)则只需要Mlog2M次运算
  • FFT算法与原始变换算法的计算量之比是log2M/M,如M=1024≈103,则原始变换算法需要106次计算,而FFT需 要104次计算,FFT与原始变换算法之比是1:100
    只考虑一维的情况,根据傅里叶变换的分离性可知,二维傅里叶变换可由连续2次一维傅里叶变换得到

3.2 FFT算法基本思想

FFT算法基于一个叫做逐次加倍的方法。通过推导将原始傅里叶转换成两个递推公式:
在这里插入图片描述

3.3 FFT公式推导

在这里插入图片描述
假设M的形式是
M = 2n, n为正整数。因此,M可以表示为:M = 2K 。将M=2K带入上式:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
特性:

  • 一个M个点的变换,能够通过将原始表达式分成两个部分来计算
  • 通过计算两个(M/2)个点的变换。得Feven(u)和 Fodd(u)
  • 奇部与偶部之和得到F(u)的前(M/2)个值
  • 奇部与偶部之差得到F(u)的后(M/2)个值。且不需要额外的变换计算

3.4 归纳快速傅立叶变换的思想

(1)通过计算两个单点的DFT,来计算两个点的DFT, (2)通过计算两个双点的DFT,来计算四个点的DFT,…,以此类推
(3)对于任何N=2m的DFT的计算,通过计算两个N/2点的DFT,来计算N个点的DFT

3.5 FFT算法举例

设:有函数f(x),其N = 23 = 8,有:{f(0),f(1),f(2),f(3),f(4),f(5),f(6),f(7)}
计算:
{F(0),F(1),F(2),F(3),F(4),F(5),F(6),F(7)}
解法:
首先分成奇偶两组,有:
{ f(0), f(2), f(4), f(6) }
{ f(1), f(3), f(5), f(7) }
为了利用递推特性,再分成两组,有:
{ f(0), f(4) }, { f(2), f(6) }
{ f(1), f(5) }, { f(3), f(7) }
对输入数据的排序可根据一个简单的位对换规则进行:
如用x表示f(x)的1个自变量值,那么它排序后对应的值可通过把x表示成二进制数并对换各位得到。例如N=23,f(6)排序后为f(3),因为6=1102而0112 =3
把输入数据进行了重新排序,则输出结果是正确的次序。反之不把输入数据进行排序,则输出结果需要重新排序才能得到正确的次序
地址的排序:——按位倒序规则
例如:N = 23 = 8
在这里插入图片描述
2)计算顺序及地址增量:2n, n = 0,1,2…
在这里插入图片描述

4. 傅里叶变换的物理意义

  1. 图像的频率是表征图像中灰度变化剧烈程度的指标,是灰度在平面空间上的梯度(灰度变化得快频率就高,灰度变化得慢频率就低)。如:大面积的沙漠在图像中是一片灰度变化缓慢的区域,对应的频率值很低;而对于地表属性变换剧烈的边缘区域在图像中是一片灰度变化剧烈的区域,对应的频率值较高。傅立叶变换在实际中有非常明显的物理意义,设f是一个能量有限的模拟信号,则其傅立叶变换就表示f的谱。从纯粹的数学意义上看,傅立叶变换是将一个函数转换为一系列周期函数来处理的。从物理效果看,傅立叶变换是将图像从空间域转换到频率域,其逆变换是将图像从频率域转换到空间域。换句话说,傅立叶变换的物理意义是将图像的灰度分布函数变换为图像的频率分布函数,傅立叶逆变换是将图像的频率分布函数变换为灰度分布函数
  2. 傅立叶变换以前,图像(未压缩的位图)是由对在连续空间(现实空间)上的采样得到一系列点的集合,我们习惯用一个二维矩阵表示空间上各点,则图像可由z=f(x,y)来表示。由于空间是三维的,图像是二维的,因此空间中物体在另一个维度上的关系就由梯度来表示,这样我们可以通过观察图像得知物体在三维空间中的对应关系。为什么要提梯度?因为实际上对图像进行二维傅立叶变换得到频谱图,就是图像梯度的分布图,当然频谱图上的各点与图像上各点并不存在一一对应的关系,即使在不移频的情况下也是没有。傅立叶频谱图上我们看到的明暗不一的亮点,实际上图像上某一点与邻域点灰度值差异的强弱,即梯度的大小,也即该点的频率的大小(差异/梯度越大,频率越高,能量越低,在频谱图上就越 暗。差异/梯度越小,频率越低,能量越高,在频谱图上就越 亮。换句话说,频率谱上越亮能量越高,频率越低,图像差异越小/平缓)。一般来讲,梯度大则该点的亮度强,否则该点亮度弱频谱图,也叫功率图
    在这里插入图片描述
    在经过频谱中心化(用(-1)x+y乘以输入的图像函数在这里插入图片描述)后的频谱中,中间最亮的点是最低频率,属于直流分量(DC分量)(当频率为0时,表示直流信号,没有变化。在原点(u,v两个频率域变量均为零)的傅里叶变换即等于图像的平均灰度级,F(0,0)称做频 率谱的直流成分)。越往边外走,频率越高。所以,频谱图中的四个角和X,Y轴的尽头都是高频,如下图:
    在这里插入图片描述

我们首先就可以看出,图像的能量分布,如果频谱图中暗的点数更多,那么实际图像是比较柔和的(因为各点与邻域差异都不大,梯度相对较小),反之,如果频谱图中亮的点数多,那么实际图像一定是尖锐的,边界分明且边界两边像素差异较大的。对频谱移频到原点以后,可以看出图像的频率分布是以原点为圆心,对称分布的。将频谱移频到圆心除了可以清晰地看出图像频率分布以外,还有一个好处,它可以分离出有周期性规律的干扰信号,比如正弦干扰,一副带有正弦干扰,移频到原点的频谱图上可以看出除了中心以外还存在以某一点为中心,对称分布的亮点集合,这个集合就是干扰噪音产生的,这时可以很直观的通过在该位置放置带阻滤波器消除干扰

参考文章:https://blog.csdn.net/EbowTang/article/details/39004979
图像处理系列笔记: https://blog.csdn.net/qq_33208851/article/details/95335809

2015-06-25 07:00:19 Quason 阅读数 4407
  • 携手STM32CubeMX玩转STM32

    本课程教大家如何利用STM32CubeMX玩转STM32(STM32CubeMX支持的所有型号MCU都适用于本课程)。课程内容分为基础内容和扩展内容,例如:讲解串口时会扩展开讲Xmodem通信协议,讲解ADC/DAC时会扩展讲傅里叶计算,讲解完FLASH操作会扩展将bootloader的编写,讲解完M3的bootloader编写会扩展讲解M0的bootloader...... 内容绝对实在,对于学习以及工作都会有很大的帮助。最终的目的就是让大家学会快速开发STM32并收获与STM32有关的实用技术知识。

    781 人正在学习 去看看 李凯龙

傅里叶变换在图像处理领域的应用

1、什么是傅里叶变换

任何函数(信号)都能分解成若干个周期函数(周期信号)的叠加形式。在这里原始信号一般是时间域信号或空间域信号,而分解后的信号是频率域信号。下图展示了一维傅里叶变换的过程,其中f=0时的幅值表示信号的直流分量(DC),其余频率的幅值表示信号的交流分量(AC)

2、二维傅里叶变换

图像处理领域用到的傅里叶变换是二维的,其目的是得到空间图像的频率分布情况,之后在频率域对图像进行各种处理可以有目的地实现很多功能。如降噪是弱化频率过高的像素点,图像压缩是对图像高频部分的信息进行简化处理,其余的应用还有图像边缘增强纹理分析等。DC在二维图像信号中表示整幅图像的平均亮度。二维傅里叶图谱中越亮的点对应图像中对比度越大的点,原图频率越集中,对应的频谱图中亮点就越集中。

2018-04-13 20:55:26 u013921430 阅读数 22722
  • 携手STM32CubeMX玩转STM32

    本课程教大家如何利用STM32CubeMX玩转STM32(STM32CubeMX支持的所有型号MCU都适用于本课程)。课程内容分为基础内容和扩展内容,例如:讲解串口时会扩展开讲Xmodem通信协议,讲解ADC/DAC时会扩展讲傅里叶计算,讲解完FLASH操作会扩展将bootloader的编写,讲解完M3的bootloader编写会扩展讲解M0的bootloader...... 内容绝对实在,对于学习以及工作都会有很大的帮助。最终的目的就是让大家学会快速开发STM32并收获与STM32有关的实用技术知识。

    781 人正在学习 去看看 李凯龙

fishing-panhttps://blog.csdn.net/u013921430转载请注明出处】

前言

     前面转载过一篇关于傅里叶变换原理的文章《一篇难得的关于傅里叶分析的好文》。那篇文章写得非常棒,浅显易懂,可以说稍有基础的人都能看懂那篇博文。但是那篇博文更多的是从信号处理的角度以及原理的角度讲述傅里叶变换。那么在数字图像处理中,傅里叶变换之后得到的频谱图又有怎样的运用呢?这篇博客就是为了简单讲讲傅里叶变换在数字图像处理中的意义和基本应用,如有错误请各位指出。

数字图像的傅里叶变换

       通过前面的博文已经知道傅里叶变换是得到信号在频域的分布,数字图像也是一种信号,对它进行傅里叶变换得到的也是它的频谱数据。对于数字图像这种离散的信号,频率大小表示信号变化的剧烈程度或者说是信号变化的快慢。频率越大,变化越剧烈,频率越小,信号越平缓,对应到图像中,高频信号往往是图像中的边缘信号和噪声信号,而低频信号包含图像变化频繁的图像轮廓及背景等信号。

      需要说明的是,傅里叶变换得到的频谱图上的点与原图像上的点之间不存在一一对应的关系。

频域数据的应用

1.  图像去噪

      根据上面说到的关系,我们可以根据需要获得在频域对图像进行处理,比如在需要除去图像中的噪声时,我们可以设计一个低通滤波器,去掉图像中的高频噪声,但是往往也会抑制图像的边缘信号,这就是造成图像模糊的原因。以均值滤波为例,用均值模板与图像做卷积,大家都知道,在空间域做卷积,相当于在频域做乘积,而均值模板在频域是没有高频信号的,只有一个常量的分量,所以均值模板是对图像局部做低通滤波。除此之外,常见的高斯滤波也是一种低通滤波器,因为高斯函数经过傅里叶变换后,在频域的分布依然服从高斯分布,如下图所示。所以它对高频信号有很好的滤除效果。

                                                                                 高斯函数在频域的分布图像

2.  图像增强及锐化

      图像增强需要增强图像的细节,而图像的细节往往就是图像中高频的部分,所以增强图像中的高频信号能够达到图像增强的目的。  

      同样的图像锐化的目的是使模糊的图像变得更加清晰,其主要方式是增强图像的边缘部分,其实就是增强图像中灰度变化剧烈的部分,所以通过增强图像中的高频信号能够增强图像边缘,从而达到图像锐化的目的。从这里可以看出,可以通过提取图像中的高频信号来得到图像的边缘和纹理信息。

3. 其他基于频谱和相位谱的操作等

      下面我们通过代码来看一下是否真如我们想想的一样。

代码

clc;
clear all;
I=imread('lena.jpg');
I=rgb2gray(I);

%I=imnoise(I, 'gaussian', 0, 0.01);    %%给图像添加高斯噪声;
subplot(231),imshow(I);
title('原图像');

s=fftshift(fft2(I));                  %%低频部分移动到中心
% subplot(234),imshow(uint8(abs(s)),[]);
% title('图像傅里叶变换所得频谱');

subplot(234),imshow(log(abs(s)),[]);
title('图像傅里叶变换取对数所得频谱');



[a,b]=size(s);
a0=round(a/2);
b0=round(b/2);

%%%%%%%低通滤波
d=min(a0,b0)/12;    %滤波的范围,以频谱图上的欧氏距离为依据
Lp=zeros(a,b);

for i=1:a          %设置低通滤波
     for j=1:b
         distance=sqrt((i-a0)^2+(j-b0)^2);
         if distance<=d
             h=1;
         else
             h=0;
         end
         Lp(i,j)=h*s(i,j);
     end
end

subplot(235),imshow(log(abs(Lp)),[]);
title('低通滤波频谱');

LPJ=uint8(real(ifft2(ifftshift(Lp))));
subplot(232),imshow(LPJ);
title('低通滤波所得图像');

%%%%%%%高通滤波
d1=min(a0,b0)/12;    %高通滤波的范围,以频谱图上的欧氏距离为依据
Hp=zeros(a,b);

for i=1:a          %%设置高通滤波
     for j=1:b
         distance=sqrt((i-a0)^2+(j-b0)^2);
         if distance>d1
             h=1;
         else
             h=0;
         end
         Hp(i,j)=h*s(i,j);
     end
end

subplot(236),imshow(log(abs(Hp)),[]);
title('高通滤波频谱');

HPJ=uint8(real(ifft2(ifftshift(Hp))));
subplot(233),imshow(HPJ);
title('高通滤波所得图像');

new=Hp.*1.5+Lp.*1;
NewIm=uint8(real(ifft2(ifftshift(new))));
figure,imshow(NewIm);
title('增强高频信号所得图像');

运行结果

      如果在图像中加入噪声,结果会如何呢?

结果分析

       从上面的结果可以看出,低通滤波会让图像变得模糊,可以对图像进行模糊处理,滤除图像的噪声,高通滤波获得了图像的边缘和纹理信息。此外,通过增强图像的高频信号,可以增强图像的对比度,因为图像中的高频信号主要是出现在边缘及噪声这样的灰度出现跃变处的区域。

      从频谱图上可以看出,当将频谱移频到原点以后,图像中心比较亮。在频谱图中,一个点的亮暗主要与包含这个频率的数目有关,也就是说在空间域中包含这种频率的点越多,频谱图中对应的频率的位置越亮。而经过频移后,频率为0的部分,也就是傅里叶变换所得到的常量分量在图像中心,由内往外扩散,点所代表的频率越来越高。可以从上面的结果中看出,只取核心的小范围内的低频信号再将其转换回到时域空间,已经能够在一定程度是看到图像的基本轮廓信息,这说明了图像中的“能量”主要集中在低频部分。

      实际上,为了方便理解,可以把图像的二维傅里叶变换得到的频谱图看作图像的梯度分布图(两幅图像中的点并不是一一对应),频谱图中的某一个点所表征的是空间域中某一个点与周围点的灰度差异性,灰度差异越大,则频率越大。当然时域中灰度变化剧烈的区域也包含了低频信号,因为低频信号是构成图像信息的基础。

 

已完。。。 

 

 

 

2015-10-05 16:07:13 robin1987z 阅读数 6603
  • 携手STM32CubeMX玩转STM32

    本课程教大家如何利用STM32CubeMX玩转STM32(STM32CubeMX支持的所有型号MCU都适用于本课程)。课程内容分为基础内容和扩展内容,例如:讲解串口时会扩展开讲Xmodem通信协议,讲解ADC/DAC时会扩展讲傅里叶计算,讲解完FLASH操作会扩展将bootloader的编写,讲解完M3的bootloader编写会扩展讲解M0的bootloader...... 内容绝对实在,对于学习以及工作都会有很大的帮助。最终的目的就是让大家学会快速开发STM32并收获与STM32有关的实用技术知识。

    781 人正在学习 去看看 李凯龙

有点悲剧,在快编辑完了的时候不小心点到舍弃,结果一下午字白打了。


傅里叶变换被称为数学中的棱镜,可以将函数分解为频率不同的正弦函数和余弦函数的组合。而图像处理中的傅里叶变换一般专指二维离散傅里叶变换,它可以将图像从空间域变换到频域,拥有很多优良的特质,如线性、对称、平移、卷积等。在此,我们对于一维以及连续的傅里叶变换不做描述,只说二维离散傅里叶变换。


二维离散傅里叶变换

人们一般都在空间域来描述图像,即通过二维空间坐标上的灰度值来表征出图像的形状、纹理、尺寸等特征,这也是最为直观且被人所接受的图像表达方式。而傅里叶变换的出现给了图像分析一个全新的角度:频域。在二维图像角度,频率的高低表征的是原图灰度的变化剧烈程度,也就是空间域中所指的梯度。背景区域等灰度变化缓慢的区域,梯度较低,处于频域中的低频部分,边缘、噪声等灰度变化快的区域,梯度较高,处于频域中的高频部分。一般的图片低频的内容会占大多数部分。

二维离散傅里叶变换公式:


其中F(u,v)为傅里叶变换结果,u和v为频率分量,f(x,y)为原图,M和N为图像的宽度和高度。

特例:当u,v均为0时,F(0,0)的值为原图f(x,y)的均值,虚部为0,被称之为直流分量。

计算得到的结果为复数,分为实部和虚部,图像处理中一般求取其模(频率幅值),并反向投影回以u,v为坐标轴的二维空间进行分析。


|F(u,v)|  = sqrt(R(u,v)^2+I(u,v)^2)

其中R(u,v)和I(u,v)分别为实部和虚部。


由于求取的频率幅值跨幅巨大,并不适合直接反向投影回二维图像空间来观察,所以一般会将结果求取对数,将结果从线性尺度变换到对数尺度:


D(u,v) = log(1+|F(u,v)|)


再进行归一化后即可以灰度值的方式直观的看到幅值的高低变化,即图像的频谱图。

另外,基于傅里叶变换的对称性,为了便于观察频谱图,一般会将原点F(0,0)平移到图像中心,使得低频区域位于图像中部,高频区域位于图像外围。

实现方式有两种:

(1):将原图f(x,y)乘以(-1)^(x+y)后再做傅里叶变换

(2):直接做傅里叶变换,之后将频谱图以N/2,M/2为线划分成四个区域,位于对角线的两两区域对调位置,如图:

一张图像在变换到频域后的成分分布可以参考下图:


傅里叶变换在图像处理中的应用

个人能想到的利用场景有如下:


1.图像去噪

正如前文所述,大部分的噪声是位于图像的高频区域,所以,利用低通滤波器来过滤图像噪声是图像去噪的一个重要手段。另外,一些周期噪声反映到频谱上会呈现出孤立的亮点,利用傅里叶变换可以轻松的将这种噪声过滤掉,如下图所示:


2.简化卷积运算

利用傅里叶变换的卷积特性(即空间域中的卷积等于频域的点积,频域的卷积等于空间域的点积),可以有效的简化空间域中的卷积运算,如各类滤波器的卷积操作等,在变换到频域后采用与该滤波器等价的频域函数进行点积运算,再反傅里叶变换回空间域即完成了空间域中的卷积运算。


3.寻找直线轮廓

空间域中的直线在变换到频域后会呈现出一条与之垂直的高亮直线(有时也可能不那么明显),利用这个特性可以找到原图中疑似直线的轮廓及其角度(以前有做过一个项目就通过傅里叶变换来进行图像的倾斜矫正),效果图:

lena的帽檐在频谱图中对应了一条与之垂直的亮线。


4.图像压缩

如上文所述,图像的大部分信息集中在频域的低频部分,所以图像的压缩、提萃也是可以用到傅里叶变换的。


最后推荐个视频,可以帮助理解下傅里叶变换:

点击打开链接



傅里叶变换 傅里叶谱

博文 来自: wxcdzhangping
没有更多推荐了,返回首页