matlab實現傅里葉變換

代碼實現

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


結果:

原圖

image-20201204222737888

灰度圖

image-20201204222944348

傅里葉頻譜圖

image-20201204223005138

中心偏移後的傅里葉頻譜圖

image-20201204223340844

中心偏移後頻譜圖的實部

image-20201204223405703

中心偏移後頻譜圖的虛部

image-20201204223424411

傅里葉逆變換得到的灰度圖

image-20201204223445600

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章