任务一:图像傅里叶变换演示
程序代码:
f = imread('autumn.tif');%读取图像
f = im2double(rgb2gray(f));%转换图像格式
figure, imshow(f, []);%显示原始图像
title('原始图像');
F = fft2(f);%傅里叶变换
S = abs(F);%取模
figure, imshow(S, []);%显示取模后图像
title('傅立叶频谱图像');
Fc = fftshift(F);%中心化
S = abs(Fc);%显示中心化图像
figure, imshow(S, []);
title('居中的傅立叶频谱图像');
S = abs(F);
S2 = log(1+S);
figure, imshow(S2, []);
title('使用对数变换进行视觉增强后的傅立叶频谱图像');
Fc = fftshift(F);
S = abs(Fc);
S2 = log(1+S);
figure, imshow(S2, []);
title('使用对数变换进行视觉增强并居中后的傅立叶频谱图像');
运行结果:
任务二:图像傅里叶变换的频谱和相位谱
程序代码:
I = imread('autumn.tif');
I = im2double(I);
I_Gray = rgb2gray(I);%灰度处理
If = fft2(I_Gray);%傅里叶变换
I_Shift = fftshift(If);%对频谱进行移动,是0频率点在中心
I_fudu = log(abs(I_Shift));%获得傅里叶变换的幅度谱
I_xiangwei = log(angle(I_Shift)*180/pi);%获得傅里叶变换的相位谱
I_Restructure = ifft2(abs(If).*exp(j*(angle(If))));%双谱重构
figure(1)
subplot(231)
imshow(I_Gray)
title('原图像')
subplot(232)
imshow(I_fudu,[])
title('图像幅度谱')
subplot(233)
imshow(I_xiangwei,[]);
title('图像相位谱')
subplot(234)
imshow(ifft2(abs(If)),[]);
title('幅度谱重构')
subplot(235)
imshow(ifft2(exp(j*(angle(If)))),[]);
title('相位谱重构')
subplot(236)
imshow(I_Restructure,[]);
title('双谱重构图')
%显示重构的三种图像
运行结果:
任务三:基于空域滤波模板的图像频域滤波
程序代码:
I = imread('autumn.tif');
I = im2double(I);
figure,imshow(I,[]);
h=-ones(7,7);%建立滤波模板
h(4,4)=30;%给模板中心赋值
s=sum(h(:));
h=h/s;%归一化
H=zeros(size(I));
H(100:106,170:176)=h;
H=ifftshift(H);%中心化
FI=fft2(I);FH=fft2(H);
FJ=FI.*FH;
J=real(ifft2(FJ));
figure,imshow(J,[]);
运行结果:
任务四:基于频域滤波器的图像频域滤波
clc;
clear;
I=imread('moon.tif');
I=im2double(I);
figure,imshow(I,[]);
S=size(I);
D0=10;%截止频率
FH=ones(S);
M=S(1);N=S(2);%图像尺寸
I_fft=fft2(I);
I_fft=fftshift(I_fft);
for i=1:1:M
for j=1:1:N
if (i-M/2)^2+(j-N/2)^2<=D0^2
FH(i,j)=1-exp((-(i-M/2)^2-(j-N/2)^2)/(2*D0*D0));
end
end
end
figure,imshow(real(ifft2(I_fft.*FH)));
%将FH构造成一个高通滤波器;
%原图像利用FH进行滤波,形成FJ;
%对FJ进行逆变换形成图像J;
运行结果: