图像二维傅里叶变换实操matlab

%说明:添加高斯滤波后的傅里叶变换
clear all;clc;
% 读取图像
Img = imread('lena512.bmp');
M = size(Img);
if numel(M)>2
    gray = rgb2gray(Img);
else
    gray = Img;
end
 
% 创建滤波器
W = fspecial('gaussian',[5,5],1); 
G = imfilter(gray, W, 'replicate');

f=G;  %读取图像,获得信息
f=im2double(f);
figure(1);
subplot(2,3,1);
imshow(f);%显示图像
title('原图');  

F=fft2(f);%傅里叶变换
subplot(2,3,2);
F1=fftshift(F);%居中
S=abs(F1);%居中的傅里叶谱
imshow(S, [])%显示图像
title('居中的傅里叶谱');     

RR=real(F1);%傅里叶谱的实部
II=imag(F1);%傅里叶谱的虚部
Angle=atan2(imag(F1),real(F1));%相角
A1=abs(F1);
A2=sqrt(RR.^2+II.^2);
S3=log(Angle*180/pi);
subplot(2,3,3);
S1=log(1+A1);
imshow(S1, [])%显示图像
title('幅度谱');
subplot(2,3,4);
S2=log(1+A2);
imshow(S2, [])%显示图像
title('平方开根后幅度谱');   
subplot(2,3,5);
imshow(S3, [])%显示图像
title('相位谱'); 

feature:可以对图片进行识别并转换成灰度图,添加了高斯滤波。

result:

 

posted @ 2021-07-07 09:08  甜心主教  阅读(1099)  评论(0)    收藏  举报