%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%傅里叶变换与反变换%%%%%%%%%%%%%%%%%%%%%
clc;clear; close all
I=imread('lena.bmp');
figure(1);
subplot(231);
imshow(I);
title('原图像');
H=fft2(I);
HH=abs(fftshift(H));
subplot(232);
imshow(log(1+HH),[])
title('幅度谱');
ang=angle(H);
subplot(233);
imshow(ang,[]);
title('相位谱');
I_man=imread('cameraman.bmp');
subplot(234);
imshow(I_man);
title('原图像');
H_man=fft2(I_man);
HH_man=abs(fftshift(H_man));
subplot(235);
imshow(log(1+HH_man),[])
title('幅度谱');
ang_man=angle(H_man);
subplot(236);
imshow(ang_man,[]);
title('相位谱');
figure(2);
Hamp=abs(H);
Iamp=real(ifft2(Hamp));
subplot(221);
imshow(log(1+Iamp),[]);
title('由Lena幅度谱重建的结果');
Hang=complex(cos(ang),sin(ang));
Iang=real(ifft2(Hang));
subplot(222);
imshow(Iang,[]);
title('由Lena相位谱重建的结果');
mix = complex(Hamp.*cos(ang_man),Hamp.*sin(ang_man));
Iamp=real(ifft2(mix));
subplot(223);
imshow(Iamp,[]);
title('Lena幅度、Cameraman相位重建的结果');
Hamp_man=abs(H_man);
mix = complex(Hamp_man.*cos(ang),Hamp_man.*sin(ang));
Iang=real(ifft2(mix));
subplot(224);
imshow(Iang,[]);
title('Cameraman幅度、Lena相位重建的结果');
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%频域滤波%%%%%%%%%%%%%%%%%%%%%%%
close all;clear
f=imread('texts.bmp');
figure(1);
subplot(1,2,1);imshow(f);title('Original Image');
F=fftshift(fft2(f));
[row,col] = size(f);
H=zeros(row,col);
hr=row/2;
hc=col/2;
D0=80;
for i=1:row
for j=1:col
d=((i-hr)^2+(j-hc)^2);
H(i,j)=exp(-d/(2*D0^2));
end
end
G=F.*H;
g=ifft2(ifftshift(G));
subplot(1,2,2); imshow(uint8(real(g)));title('Low-pass filtrated result')
figure(2);
[U,V]=meshgrid(1:col,1:row);
surf(U,V,H);