如果要对一个连续信号进行计算机处理,那么就必须经过离散化处理。这样对连续信号进行的傅里叶变换的积分过程就会自然地蜕变为求和过程。
一维情况
DFT:
X(m)=n=0∑N−1x(n)e−iN2πmn,m=0,1,2,…,N−1
IDFT:
x(n)=m=0∑N−1X(m)eiN2πmn,n=0,1,2,…,N−1
二维情况
F(u,v)=MN1x=0∑M−1y=0∑N−1f(x,y)e−i2π(Mux+Nvy)u=0,1,2,…,M−1,v=0,1,2,…,N−1
反变换为
f(x,y)=u=0∑M−1v=0∑N−1F(u,v)ei2π(Mux+Nvy)x=0,1,2,…,M−1,y=0,1,2,…,N−1
其中M,N为图像的长宽,F(u,v)为频域
FFT 快速傅里叶变换
快速傅里叶变换并不是一种新的变换,它是离散傅里叶变换的一种算法
X(m)=n=0∑N−1x(n)e−iN2πmn,m=0,1,2,…,N−1
设 eN−i2π=W,eNi2π=W−1,称其为旋转因子。
那么可以将上式改写
X(m)=n=0∑N−1x(n)Wmn
如果将其展开,我们可以得到下列的计算方式
这种计算方式时间复杂度过高!
接下来对W进行分析:
Wmn=eN−i2πmn=cos(N2πmn)−isin(N2πmn)
W(m+lN)(n+hN)=eN−i2π(m+lN)(n+hN)=cos(N2π(m+lN)(n+hN))−isin(N2π(m+lN)(n+hN))=cos(N2πmn+2πln+2πhm+2πlhN)−isin(N2πmn+2πln+2πhm+2πlhN)=Wmn
即Wmn是以N为周期的。进而获得以下特性:
- 对称性 (WNnk)∗=WN−nk=WN(N−n)k
- 周期性 WN(n+N)k=WNnk
- 可约性 WmNmnK=WNnK
可见,离散傅里叶变换中的乘法运算有许多重复内容。1965年库利-图基提出把原始的N点序列依次分解成一系列短序列,然后,求出这些短序列的离散傅里叶变换,以此来减少乘法运算。
根据分解的特点一般有两类:一类是按时间分解,一类是按频率分解
时间分解
设 N=2L, 将x(n)按照n分为奇偶两组
那么有
x1(r)=x(2r)x2(r)=x(2r+1)
那么原始变化可以写成
X(m)=n=0∑N−1x(n)Wmn=n=0(偶数)∑N−1x(n)Wmn+n=0(奇数)∑N−1x(n)Wmn
带入,可得
X(m)=r=0∑N/2−1x(2r)WN2rm+r=0∑N/2−1x(2r+1)WN(2r+1)m=r=0∑N/2−1x1(r)WN/2rm+WNmr=0∑N/2−1x2(r)WN/2rm=X1(m)+WNmX2(m)