卷积与傅立叶变换

一、卷积

1、一维的卷积

连续:

在泛函分析中,卷积是通过两个函数f(x)f(x)g(x)g(x)生成第三个函数的一种算子,它代表的意义是:两个函数中的一个(我取g(x)g(x),可以任意取)函数,把g(x)g(x)经过翻转平移,然后与f(x)f(x)的相乘,得到的一个新的函数,对这个函数积分,也就是对这个新的函数求它所围成的曲边梯形的面积。
def:
f(t),g(t)f(t),g(t)RnRn两个可积函数,f(t)f(t)g(t)g(t)的卷积记为f(t)g(t)f(t)∗g(t),它是其中一个函数翻转并平移后与另一个函数乘积的积分,是一个自变量是平移量的函数。也就是:

f(t)g(t)=+f(τ)g(tτ)dτ=+f(tτ)g(τ)dτf(t)∗g(t)=∫−∞+∞f(τ)g(t−τ)dτ=∫−∞+∞f(t−τ)g(τ)dτ

注: RnRn是n维实数集,即 (x1,x2,...,xn)Rn(x1,x2,...,xn)∈Rn,每个元素是n维向量,向量中的每个分量是实数。暂时可以理解为实数。
如果函数不是定义在RnRn上,可以把函数定义域外的值都规定成了,这样就变成了定义在RnRn的函数了。实数域同理


图解卷积
(图片来自wiki)
1. 现在有两个关于自变量tt的函数f(t),g(t),图像为上图的第一行。
2. 把g(t)g(t)的自变量换成ττ,让其翻转称为g(τ)g(−τ),再向左移动tt个单位,得到g(tτ),图像如图片的第二行。
3. 让g(tτ)g(t−τ)−∞移动到++∞,移动的过程中把两个函数的相乘并积分。
4. 第三行的图像是把g(tτ)g(t−τ)f(τ)f(τ)放在一个坐标系中,其实tt不是常数,它是一个时间变量,当时间变量(简称为时移)取不同值时(以下把取不同值的过程简称“滑动”),当t取是,可以看成g(tτ)g(t−τ)−∞大处的图像,由于两个函数中一个函数在与另一个函数有交集的地方的值为0,所以两个函数相乘,积还是0,对0的积分还是0。
5. 函数g(tτ)g(t−τ)继续滑动,当两个函数的乘积不是0是,此时(tτ)(t−τ)为0,t为0,即第三行图像中红色函数的右边界与蓝色函数的左边界相遇。还是对两个函数的乘积对ττ取积分,这是得到的值是第三个函数也就是卷积在t=0是的结果,注意此时得到的是一个值,因为t是定值,ττ被积分掉。然后接着滑动,还是两个函数相乘取积分。直到时移变量t在++∞处(滑动到在++∞)。
6. 让t从−∞滑动到++∞。两个函数有交会时(即两个函数的乘积不为0),计算交会范围中两个函数的乘积的积分值。换句话说,我们在计算一个滑动的加权平均值、g(τ)g(−τ)是加权函数,来对f(τ)f(τ)取加权平均值。


