证明2D-FFT能够拆分成两个1D-FFT

来源:互联网 发布:养树的软件 编辑:程序博客网 时间:2024/06/06 14:02

经常可以在文献上看到2D-FFT能够以两个1D-FFT来实现,今天我用MATLAB证明了,的确如此。MATLAB的代码如下

clear all;clc;f=ones(256,256);center_loc = size(f);rd = 2;f(round(center_loc(1)/2)-rd:round(center_loc(1)/2)+rd, round(center_loc(2)/2)-rd:round(center_loc(2)/2)+rd) = 0;figure(1);imshow(f);f2=fft2(f);f3=(abs(f2));figure(2);imshow(f3);tmp=zeros(center_loc(1),center_loc(2));%-the first 1D-FFT, for each rowfor i= 1:center_loc(1)    tmp(i, :) = fft(f(i, :), center_loc(2));end%-transpose the tmp, for column-based 1d-ffttmp = tmp';%-the second 1d-fft, for each columnfor i= 1:center_loc(1)    tmp(i, :) = fft(tmp(i, :), center_loc(2));endtt = abs(tmp);figure(3); imshow(tt);


以下三张图从上到下,分别对应代码中的figure(1~3)。

Figure(1):

wKioL1VimBbi-unkAAAnenFGOuM968.jpg

figure(2):

wKioL1VimDTSj7A_AABqfz0_yX4518.jpg


figure(3):


wKioL1VimEjSErjyAABqfz0_yX4504.jpg



0 0
原创粉丝点击