Fourier Transform¶
Abstract
- Fourier and his work
- Background of Fourier Transform
- Fourier Transform
- Discrete Fourier Transform (1D)
- FFT
- Discrete Fourier Transform (2D)
- FFT for Image in Matlab
Fourier Transform¶
Expansion of a Function¶
英国数学家泰勒在17世纪找到了用幂函数的无限线性组合表示一般的解析函数的方法。
Fourier Series¶
18世纪中叶,法国数学家傅里叶在研究热传导问题时,找到了三角函数的无限线性组合表示有限区间上的一般函数的方法,即把函数展开成三角级数。
简单的周期现象,简谐振动: \(y=A\sin(\omega t+\phi)\)
一个周期运动,物理学上可以分成若干个简谐振动的叠加: \(y=\sum\limits_{k=1}^n y_k=\sum\limits_{k=1}^n A_k\sin(k\omega t+\phi)\)
Example
Complex Numbers¶
复数可以采用 Magnitude-Phase(vector) 表示,即 \(x=|x|e^{j\phi(x)}\), 其中 Magnitude \(|x|=\sqrt{a^2+b^2}\), Phase \(\phi(x)=\tan^{-1}(b/a)\)
在这种表示下,复数乘法可以写作 \(xy=|x|e^{j\phi(x)}\cdot |y|e^{j\phi(y)}=|x||y|e^{j\phi(x)+\phi(y)}\)
共轭复数 \(x^* = a-jb\), 它满足 \(|x|=|x^*|,\phi(x)=-\phi(x),xx^*=|x|^2\)
Euler Formula: \(e^{j\theta}=\cos(\theta)+j\sin(\theta)\)
它满足 \(|e^{j\theta}|=1, phi(e^{j\theta})=\theta,sin(\theta)=\dfrac{1}{2l}(e^{j\theta}-e^{-j\theta}),cos(\theta)=\dfrac{1}{2}(e^{j\theta}+e^{-j\theta})\)
Fourier Transform¶
傅里叶变换是复傅里叶系数在给定区间上的一个推广。
傅里叶分析指频率区域分析,其中 \(n\) 较小时为低频, \(n\) 较大时为高频。
注意到正弦波和余弦波都是无限长的,这是傅里叶分析的一个不足,因此微波(wavelet)分析比特定信号的分析更好。
Example
对于非周期函数,如果函数 \(f(x)\)只在区间 \([−\pi,\pi]\) 上,也可展开成傅氏级数.
周期延拓
1-D 2-D Continuous
Image Transform¶
很多时候,图像处理任务在变换域(频域)而不是空间域中执行得最好。
- 图像变换
- 进行操作
- 图像逆变换,回到空间域
- T
- InvT
低频对应图像缓慢变化的信息(如连续的表面);高频对应快速变化的信息(如边)
Frequency Filtering Steps
- 对 \(f(x)\) 傅里叶变换 \(F(f(x))\)
- 去掉不想要的频率 \(D(F(f(x)))\)
- 转换回原来的信号 \(\hat f(x)=F^{-1}(D(F(f(x))))\)
Discrete Fourier Transform (DFT)¶
Forward DFT
\(F(u)=\sum\limits_{x=0}^{N-1}f(x)e^{-\frac{j2\pi ux}{N}}, u=0,1,\ldots,N-1\) N 频率的数目,x 采样点的数目
Inverse
\(f(x)=\dfrac{1}{N}\sum\limits_{u=0}^{N-1}f(u)e^{\frac{j2\pi ux}{N}}, x=0,1,\ldots,N-1\)
Magnitude VS Phase
如果我们只用振幅/相位作为信息重建图像,会得到什么样的结果?
-
利用振幅
-
利用相位
相位更多的传递了图像的结构信息!
Fast Fourier Transform(FFT)¶
- 将原始的 N 点序列依次分解为一系列短序列;
- 求出这些短序列的离散傅立叶变换;
- 组合出所需的变换值;
- 计算量(乘除法):\(2N^2\rightarrow 2N\lg_2N\)
Principle¶
\(F(k)=\dfrac{1}{N}\sum\limits_{n=0}^{N-1}f(n)e^{\frac{j2\pi kn}{N}}\)
Let \(W_N^{n,k}=e^{-j2\pi nk/N}\) then DFT is \(F(k)=\dfrac{1}{N}\sum\limits_{n=0}^{N-1}f(n)W_N^{n,k}\)
假定 \(N\) 为 \(2\) 的正整数幂:\(N=2^H\Rightarrow N=2M\), 将原式子分为奇数项和偶数项
令 \(\left\{ \begin{matrix} F_e(k) & = \sum\limits_{n=0}^{M-1}f(2n)W_M^{n,k} \\ F_o(k) & = \sum\limits_{n=0}^{M-1}f(2n+1)W_M^{n,k} \end{matrix}\right.\) 那么 \(F(k)=\lfloor F_e(k)+F_o(k)W_{2M}^k \rfloor\)
如果 \(e, o\) 是 \(2\) 的幂次,还可以继续拆
对于 \(k=M,M+1\ldots,2M-1\)
因此 $F(k+M)=\lfloor F_e(k)-F_o(k)W_{2M}^k\rfloor $
意义:对一个长度为 N 的序列进行傅立叶变换可以通过将其分成两半计算,对第一部分的计算需要通过计算两个长度为 N/2 长度序列的傅立叶变换式进行,然后利用这两个长度为 N/2 的序列可以得到第二部分的值。