卷积的性质:
交换律:
f(gh)=(fg)hf∗(g∗h)=(f∗g)∗h
结合律:
f(gh)=f(gh)f∗(g∗h)=f∗(g∗h)
分配律:
f(g+h)=(fg)+(fh)f∗(g+h)=(f∗g)+(f∗h)
数乘结合律
a(fg)=(af)g=f(ag)a(f∗g)=(af)∗g=f∗(ag)
其中aa为任意实数
微分定理
D(fg)=Dfg=fDg
其中DfDf表示ff的微分,如果在离散域中则是指差分算子,包括前向差分与后向差分两种:

  • 前向差分D+f(n)=f(n+1)f(n)

    • 后向差分Df(n)=f(n)f(n1)D−f(n)=f(n)−f(n−1)

    • 离散:

      对于定义在整数ZZ上的函数f,gf,g,卷积定义为

      f(n)g(n)=m=+f(m)g(nm)=m=+f(nm)g(m)f(n)∗g(n)=∑m=−∞+∞f(m)g(n−m)=∑m=−∞+∞f(n−m)g(m)

      同理,把非整数的值规定成0,定义域就在整数上了。

      1. g(n)g(n)的定义域为有限长度MM上是,就会变成有限和。

        f(n)g(n)=m=MMf(nm)g(m)

      2. f(n)f(n)的定义域为有限长度m{M,M+1,,M1,M}m∈{−M,−M+1,…,M−1,M}上是,就会变成有限和。

        f(n)g(n)=m=MMf(m)g(nm)f(n)∗g(n)=∑m=−MMf(m)g(n−m)

      把加权函数的定义域做加法(积分域)。
      还是把其中一个翻转平移,
      离散卷积.png
      填充是为了解决g(m)g(−m)没有覆盖到的地方,当然填充的方法不唯一,可以具体填充什么以情况而定,填充的大小是g(m)的长度减1
      注意结果中原来的1不存在,这里是为了辨识位置加上的,可以当作是直接复制了填充后的f(m)f(m)的空间。
      相关的区别:相关是不把g(m)翻转,直接平移,对应位置相乘,再相加。结果放在平移次数的nn上面,此时n的位置正对应着卷积核的中间位置。这就是卷积核为什么习惯是奇数,奇数的话容易找到中间位置。

      2、二维卷积

      连续的二维卷积可以由一维卷积扩展得到,同样是首先是把两个函数中的一个经过翻转,然后平移,积分

      f(t1,t2)g(t1,t2)=f(τ1,τ2)g(t1τ1,t2τ2)dτ1dτ2f(t1,t2)∗g(t1,t2)=∫∫f(τ1,τ2)g(t1−τ1,t2−τ2)dτ1dτ2

      同理可以定义多元函数上的卷积
      f(t1,t2,,tn)g(t1,t2,,tn)=f(τ1,τ2,,τn)g(t1τ1,t2τ2,,tnτn)dτ1dτ2dτnf(t1,t2,…,tn)∗g(t1,t2,…,tn)=∫∫…∫f(τ1,τ2,…,τn)g(t1−τ1,t2−τ2,…,tn−τn)dτ1dτ2…dτn

      离散的二维卷积
      f(m,n)g(m,n)=s=+t=+f(s,t)g(ms,nt)f(m,n)∗g(m,n)=∑s=−∞+∞∑t=−∞+∞f(s,t)g(m−s,n−t)


      图像处理中常用的是二维的离散卷积,
      g(m,n)g(m,n)的定义域是m(a,a),n(b,b)m∈(−a,a),n∈(−b,b)的整数

      f(m,n)g(m,n)=s=aat=bbf(s,t)g(ms,nt)f(m,n)∗g(m,n)=∑s=−aa∑t=−bbf(s,t)g(m−s,n−t)

      同样可以把 g(s,t)g(−s,−t)看成是加权函数,来对 f(s,t)f(s,t)取加权平均值。


      二、循环卷积

      两个函数卷积是由他们的周期延伸所来定义的。
      周期延伸:意思是把原本的函数平移 某个周期的TT的整数倍全部加起来,所产生的新函数x(t)的周期延伸可以写成

      xT(t)=k=+x(tkT)=k=+x(t+kT)xT(t)=∑k=−∞+∞x(t−kT)=∑k=−∞+∞x(t+kT)


      两个函数f(t)f(t)g(t)g(t)循环卷积:
      gTgT是周期函数,周期为TT,他们的卷积存在:

      f(t)gT(t)=t0t0+T[k=+f(τ+kT)]gT(tτ)dτ

      得到的新函数也是周期为T的并且与

      f(t)gT(t)=+f(τ)gT(tτ)dτ=+f(tτ)gT(τ)dτf(t)∗gT(t)=∫−∞+∞f(τ)gT(t−τ)dτ=∫−∞+∞f(t−τ)gT(τ)dτ

      相等。


      当然,也有离散循环卷积定理:
      gNgN是周期函数,周期为NN。f与gN卷积存在且与下式相等:

      f(n)gN(n)=m=0N1(k=+f(m+kN))gN(nm)f(n)∗gN(n)=∑m=0N−1(∑k=−∞+∞f(m+kN))gN(n−m)

      k是函数f(n)的周期延伸。
      gNgN经过周期延伸成为 gg,那么f gNgN卷积等于 ffg的卷积。
      ffg的定义域在 [0,N1][0,N−1]上,上述形式可以写成
      f(n)gN(n)=m=0N1f(m)gN(nm)=m=0nf(m)gN(nm)+m=n+1N1f(m)gN(N+nm)f(n)∗gN(n)=∑m=0N−1f(m)gN(n−m)=∑m=0nf(m)gN(n−m)+∑m=n+1N−1f(m)gN(N+n−m)

      在FFT算法中循环卷积占重要位置。


      卷积的计算方法有三种,分别为
      1. 直接计算
      2. 快速傅立叶变换
      3. 分段卷积
      先放到这有个大致的认识,傅立叶变换后再分析。因为2和3都用到了快速傅立叶变换


      卷积定理:
      为什么要说卷积定理呢,卷积定理把频域和空间域连接了起来。这样我们在空间域上难以分析的问题或许转换到频率域就容易分析。
      ps:我们把x所在的域称为空间域。
      卷积定理:
      空间域的两个函数的卷积的傅立叶变换等于这两的函数的傅立叶变换的乘积。

      F[f(x)h(x)]=H(u)F(u)F[f(x)∗h(x)]=H(u)F(u)

      频率域两个函数的卷积等于这两个函数的傅立叶逆变换得到的空间域的两个函数的乘积。
      F1[H(u)F(u)]=f(x)h(x)F−1[H(u)∗F(u)]=f(x)h(x)

      证明方法是对卷积函数进行傅立叶变换,或逆变换。

      三、傅立叶变换

      傅立叶变换(Fourier Transform)是一种线性的积分变换,作用是把信号在时域(或空域)和频域之间变换。它由法国的约瑟夫·傅立叶系统的提出。所以,为了以它的名字命名以示纪念。傅立叶变换源自傅立叶级数,在傅立叶级数中复杂的周期函数可以用一系列简单的正弦、余弦波之和表示。傅立叶变换是对傅立叶级数的扩展,他表示的函数的周期趋近与无穷。


      欧拉公式:
      欧拉公式是把三角函数复数指数函数相关联。
      对于任意实数xx,都存在

      eix=cosx+isinx
      其中,ee是自然对数的底数,i是虚数单位,cos,sincos,sin则是余弦、正弦对应的三角函数,参数xx则是以弧度为单位。该公式在x为复数是仍然成立。
      欧拉恒等式: eiπ+1=0eiπ+1=0


      1、傅立叶级数

      具有周期TT的连续变量t的周期函数f(t)f(t)可以被描述为乘以适当系统的正弦和余弦和,这个和就是傅立叶级数,可以用下式表示:

      f(t)=n=+cnei2πnTtf(t)=∑n=−∞+∞cnei2πnTt

      其中
      cn=1TT2T2f(t)ei2πnTtdt,n=0,±1,±2,cn=1T∫−T2T2f(t)e−i2πnTtdt,n=0,±1,±2,…

      是系数。


      2、一维连续傅立叶变换

      def:
      傅立叶变换将可积函数f:RCf:R→C表示成复指数函数的积分或级数形式。

      f^(ξ)=+f(x)e2πixξdx,ξf^(ξ)=∫−∞+∞f(x)e−2πixξdx,ξ为任意实数

      当自变量 xx表示时间(以秒为单位),变换变量ξ表示频率(以赫兹为单位),由于自变量x被积分过了,所以上式可以看成是关于 ξξ的指数函数,而 ξξ表示频率,所以这时就是关于频率的函数了。
      在适当条件下, f^f^可由 傅立叶逆变换由下式确定 ff:
      f(x)=+f^(ξ)e2πiξxdξ,x

      同理,由于 ξξ被积分积过,所以该式就成了只剩自变量x的函数。
      傅立叶变换经常成对出现。
      为了方便记忆,我们把 f^(ξ)f^(ξ)记作 F(u)F(u)所以上面傅立叶变换对可以写成下面的形式
      F(u)=F[f(x)]=+f(x)e2πixudx,uF(u)=F[f(x)]=∫−∞+∞f(x)e−2πixudx,u为任意实数

      f(x)=F1[F(u)]=+F(u)e2πiuxdu,xf(x)=F−1[F(u)]=∫−∞+∞F(u)e2πiuxdu,x为任意实数

      用欧拉公式表示正变换:
      F(u)=+f(x)[cos(2πxu)isin(2πxu)]dxF(u)=∫−∞+∞f(x)[cos(2πxu)−isin(2πxu)]dx

      这样的话,或许更好理解一个周期可以有正弦和余弦和表示。由上式可以看出,如果 f(x)f(x)是实数,那么其变换通常是复数。注意, 傅立叶变换域是频率域,因为xx被积分掉,左边变量只剩下u。频率域的单位是独立于输入变量的每单位周期的。例如如果xx表示单位为秒的时间,则u的单位为周/秒(赫兹)。如果xx表示的是以米为单位的距离,则u的单位是为周/米。


      3、离散傅立叶变换

      3、1冲激串的傅立叶变换

      在正式进入离散傅立叶变换的推导以前,我们还需要做一个准备工作,那就是冲激和冲激串的傅立叶变换:
      先说一个点的冲激,我们假设在t=0t=0处有一个冲激可以用公式表示为

      δ(t)={1,t=00,t0δ(t)={1,t=00,t≠0

      它的傅立叶变换是
      F(u)=δ(t)ei2πutdt=ei2πu0δ(t)ei2πutdt=ei2πu0=1F(u)=∫−∞∞δ(t)e−i2πutdt=∫−∞∞e−i2πu0δ(t)e−i2πutdt=e−i2πu0=1

      在说不是在原点的一个点的冲激,我们假设在 t=t0t=t0处有一个冲激可以用公式表示为
      δ(tt0)={1,tt0=00,tt00δ(t−t0)={1,t−t0=00,t−t0≠0

      它的傅立叶变换是
      F(u)=δ(tt0)ei2πutdt=ei2πutδ(tt0)ei2πutdt=ei2πut0=cos(2πut0)isin(2πut0)F(u)=∫−∞∞δ(t−t0)e−i2πutdt=∫−∞∞e−i2πutδ(t−t0)e−i2πutdt=e−i2πut0=cos(2πut0)−isin(2πut0)

      其中用到 冲激的取样特性 f(t)δ(tt0)dt=f(t0)∫−∞∞f(t)δ(t−t0)dt=f(t0)
      由于该冲激只在 t=t0t=t0有值,且为1,所以对其积分就是 ei2πut0e−i2πut0,后一步是用欧拉公式得到。 ei2πut0=cos(2πut0)isin(2πut0)e−i2πut0=cos(2πut0)−isin(2πut0)是以复平面原点为中心的单位圆的等效表示。


      冲激串的傅立叶变换:
      冲激串的傅立叶变换并不能用像我们得到单个的冲激变换那么简单。原因是因为冲激串函数不满足傅立叶变换的条件(狄利赫利条件-绝对可积)。周期信号不满足绝对可积条件式,按理是不存在傅立叶变换的。但若允许傅立叶变换式中含有冲激函数,则也具有傅立叶变换。得到冲激串函数的傅立叶变换可以直接从周期信号的傅立叶级数得到它的傅立叶变换。它是一个很重要的表示方法。冲激串函数是周期的,它的傅立叶变换也是由一串在频域上的冲激函数组成的。
      首先,冲激串的傅立叶级数为

      sΔT(t)=n=cnei2πnΔTtsΔT(t)=∑n=−∞∞cnei2πnΔTt

      其中
      cn=1ΔTΔT2ΔT2sΔT(t)ei2πnΔTtdtcn=1ΔT∫−ΔT2ΔT2sΔT(t)e−i2πnΔTtdt

      因为区间 [ΔT2,ΔT2][−ΔT2,ΔT2]的积分仅包含位于原点的冲激 sΔT(t)sΔT(t)所以
      cn=1ΔTΔT2ΔT2sΔT(t)ei2πnΔTtdt=1ΔTe0=1ΔTcn=1ΔT∫−ΔT2ΔT2sΔT(t)e−i2πnΔTtdt=1ΔTe0=1ΔT

      所以傅立叶级数可展开为
      sΔT(t)=1ΔTn=ei2πnΔTtsΔT(t)=1ΔT∑n=−∞∞ei2πnΔTt

      因为求和的过程是线性过程,得到和的傅立叶变换与各个分量的傅立叶变换之和是相同的,所以对上式的每个分量求傅立叶变换
      F{ei2πnΔTt}=δ(unΔT)F{ei2πnΔTt}=δ(u−nΔT)

      然后把每个分量的傅立叶变换相加得到周期冲激串 sΔT(t)sΔT(t)的傅立叶变换 S(u)S(u)
      S(u)=F{sΔT(t)}=F{1ΔTn=ei2πnΔTt}=1ΔTF{n=ei2πnΔTt}=1ΔTn=δ(unΔT)S(u)=F{sΔT(t)}=F{1ΔT∑n=−∞∞ei2πnΔTt}=1ΔTF{∑n=−∞∞ei2πnΔTt}=1ΔT∑n=−∞∞δ(u−nΔT)

      所以,冲激串的傅立叶变换为
      S(u)=1ΔTn=δ(unΔT)S(u)=1ΔT∑n=−∞∞δ(u−nΔT)

      这里还可以证明周期为 ΔTΔT的冲激串的傅立叶变换还是冲激串,并且周期为 1ΔT1ΔT


      3.2、取样

      为了避免周期混淆,需要

      1ΔT>2umax1ΔT>2umax

      它的含义是如果超过函数最高频率的两倍的取样频率来获得样本,连续的带限函数可以完全的从他的样本集来恢复。这就是 取样定理
      离散傅立叶变换之前需要对连续函数取样,取样是用一个 ΔTΔT单位间隔的冲激串作为取样函数去乘以 f(t)f(t)。利用周期延展性来扩展冲激函数,得到的离散的函数是:
      fδ(t)=f(t)sΔT(t)=n=+f(t)δ(tnΔT)fδ(t)=f(t)sΔT(t)=∑n=−∞+∞f(t)δ(t−nΔT)

      其中 fδ(t)fδ(t)表示取样后的函数。这一和式的每一个分量都是由在该冲激位置处 f(t)f(t)的值加权后的冲激。 每个取样值都是由加权后的冲激“强度”给出。我们可以通过积分得到它。也就是, 序列中的任意取样值
      fn=f(t)δ(tnΔT)dt=f(nΔT)fn=∫−∞∞f(t)δ(t−nΔT)dt=f(nΔT)


      3.3、推导

      首先对fδ(t)fδ(t)做傅立叶变换。即

      Fδ(u)=n=+f(t)δ(tnΔT)ei2πutdt=n=+f(t)δ(tnΔT)ei2πutdt=n=+f(nΔT)ei2πunΔTFδ(u)=∫−∞∞∑n=−∞+∞f(t)δ(t−nΔT)e−i2πutdt=∑n=−∞+∞∫−∞∞f(t)δ(t−nΔT)e−i2πutdt=∑n=−∞+∞f(nΔT)e−i2πunΔT

      因为求和的过程是线性过程,得到和的傅立叶变换与各个分量的傅立叶变换之和是相同的。这时 f(nΔT)f(nΔT)是离散函数,但是其傅立叶变换 Fδ(u)Fδ(u)是周期为 1ΔT1ΔT的无限周期连续函数。因此我们要表征 Fδ(u)Fδ(u)的一个周期,而对一个周期取样是DFT的基础。
      假设我们想要周期在 01ΔT0∼1ΔT之间取得 MM个等间距的样本。可以通过在如下频率处取到
      u=mMΔT,m=0,1,2,,M1
      设这个样本为 f(x)f(x)。我们把 uu代入上式,对f(x)做傅立叶变换得到的结果是
      F(u)=x=0M1f(x)ei2πuxM,u=0,1,2,,M1F(u)=∑x=0M−1f(x)e−i2πuxM,u=0,1,2,…,M−1

      他的反变换是:
      f(x)=1Mu=0M1F(u)ei2πuxM,x=0,1,2,,M1f(x)=1M∑u=0M−1F(u)ei2πuxM,x=0,1,2,…,M−1

      注意这两个公式不明确的依赖于取样间隔 ΔTΔT,也不依赖于到
      u=mMΔT,m=0,1,2,,M1u=mMΔT,m=0,1,2,…,M−1
      频率间隔。因此 离散傅立叶变换适用于任何均匀取样的有限离散集。


      3.4、取样和频率间隔间的关系

      如果f(x)f(x)由函数f(t)f(t)ΔTΔT为单位间隔采样后的MM个样本组成,则这个样本的记录的持续时间是T=MΔT,离散域的频率间隔ΔuΔuΔu=1MΔT=1TΔu=1MΔT=1T
      有DFT的M个分量跨越的整个频率范围是Ω=MΔu=1ΔT=Ω=MΔu=1ΔT=


      4、二维连续傅立叶变换

      直接上公式把,这个没什么好说的。
      正变换

      F(u,v)=f(t,z)e2iπ(ut+vz)dtdzF(u,v)=∫−∞∞∫−∞∞f(t,z)e−2iπ(ut+vz)dtdz

      反变换
      f(t,z)=F(u,v)e2iπ(ut+vz)dudvf(t,z)=∫−∞∞∫−∞∞F(u,v)e−2iπ(ut+vz)dudv

      5、二维离散傅立叶变换及其性质

      5.1、二维冲激及其取样特性

      连续变量t,z的冲激

      δ(t,z)={,0,t=z=0elseδ(t,z)={∞,t=z=00,else

      δ(t,z)dtdz=1∫−∞∞∫−∞∞δ(t,z)dtdz=1

      取样特性
      f(t,z)δ(t,z)dtdz=f(0,0)∫−∞∞∫−∞∞f(t,z)δ(t,z)dtdz=f(0,0)

      更一般
      f(t,z)δ(tt0,zz0)dtdz=f(t0,z0)∫−∞∞∫−∞∞f(t,z)δ(t−t0,z−z0)dtdz=f(t0,z0)

      离散变量x,y,二维离散冲激
      δ(x,y)={1,0,x=y=0elseδ(x,y)={1,x=y=00,else

      取样特性:
      x=y=f(x,y)δ(x,y)dxdy=f(0,0)∑x=−∞∞∑y=−∞∞f(x,y)δ(x,y)dxdy=f(0,0)

      更一般:
      x=y=f(x,y)δ(xx0,yy0)dxdy=f(x0,y0)∑x=−∞∞∑y=−∞∞f(x,y)δ(x−x0,y−y0)dxdy=f(x0,y0)

      5.2、二维离散傅立叶变换及其反变换

      它的推导方式如同一维中的推导方式。我们这里直接给出。因为更想把时间集中在其性质上。
      正变换:

      F(u,v)=x=0M1y=0N1f(x,y)e2iπ(uxM+uyN)F(u,v)=∑x=0M−1∑y=0N−1f(x,y)e−2iπ(uxM+uyN)

      反变换:
      f(x,y)=1MNu=0M1v=0N1F(u,v)e2iπ(uxM+uyN)f(x,y)=1MN∑u=0M−1∑v=0N−1F(u,v)e2iπ(uxM+uyN)

      5.3、二维离散傅立叶变换的一些性质

      5.3.1、空间和频率间隔的关系

      假定对连续函数f(t,z)f(t,z)取样生成了一幅数字图像f(x,y)f(x,y),它由分别在t和z方向所取得MxN个样点组成。令ΔTΔTΔZΔZ表示样本间的间隔。那么相应离散频域变量间的间隔是δu=1MΔTδu=1MΔTδv=1NΔZδv=1NΔZ给出。
      频域样本间的间隔与空间样本间的间隔和样本数成反比

      5.3.2、平移和旋转

      平移:

      f(x,y)ei2π(u0xM+v0yN)F(uu0,vv0)f(x,y)ei2π(u0xM+v0yN)⟺F(u−u0,v−v0)


      f(xx0,yy0)F(u,v)ei2π(u0xM+v0yN)f(x−x0,y−y0)⟺F(u,v)e−i2π(u0xM+v0yN)

      旋转:
      使用极坐标表示:
      x=rcosθ,y=rsinθ,u=ωcosϕ,v=ωsinϕx=rcosθ,y=rsinθ,u=ωcosϕ,v=ωsinϕ

      它指出,若 f(x,y)f(x,y)旋转 θ0θ0角度,则 F(u,v)F(u,v)也旋转 θ0θ0角度。反之若 F(u,v)F(u,v)旋转 θ0θ0角度,则 f(x,y)f(x,y)也旋转 θ0θ0角度。

      5.3.3、周期性

      F(u,v)=F(u+k1M,v)=F(u,v+k2N,)=F(u+k1M,v+k2N)F(u,v)=F(u+k1M,v)=F(u,v+k2N,)=F(u+k1M,v+k2N)


      f(x,y)=f(x+k1M,y)=f(x,y+k2N,)=f(x+k1M,y+k2N)f(x,y)=f(x+k1M,y)=f(x,y+k2N,)=f(x+k1M,y+k2N)

      其中 k1,k2k1,k2是整数。
      如果移动数据,以便 F(0,0)F(0,0)处在点(M/2,N/2)处,可简化其可视化程度。
      利用下式移动数据,
      f(x,y)(1)x+yF(uM2,vN2)f(x,y)(−1)x+y⟺F(u−M2,v−N2)

      以便如希望的那样,使 F(0,0)F(0,0)处在点 (M2,N2)(M2,N2)处,也就是在由区间 [0,M1][0,M−1] [0,N1][0,N−1]定义的频率矩形的中心处。

      5.3.4、傅立叶谱和相角

      因为通常二维DFT一般是复函数,因此可以使用极坐标形式来表示:

      F(u,v)=|F(u,v)|eiθ(u,v)F(u,v)=|F(u,v)|eiθ(u,v)

      RRI表示实部与虚部,其中幅度为
      |F(u,v)|=[R2(u,v)+I2(u,v)]12|F(u,v)|=[R2(u,v)+I2(u,v)]12

      称为傅立叶谱或频谱,而
      θ(u,v)=arctan[I(u,v)R(u,v)]θ(u,v)=arctan[I(u,v)R(u,v)]
      称为相角。
      功率谱:
      P(u,v)=|F(u,v)|2=R2(u,v)+I2(u,v)P(u,v)=|F(u,v)|2=R2(u,v)+I2(u,v)

      实函数的傅立叶变换是共轭对称的,这表明谱是关于原点偶对称: |F(u,v)|=|F(u,v)||F(u,v)|=|F(−u,−v)|;相角关于原点奇对称 θ(u,v)=θ(u,v)θ(u,v)=−θ(−u,−v)


      当然,傅立叶变换的性质不止这些,其他的待到日后在说。

      四、图像频域特性的物理意义

      图像频域的那么频域分析对图像处理有什么用呢。它的物理意义是什么?
      冈萨雷斯的书里解释的非常形象:一个恰当的比喻是将傅立叶变换比作一个玻璃棱镜。棱镜是可以将光分解成不同颜色的仪器,每个成分的颜色有波长或者说频率来决定。而傅立叶变换就可以看作是数学上的棱镜,将函数基于频率分解为不同的成分。当我们考虑光时,我们讨论它的光谱或频率谱。同样,傅立叶变换可以使我们通过频率成分来分析一个函数。
      图像频率的物理意义:图像频率是表征图像中灰度变换剧烈程度的指标,是灰度在平面空间上的梯度。如:大面积的海面在图像中是一片灰度变换缓慢的区域,对应的频率值很低;而对于地表属性变换剧烈的边缘区域在图像中是一片灰度变化强烈的区域,对应的频率值很高。
      傅立叶变换在实际中有非常明显的物理意义,设ff是一个能量有限的模拟信号,则其傅立叶变换就表示f的谱。从纯粹的数学意义上看,傅立叶变换是将一个函数转换为一系列的周期函数来处理。从物理效果上看,傅立叶变换是将图像从空间域转换到频率域,逆变换是将图像从频域转换到空间域。换句话说,傅立叶变换的物理意义是将图像的灰度分布函数转换为频域的频率分布函数,逆变换是把图像的频率域的频率分布函数转换为灰度分布函数
      图像是二维的,而空间是三维的,因此空间中物体在另一个维度上的关系是由梯度来表示,这样我们当然可以通过观察图像得知物体在三维空间上中对应的关系。
      考虑一座在(x,y)(x,y)点高度是H(x,y)H(x,y)的山。HH<script type="math/tex" id="MathJax-Element-302">H</script>这一点的梯度是在该点坡度(或者说斜度)最陡的方向。梯度的大小告诉我们坡度到底有多陡。
      为什么这么说呢,因为对图像做傅立叶变换,然后求出它的频率谱,用频率谱作图,得到频谱图。这个频谱图实际上就是图像梯度的分布图,当然频谱图上的各点与图像上的各点,不存在一一对应的关系,即使在不频移的情况下也没有。傅立叶频率图上我们看到的明暗不一的亮点,实际上就是图像上某一点与邻域点差异的强弱,即梯度的大小。(图像中低频部分是指梯度小的部分,高频部分是指梯度大的点)一般来将,梯度大则该点的亮度强,否则该点亮度弱。这样通过观察到计算得到的功率图,我们首先可以看出,图像的能量分布。由得到功率图和频谱图的方式可以分析出,这两种图反映的信息几乎相同。如果频谱图中暗的点数更多,那么实际图像是比较柔和的(因为各点与邻域的差异不大,梯度相对较小),反之,如果频谱图中亮点较多,那么实际图像一定是尖锐的,边界分明且边界两边像素差异较大。对频谱移频到图像大小的中间位置后,可以看出图像的频率是以分布是以该位置为圆心,对称分布的。将频谱移频到中间位置除了可以清晰的看出图像频率分布以外,还有一个好处,它可以分离出具有周期性规律的干扰信号。比如正弦干扰,一副带有正弦干扰,移频到原点的频谱图上可以看出除了中心以外还存在以某一点为中心,对称分布的亮点集合,这个集合就是干扰噪音产生的,这时可以很直观的通过在该位置放置带阻滤波器消除干扰。


      后记:
      不知不觉写了这么久,在写的过程中首先是参考wiki上的卷积,遇到问题都是在网上查的所以没有详细的引用列表。但是主要还是冈萨雷斯的数字图像处理。当然想看更详细的可以看冈萨雷斯的书,我这边是加上了自己的理解,有理解错误之处望请指出。当然欢迎交流。邮箱:kadima.kipp@gmail.com

      转自 https://blog.csdn.net/qq_27531383/article/details/72534608

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

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

相关文章

海明纠错码工作原理

海明纠错码 海明码&#xff08;Hamming Code&#xff09;是一个可以有多个校验位&#xff0c;具有检测并纠正一位错误代码的纠错码&#xff0c;所以它也仅用于信道特性比较好的环境中&#xff0c;如以太局域网中&#xff0c;因为如果信道特性不好的情况下&#xff0c;出现的错…

OpenCV-Python bindings是如何生成的(1)

翻译自How OpenCV-Python Bindings Works? 目标 学习 OpenCV-Python bindings是如何生成的如何为Python扩展新的opencv模块 OpenCV-Python bindings是如何生成的 在OpenCV里&#xff0c;所有算法都是用C实现的。但是这些算法可以在别的语言里使用&#xff0c;比如Python&…

OpenCV-Python bindings是如何生成的(2)

OpenCV-Python bindings生成流程 通过上篇文章和opencv python模块中的CMakeLists.txt文件&#xff0c;可以了解到opencv-python bindings生成的整个流程: 生成headers.txt文件 将每个模块的头文件添加到list中&#xff0c;通过一些关键词过滤掉一些不需要扩展的头文件&#x…

【TensorFlow】学习资源汇总以及知识总结

官方资源 官方网站 https://tensorflow.org 非翻墙神器不能访问也&#xff08;关键是我用了翻墙神器也没能访问&#xff09;伪官方网站 https://tensorflow.google.cn/ 墙内的人可以查阅的资料github https://github.com/tensorflow/tensorflow官方提供的models以及tutorial h…

机器学习资源锦集

http://www.cnblogs.com/pinard 十年码农&#xff0c;对数学统计学&#xff0c;数据挖掘&#xff0c;机器学习&#xff0c;大数据平台&#xff0c;大数据平台应用开发&#xff0c;大数据可视化感兴趣。github 深度学习 【深度学习】批归一化&#xff08;Batch Normalization&…

获取训练数据的方式

下载搜狗词库 https://pinyin.sogou.com/dict/ 在官网搜索相关的词库下载&#xff0c;比如地名等&#xff0c;然后使用脚本将此条转换成txt保存&#xff0c; 来源 # -*- coding: utf-8 -*- import os import sys import struct # 主要两部分 # 1.全局拼音表&#xff0c;貌似…

浅谈python MRO与Mixin模式

MRO(Method Resolution Order) In object-oriented programming languages with multiple inheritance, the diamond problem (sometimes referred to as the “deadly diamond of death”) is an ambiguity that arises when two classes B and C inherit from A, and class D…

CentOS7开发环境搭建(2)

关闭SELinux # 查看 $ getenforce Disabled $ sestatus SELinux status: enabled SELinuxfs mount: /sys/fs/selinux SELinux root directory: /etc/selinux Loaded policy name: targeted Current mode: …

IntelliJ IDEA开发环境应用

安装 下载windows压缩包获取帮助: idea.medeming.com/jihuoma 常用设置 全局设置&#xff0c;对新建的工程生效 【File】【Other Settings】【Setings for New Projects…】 比如配置maven的路径以及配置文件的路径&#xff0c;基本设置一次即可&#xff0c;不需要每次新建工…

tcp状态机-三次握手-四次挥手以及常见面试题

TCP状态机介绍 在网络协议栈中&#xff0c;目前只有TCP提供了一种面向连接的可靠性数据传输。而可靠性&#xff0c;无非就是保证&#xff0c;我发给你的&#xff0c;你一定要收到。确保中间的通信过程中&#xff0c;不会丢失数据和乱序。在TCP保证可靠性数据传输的实现来看&am…

Visual studio Code的C/C++开发环境搭建

文章目录VS CodeC/C环境配置环境准备使用实例基于 VSCode 的远程开发平台环境准备参考VS Code Visual Studio Code&#xff08;简称VS Code&#xff09;是一个由微软开发&#xff0c;同时支持Windows 、 Linux和macOS等操作系统且开放源代码的代码编辑器&#xff0c;它支持测试…

Linux网络编程--文件描述符

文件描述符 在Unix和Unix-like操作系统中&#xff0c;文件描述符(file descriptor, FD)是一个文件或者像pipe或者network socket等之类的输入/输出源的唯一标识。 文件描述符通常是一个非负整数&#xff0c;负数通常代表无值或者错误。 文件描述符是POSIX API的一部分。每个除…

深信服 linux软件开发面试题整理

1、结构体可以进行比较 int memcmp ( const void * ptr1, const void * ptr2, size_t num ); Compare two blocks of memory Compares the first num bytes of the block of memory pointed by ptr1 to the first num bytes pointed by ptr2, returning zero if they all match…

大端小端模式判断以及数据转换

简介 在计算机系统中&#xff0c;我们是以字节为单位的&#xff0c;每个地址单元都对应着一个字节&#xff0c;一个字节为 8bit。但是在C语言中除了8bit的char之外&#xff0c;还有16bit的short型&#xff0c;32bit的long型&#xff08;要看具体的编译器&#xff09;&#xff…

MSYS2下搭建Qt开发环境

最近随意浏览了一下俺们大省会城市的招聘信息&#xff0c;发现C招聘中涉及Qt经验的要求有不少&#xff0c;为了牛奶和面包&#xff0c;决心深入一下Qt开发。本篇文章由此而出。 Qt 关于Qt的人生经历在这不在累赘&#xff0c;资料随处可得&#xff0c;这里只记录干货。 环境搭…

CentOS7开发环境搭建(1)

文章目录BIOS开启VT支持U盘安装系统(2019-03-11)CentOS DNS配置CentOS网络配置配置静态IP克隆虚拟机网卡名称变更 CentOS6.5时间配置安装VMWare-tools用户管理 (2019-03-15 7.6.1810)给一般账号 root 权限Samba服务配置安装必备软件获取本机公网ipyum源和第三方库源管理配置本地…

ACM 欧拉公式

给出一个数X&#xff0c;求小于X的与X互质的数的个数&#xff0c;使用欧拉公式。 如果x1*x2*...*xnX,则个数nX*(1-1/x1)*(1-/x2)*... 使用这个的题目&#xff0c;超典型 相遇周期(HDOJ)

HDU 1495 非常可乐(BFS)

思路 最难在于想到这道题是BFS&#xff0c;想到之后只有六种情况就很好理解了。 代码 #include<stdio.h> #include<string.h> #include<math.h> #include<queue> using namespace std; int a,b,s; struct shui {int count;int ha,hb,hs; }t,t1; int m…

NBU计算机专业期末考试记录

考试科目&#xff1a;操作系统 软件工程 数据库 计算机网络 JAVA高级应用 汇编 计算机算法设计 操作系统&#xff1a;题目比较简单&#xff0c;这学期的大题有写读写互斥的代码、求平均磁道数、银行家算法、页面调度算法的缺页次数计算。期中考试有参考价值&#xff0c;要看懂…

蚁群算法的若干记录

1、蚁群算法的特点&#xff1a; ① 结合了分布式算法、正反馈机制、贪婪式搜索的算法&#xff1a;正反馈可以快速发现较优解、分布式算法避免早熟收敛、贪婪式搜索有助于早期找出可解决方案&#xff1b; ② 蚁群算法具有很强的并行性&#xff1b; ③ 个体之间通过信息素合作…