卷积与傅立叶变换

2023-11-14

一、卷积

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 ) Rn R n 两个可积函数, 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 τ

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


图解卷积
(图片来自wiki)
1. 现在有两个关于自变量 t t 的函数f(t),g(t)f(t),g(t),图像为上图的第一行。
2. 把 g(t) g ( t ) 的自变量换成 τ τ ,让其翻转称为 g(τ) g ( − τ ) ,再向左移动 t t 个单位,得到g(tτ)g(tτ),图像如图片的第二行。
3. 让 g(tτ) g ( t − τ ) − ∞ 移动到 + + ∞ ,移动的过程中把两个函数的相乘并积分。
4. 第三行的图像是把 g(tτ) g ( t − τ ) f(τ) f ( τ ) 放在一个坐标系中,其实 t t 不是常数,它是一个时间变量,当时间变量(简称为时移)取不同值时(以下把取不同值的过程简称“滑动”),当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)h f ∗ ( 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 ) = ( a f ) ∗ g = f ∗ ( a g )
其中 a a 为任意实数
微分定理
D(fg)=Dfg=fDgD(fg)=Dfg=fDg
其中 Df D f 表示 f f 的微分,如果在离散域中则是指差分算子,包括前向差分与后向差分两种:

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

    • 离散:

      对于定义在整数 Z Z 上的函数 f,g f , 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 ) 的定义域为有限长度 M M 上是,就会变成有限和。

        f(n)g(n)=m=MMf(nm)g(m)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 = − M M f ( m ) g ( n − m )

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

      2、二维卷积

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

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

      同理可以定义多元函数上的卷积
      f(t1,t2,,tn)g(t1,t2,,tn)=f(τ1,τ2,,τn)g(t1τ1,t2τ2,,tnτn)dτ1dτ2dτn f ( t 1 , t 2 , … , t n ) ∗ g ( t 1 , t 2 , … , t n ) = ∫ ∫ … ∫ f ( τ 1 , τ 2 , … , τ n ) g ( t 1 − τ 1 , t 2 − τ 2 , … , t n − τ n ) d τ 1 d τ 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 = − a a ∑ t = − b b f ( s , t ) g ( m − s , n − t )

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


      二、循环卷积

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

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


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

      f(t)gT(t)=t0+Tt0[k=+f(τ+kT)]gT(tτ)dτ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 ) ∗ g T ( t ) = ∫ − ∞ + ∞ f ( τ ) g T ( t − τ ) d τ = ∫ − ∞ + ∞ f ( t − τ ) g T ( τ ) d τ

      相等。


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

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

      k是函数f(n)的周期延伸。
      gN g N 经过周期延伸成为 g g ,那么ff gN g N 卷积等于 f f gg的卷积。
      f f gg的定义域在 [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 ) ∗ g N ( n ) = ∑ m = 0 N − 1 f ( m ) g N ( n − m ) = ∑ m = 0 n f ( m ) g N ( n − m ) + ∑ m = n + 1 N − 1 f ( m ) g N ( 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)是一种线性的积分变换,作用是把信号在时域(或空域)和频域之间变换。它由法国的约瑟夫·傅立叶系统的提出。所以,为了以它的名字命名以示纪念。傅立叶变换源自傅立叶级数,在傅立叶级数中复杂的周期函数可以用一系列简单的正弦、余弦波之和表示。傅立叶变换是对傅立叶级数的扩展,他表示的函数的周期趋近与无穷。


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

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

      1、傅立叶级数

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

      f(t)=n=+cnei2πnTt f ( t ) = ∑ n = − ∞ + ∞ c n e i 2 π n T t

      其中
      cn=1TT2T2f(t)ei2πnTtdt,n=0,±1,±2, c n = 1 T ∫ − T 2 T 2 f ( t ) e − i 2 π n T t d t , n = 0 , ± 1 , ± 2 , …

      是系数。


      2、一维连续傅立叶变换

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

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

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

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

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

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

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


      3、离散傅立叶变换

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

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

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

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

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

      它的傅立叶变换是
      F(u)=δ(tt0)ei2πutdt=ei2πutδ(tt0)ei2πutdt=ei2πut0=cos(2πut0)isin(2πut0) F ( u ) = ∫ − ∞ ∞ δ ( t − t 0 ) e − i 2 π u t d t = ∫ − ∞ ∞ e − i 2 π u t δ ( t − t 0 ) e − i 2 π u t d t = e − i 2 π u t 0 = c o s ( 2 π u t 0 ) − i s i n ( 2 π u t 0 )

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


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

      sΔT(t)=n=cnei2πnΔTt s Δ T ( t ) = ∑ n = − ∞ ∞ c n e i 2 π n Δ T t

      其中
      cn=1ΔTΔT2ΔT2sΔT(t)ei2πnΔTtdt c n = 1 Δ T ∫ − Δ T 2 Δ T 2 s Δ T ( t ) e − i 2 π n Δ T t d t

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

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

      因为求和的过程是线性过程,得到和的傅立叶变换与各个分量的傅立叶变换之和是相同的,所以对上式的每个分量求傅立叶变换
      F{ei2πnΔTt}=δ(unΔT) F { e i 2 π n Δ T t } = δ ( 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 = − ∞ ∞ e i 2 π n Δ T t } = 1 Δ T F { ∑ n = − ∞ ∞ e i 2 π n Δ T t } = 1 Δ T ∑ n = − ∞ ∞ δ ( u − n Δ T )

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

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


      3.2、取样

      为了避免周期混淆,需要

      1ΔT>2umax 1 Δ T > 2 u m a x

      它的含义是如果超过函数最高频率的两倍的取样频率来获得样本,连续的带限函数可以完全的从他的样本集来恢复。这就是 取样定理
      离散傅立叶变换之前需要对连续函数取样,取样是用一个 Δ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) f n = ∫ − ∞ ∞ f ( t ) δ ( t − n Δ T ) d t = 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ΔT F δ ( u ) = ∫ − ∞ ∞ ∑ n = − ∞ + ∞ f ( t ) δ ( t − n Δ T ) e − i 2 π u t d t = ∑ n = − ∞ + ∞ ∫ − ∞ ∞ f ( t ) δ ( t − n Δ T ) e − i 2 π u t d t = ∑ n = − ∞ + ∞ f ( n Δ T ) e − i 2 π u n Δ T

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

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

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


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

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


      4、二维连续傅立叶变换

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

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

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

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

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

      连续变量t,z的冲激

      δ(t,z)={,0,t=z=0else δ ( t , z ) = { ∞ , t = z = 0 0 , e l s e

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

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

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

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

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

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

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

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

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

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

      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 = 1 M Δ T δv=1NΔZ δ v = 1 N Δ Z 给出。
      频域样本间的间隔与空间样本间的间隔和样本数成反比

      5.3.2、平移和旋转

      平移:

      f(x,y)ei2π(u0xM+v0yN)F(uu0,vv0) f ( x , y ) e i 2 π ( u 0 x M + v 0 y N ) ⟺ F ( u − u 0 , v − v 0 )


      f(xx0,yy0)F(u,v)ei2π(u0xM+v0yN) f ( x − x 0 , y − y 0 ) ⟺ F ( u , v ) e − i 2 π ( u 0 x M + v 0 y N )

      旋转:
      使用极坐标表示:
      x=rcosθ,y=rsinθ,u=ωcosϕ,v=ωsinϕ x = r c o s θ , y = r s i n θ , u = ω c o s ϕ , v = ω s i n ϕ

      它指出,若 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 + k 1 M , v ) = F ( u , v + k 2 N , ) = F ( u + k 1 M , v + k 2 N )


      f(x,y)=f(x+k1M,y)=f(x,y+k2N,)=f(x+k1M,y+k2N) f ( x , y ) = f ( x + k 1 M , y ) = f ( x , y + k 2 N , ) = f ( x + k 1 M , y + k 2 N )

      其中 k1,k2 k 1 , k 2 是整数。
      如果移动数据,以便 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 − M 2 , v − N 2 )

      以便如希望的那样,使 F(0,0) F ( 0 , 0 ) 处在点 (M2,N2) ( M 2 , N 2 ) 处,也就是在由区间 [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 ) | e i θ ( u , v )

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

      称为傅立叶谱或频谱,而
      θ(u,v)=arctan[I(u,v)R(u,v)] θ ( u , v ) = a r c t a n [ 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 = R 2 ( u , v ) + I 2 ( u , v )

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


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

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

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


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

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

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

卷积与傅立叶变换 的相关文章

随机推荐

  • typora免费安装版教程,支持Windows、Mac、Linux

    大家好 我是可乐 本篇文章为大家介绍 Typora快捷键 Typora免费安装教程 Typora是一款简单易用的Markdown编辑器 目前 Typora 官方是不提供免费版下载了 需要一次性购买版权 支持正版的可以直接前往官网购买 89
  • STM32上使用JSON

    一 STM32工程中添加JSON 最近在一网2串项目 串口和网口之间可能需要定义一下简单的通信协议 而通信协议上则需要去定义一下通信的数据格式 上次听剑锋说要用Json来定义 目前查了下资料具体如何去应用还不 会 因为最新的KEIL上支持J
  • FreeRTOS之事件

    FreeRTOS之事件 声明 本人按照正点原子的FreeRTOS例程进行学习的 欢迎各位大佬指责和批评 谢谢 一 事件定义 事件 事件集 与高数上的集合意义差不多 事件啊 其实是实现任务间通信的机制 主要用于实现多任务间的同步 但是事件类型
  • 在vue中使用antV-G2展示散点图

    介绍 在vue中使用antV G2展示散点图 G2 是一套基于图形语法理论的可视化底层引擎 以数据驱动 提供图形语法与交互语法 具有高度的易用性和扩展性 使用 G2 你可以无需关注图表各种繁琐的实现细节 一条语句即可使用 Canvas 或
  • python开发平台PyCharm最好的一种编辑环境配置(字体大小和颜色)

    python 的开发平台PyCharm是一款非常人性化的IDE 得到非常多pythone开发者的认可和使用 下面分享一款个人非常喜爱的使用环境配置 如图所示 当然 你也可以有自己喜欢的个人设置 下面介绍一下总体的配置方法和本人使用的环境配置
  • 第15讲,添加门窗

    从内容浏览器中 可以找到门窗 但是brushtype选项已经没了
  • C# 关闭当前窗体打开另一窗体?

    你可以先打开form2 再关闭form1 button1 Click form2 frm2 new form2 frm2 show this close
  • fdisk 更改分区容量遇到问题,还以为是oracle asm的问题

    Command m for help wThe partition table has been altered Calling ioctl to re read partition table WARNING Re reading the
  • HBase数据的读写流程

    1 HBase数据写入流程 1 客户端访问Zookeeeper 从Meta表中得到写入数据对应的Region信息和相应的Region服务器 2 客户端访问相应的Region服务器 把数据分别写入HLog和MemStore MemStore数
  • tomcat配置参数

    1 内存参数调优 说明 tomcat初始堆内存8G 最大堆内存16G 新生代内存为最大堆内存的3 8 这里是6G 持久化内存默认82M 项目中使用月100M 必须重设 可以考虑256M或者更多 这个设置的2G 最大设置的是4G 存活比率默认
  • element 时间选择器时间跨度设置 7天

  • 国内工业数字化进程的推进,难点在哪里?

    推进工业数字化进程 通常称为工业 4 0 或工业物联网 IIoT 可能是一项复杂且具有挑战性的工作 在此过程中 经常会遇到一些困难和障碍 包括 1 遗留系统 许多工业设施仍然依赖于未考虑数字化设计的遗留设备和系统 将这些旧系统与现代数字技术
  • Java bean 详解

    JavaBean 介绍 功能特点 分类 组成 属性 方法 事件 event 范围 scope 页面page 请求request 对话session 应用application 任务 设计目标 1 紧凑而方便的创建和使用 2 完全的可移植性
  • Selenium分布式自动化测试平台 Standalone Server 4.0 搭建

    最新的selenium测试平台大概有这么几个组件 Selenium Standalone Server 用来搭建远程测试平台以及分布式测试 Selenium WebDriver 最基础的用来创建测试脚本以及用来和上面的server进行交互的
  • CSP 202305-3 解压缩

    这道T3主要是能够读懂题目 然后根据题意进行模拟 需要比较多的位运算 在此题 我选择用uint8 t存储一个字节 然后对字符和数字进行了转换 include
  • Java多线程-锁的概念

    1 结婚戒指的意义 根据文献记载 最早使用戒指人就是希腊的悲剧英雄 被缚的普罗米修斯 宙斯为惩罚普罗米修斯盗火给人类 将他绑缚在考卡苏斯山上 每天都有一只老鹰飞到山上 将他的内脏啄出 到了夜晚 他所失去的器官又会重新长出来 后来 大力士海格
  • Kubernetes 中部署 NFS Provisioner 为 NFS 提供动态分配卷

    Kubernetes 中部署 NFS Provisioner 为 NFS 提供动态分配卷 文章目录 Kubernetes 中部署 NFS Provisioner 为 NFS 提供动态分配卷 一 NFS Provisioner 简介 二 创建
  • bert-as-service配置

    环境配置 conda create n bert service python 3 8 conda activate bert service pip install user nvidia pyindex pip install user
  • 11.Java数据库连接

    Java数据库连接 概念 在软件开发中 经常需要与数据库进行交互来存储和检索数据 Java提供了一种称为JDBC Java Database Connectivity 的API 用于连接和操作各种类型的关系型数据库 数据库连接是指通过Jav
  • 卷积与傅立叶变换

    一 卷积 1 一维的卷积 连续 在泛函分析中 卷积是通过两个函数 f x f x f x 和 g x g x g x 生成第三个函数的一种算子 它代表的意义是 两个函数中的一个 我取 g x