卷积与傅立叶变换

一、卷积

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,一经查实,立即删除!

相关文章

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

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

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

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

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源和第三方库源管理配置本地…

NS2相关学习——创建Xgraph的输出文件

经过前面学习代码的编写&#xff0c;这一部分&#xff0c;我们要学会如何进行分析&#xff0c;一个很直观的方式就是将结果图形化表示出来。 ns-allinone包的一部分是“xgraph”&#xff0c;一个绘图程序&#xff0c;可用于创建模拟结果的图形表示。 在本节中&#xff0c;将向…

An Energy-Efficient Ant-Based Routing Algorithm for Wireless Sensor Networks (无线传感网中基于蚁群算法的能量有效路由)2

牙说&#xff1a;接着上一篇继续写。论文标题&#xff1a;An Energy-Efficient Ant-Based Routing Algorithm forWireless Sensor Networks作者&#xff1a;Tiago Camilo, Carlos Carreto, Jorge S Silva, Fernando Boavida正文&#xff1a; 2、相关工作可以考虑无线传感器网络…

NS2仿真分析无线网络的攻击防御(1)

这个学期有个选题是NS2仿真分析无线网络的攻击防御&#xff0c;比较有意思的样子&#xff0c;现在来慢慢学一下这个是什么东西。 首先&#xff0c;还是一篇文章&#xff08;老长老长了&#xff09;&#xff0c;还是全英文的&#xff0c;还是先来分析一下它到底在说什么&#x…

Java集合之HashMap源码分析

以下源码均为jdk1.7 HashMap概述 HashMap是基于哈希表的Map接口的非同步实现. 提供所有可选的映射操作, 并允许使用null值和null健. 此类不保证映射的顺序. 需要注意的是: HashMap不是同步的. 哈希表 哈希表定义: 哈希表是一种根据关键码去寻找值的数据映射结构, 该结构通…

NS2相关学习——可靠的MANET应用程序的Gossip协议分析

好久不写&#xff0c;应该努力啦&#xff01;老师把这篇论文给了我&#xff0c;现在还不知道它在讲什么&#xff0c;来边翻译边学习吧&#xff01; 文章链接&#xff1a;https://www.researchgate.net/publication/316844643_Analyzing_Gossip_Protocols_for_Reliable_MANET_Ap…

Java集合之LinkedList源码分析

概述 LinkedLIst和ArrayLIst一样, 都实现了List接口, 但其内部的数据结构不同, LinkedList是基于链表实现的(从名字也能看出来), 随机访问效率要比ArrayList差. 它的插入和删除操作比ArrayList更加高效, 但还是要遍历部分链表的指针才能移动到下标所指的位置, 只有在链表两头的…

lex和yacc环境配置

lex和yacc的使用很简单&#xff0c;但环境配置却是各种问题&#xff0c;本章说明lex和yacc在windows下的环境配置。 软件需求&#xff1a; 系统 win7-64位(win7-32, win8, win10全部通过) c编译器&#xff1a; vs2010(2008,2013,2015也全部通过) lex和yacc编译器&#xff1a…

Java集合之Vector源码分析

概述 Vector与ArrayLIst类似, 内部同样维护一个数组, Vector是线程安全的. 方法与ArrayList大体一致, 只是加上 synchronized 关键字, 保证线程安全, 下面就不具体分析源码了, 具体可以查看ArrayList中的源码分析. Vector源码分析 1.主要字段 2.构造函数 3.增删改查 其他方法…

Gossip协议的P2P会员管理

阅读此论文主要目的在于理解gossip协议及其背后的原理&#xff0c;此部分详细翻译&#xff0c;其余部分看时间 文章标题&#xff1a;Gossip协议的P2P会员管理 作者&#xff1a;Ayalvadi J. Ganesh, Anne-Marie Kermarrec, and Laurent Massoulie Abstract&#xff1a;基于…

Java集合之LinkedHashSet源码分析

概述 LinkedHashSet与HashSet类似, 不同的是LinkedHashSet底层使用LinkedHashMap维护元素插入的顺序. LinkedHashSet继承自HashSet, 只是重写了HashSet的构造方法, 初始化一个LinkedHashMap, 其他均与HashSet相同. LinkedHashSet构造方法 HashSet的构造方法: 以上几乎就是Li…

Java集合之ArrayList源码分析

概述 ArrayList可以理解为动态数组, 根据MSDN的说法, 就是Array的复杂版本. 与数组相比, 它的容量能动态增长. ArrayList是List接口的可变数组的实现. 实现了所有可选列表操作, 允许包括null在内的所有元素. 数组的特点, 查询快增删慢. 每个ArrayList实例都有一个容量, 该容…

Java集合之Hashtable源码分析

概述 Hashtable也是基于哈希表实现的, 与map相似, 不过Hashtable是线程安全的, Hashtable不允许 key或value为null. 成员变量 Hashtable的数据结构和HashMap一样, 采用 数组加链表的方式实现. 几个成员变量与HashMap一样: 方法 Hashtable的方法与HashMap基本一样, 只是 Ha…

视频质量检测中的TP、FP、Reacll、Precision

在看论文《Measuring Vedio QoE from Encrypted Traffic》的时候看到TP&#xff08;True Positives&#xff09;、FP&#xff08;False Positives&#xff09;、Precison、Recall的概念&#xff0c;这属于数据挖掘方面的内容&#xff0c;学习之后特来记录。 首先&#xff0c;下…

Java集合之LinkedHashMap源码分析

概述 HashMap是无序的, 即put的顺序与遍历顺序不保证一样. LinkedHashMap是HashMap的一个子类, 它通过重写父类的相关方法, 实现自己的功能. 它保留插入的顺序. 如果需要输出和输入顺序相同时, 就选用此类. LinkedHashMap原理 LinkedHashMap是如何保证输入输出顺序的呢? L…

Java集合之HashSet源码分析

概述 HashSet是基于HashMap来实现的, 底层采用HashMap的key来保存数据, 借此实现元素不重复, 因此HashSet的实现比较简单, 基本上的都是直接调用底层HashMap的相关方法来完成. HashSet的构造方法就是创建HashMap: 基本操作 1.添加操作 2.删除操作 3.迭代器 其他方法基本也是调…

三次握手wireshark抓包分析,成功握手和失败握手

转载之前&#xff1a;基于HTTP的视频流中&#xff0c;客户端有时会打开使用多条TCP与服务器连接&#xff0c;为了验证每一对话的sessionID是否相同&#xff0c;使用wireshark进行了抓包分析&#xff08;抓到的都是加密的包&#xff0c;无卵用orz....&#xff09;&#xff0c;这…

Java 内部类及其原理

Java中实现内部类 内部类相信大家都用过很多次了&#xff0c;就不说它是怎么用的了。 内部类 1.成员内部类 需要注意的是&#xff0c; 当成员内部类拥有和外部类同名的成员变量或这方法时&#xff0c; 默认情况下访问的是内部类的成员&#xff0c; 如要访问外部类的同名成员&…