基于MATLAB中fft2函数的二维图像数据的频谱生成代码

来源:互联网 发布:nginx伪静态规则写法 编辑:程序博客网 时间:2024/06/06 09:54

如何利用MATLAB中的fft2函数对二维的图像数据进行频域变换

clc

clear all
close all
I = imread('testwomen.jpg');    %读取源图像
size(I) %显示图像采样值
figure(1);
imshow(I);
title('the original photo')
%---------------------------
I1 = I(:,:,1);
fftI = fft2(I1);
A1 = abs(fftI);         %取模值
B1 = (A1 - min(min(A1))) / (max(max(A1)) - min(min(A1))) * 255;  %归一化显示
figure(2)
imshow(B1);
title('the frequency spectrum without shiftfft()')
%---------------------------
sfftI = fftshift(fftI);
A = abs(sfftI);
B = (A - min(min(A))) / (max(max(A)) - min(min(A))) * 255;
figure(3)
%imshow(B,[0,255]);  
imshow(B);

title('the frequency spectrum with shiftfft()')


黑白可以用数值表示,即信号值的大小。上图是二维图像信号的频谱,横轴代表x方向的频率,纵轴代表y方向的频率,黑白表示不同频率分量振幅的强弱。

频谱的中心代表了低频信号的振幅,频谱远离中心位置的灰度代表了高频成分振幅的大小。

0 0