代码实现
clc;clear;close all;
%读取图片,展示图片
I=imread(\'p3.jpg\');
figure(\'Name\',\'原图\',\'NumberTitle\',\'off\');imshow(I);
I=rgb2gray(I); %I = rgb2gray(RGB) 将真彩色图像 RGB 转换为灰度图像 I。
I=im2double(I); %I = im2double(I) 将图像 I 转换为双精度。
figure(\'Name\',\'灰度图\',\'NumberTitle\',\'off\');imshow(I,[0,1]);%展示原灰度图像
F=fft2(I); %Y = fft2(X) 使用快速傅里叶变换算法返回矩阵的二维傅里叶变换,这等同于计算 fft(fft(X).\').\'。如果 X 是一个多维数组,fft2 将采用高于 2 的每个维度的二维变换。输出 Y 的大小与 X 相同。
Fm=abs(F);%得到变换后的模
T=log(Fm+1);%求自然对数
figure(\'Name\',\'傅里叶变换频谱图\',\'NumberTitle\',\'off\');imshow(T,[]);%展示傅里叶变换后的图
Ff=fftshift(F);%快速傅里叶变换 Y = fftshift(X) 通过将零频分量移动到数组中心,重新排列傅里叶变换 X。
Fm=abs(Ff);
T=log(Fm+1);
figure(\'Name\',\'中心偏移后的傅里叶变换频谱图\',\'NumberTitle\',\'off\');imshow(T,[]);
r=log(abs(real(Ff)));
i=log(abs(imag(Ff)));
figure(\'Name\',\'中心偏移后的傅里叶变换频谱图实部\',\'NumberTitle\',\'off\');imshow(r,[]);
figure(\'Name\',\'中心偏移后的傅里叶变换频谱图虚部\',\'NumberTitle\',\'off\');imshow(i);
J=ifft2(F);%X = ifft2(Y) 使用快速傅里叶变换算法返回矩阵的二维离散傅里叶逆变换。
figure(\'Name\',\'傅里叶逆变化得到的灰度图\',\'NumberTitle\',\'off\');imshow(J,[0,1]);
open fftshift
open ifft2
open fft2
结果:
原图
灰度图
傅里叶频谱图
中心偏移后的傅里叶频谱图
中心偏移后频谱图的实部
中心偏移后频谱图的虚部
傅里叶逆变换得到的灰度图
请发表评论