图像的傅立叶变换,原始图像由N行N列构成,N必须是基2的,把这个N*N个包含图像的点称为实部,另外还需要N*N个点称为虚部,因为FFT是基于复数的。
(//实数DFT将时域内的N个点变换为频域中两组各N/2+1个点(分别对应实部和虚部))
计算图像傅立叶变换的过程很简单:首先对每一行做一维FFT,然后对每一列做一维FFT。具体来说,先对第0行的N个点做FFT(实部有值,虚部为0),将FFT输出的实部放回原来第0行的实部,FFT输出的虚部放回第0行的虚部,这样计算完全部行之后,图像的实部和虚部包含的是中间数据,然后用相同的办法进行列方向上的FFT变换,这样N*N的图像经过FFT得到一个N*N的频谱。
用一个N点的FFT运算获得一个2N点实序列的DFT
设x(n)是2N点的实序列,现人为地将x(n)分为偶数组x1(n)和奇数组x2(n)
x1(n)=x(2n) n=0,1,…,N-1
x2(n)=x(2n+1) n=0,1,…,N-1
然后将x1(n)及x2(n)组成一个复序列y(n)=x1(n)+jx2(k)
通过N点FFT运算可得到 Y(k)=X1(k)+jX2(k)
根据前面的讨论,得到
为求2N点x(n)所对应的X(k),需求出X(k)与X1(k),X2(k)的关系
而
所以 X(k)=X1(k)+W2Nk X2(k)。
这样,由x1(n)及x2(n)组成复序列,经FFT运算求得Y(k)后,再利用共轭对称性求出X1(k),X2(k),最后利用上式求出X(k),从而达到了用一个N点的FFT计算一个2N点实序列DFT的目的。
参考 http://blog.sina.com.cn/s/blog_a29b7adb01010lbs.html
http://zlgc.seu.edu.cn/jpkc2/ipkc/signal/new/course/two/2_3_2.htm