clc;
clear;
close all;
a=imread('Lena512C.bmp');
f=rgb2gray(a); %原图为三维图像,转为二维图像
figure(1);
subplot(2,2,1);
imshow(f);
title('原图像');
H=fft2(f); %傅里叶变换
Ha=abs(H);
subplot(2,2,2);
imshow(Ha,[]);
title('原始幅度谱');
Ha1=log(1+Ha);
subplot(2,2,3);
imshow(Ha1,[]);
title('对数变换幅度谱');
Ha1s=fftshift(Ha1);
subplot(2,2,4);
imshow(Ha1s,[]);
title('频谱中心化幅度谱');
figure(2);
subplot(1,3,1);
imshow(f);
title('原图像');
subplot(1,3,2);
imshow(Ha1s,[]);
title('幅度谱');
ang=angle(H);
subplot(1,3,3);
imshow(ang,[]);
title('相位谱');
figure(3);
lamp=real(ifft2(Ha));
subplot(1,3,1);
imshow(log(1+lamp),[]);
title('幅度谱重建结果');
Hang=complex(cos(ang),sin(ang));
lang=real(ifft2(Hang));
subplot(1,3,2);
imshow(lang,[]);
title('相位谱重建结果');
mix=complex(Ha.*cos(ang),Ha.*sin(ang));
lang1=real(ifft2(mix));
subplot(1,3,3);
imshow(lang1,[]);
title('幅度谱+相位谱重建结果');
figure(4);
subplot(3,2,1);
imshow(f);
title('原图像');
subplot(3,2,2);
imshow(Ha1s,[]);
title('幅度谱');
[M,N]=size(f);
cen_row=(M+1)/2;
cen_col=(N+1)/2;
D=30;
F=fftshift(fft2(f));
F1=F;
F2=F;
for i=1:M
for j=1:N
d=((i-cen_row)^2+(j-cen_col)^2)^0.5;
if d>D
F1(i,j)=0;
end
if d<D
F2(i,j)=0;
end
end
end
f1=real(ifft2(ifftshift(F1)));
subplot(3,2,3);
imshow(f1,[0,255]);
title('低通滤波后图像');
subplot(3,2,4);
imshow(log(1+abs(F1)),[]);
title('低通滤波后幅度谱');
f2=real(ifft2(ifftshift(F2)));
subplot(3,2,5);
imshow(f2,[0,255]);
title('高通滤波后图像');
subplot(3,2,6);
imshow(log(1+abs(F2)),[]);
title('高通滤波后幅度谱');