1、傅立葉變換圖像的頻域處理,實驗目的,1、瞭解離散傅立葉變換的基本原理;2、掌握應用MATLAB進行FFT及逆轉換的方法;3、瞭解圖像在頻域中處理方法,應用MATLAB作簡單的低通濾波器。,程式步驟,讀入圖檔灰階化進行2D傅立葉轉換生成濾波器基本矩陣生成butterworth低通濾波器進行2D反傅立葉轉換,讀入圖片與灰階化,clear all; %從記憶體中清除變數和函數clc; %清除指令視窗close all ; %清除以開啟圖形視窗http:/www.ece.rice.edu/wakin/images/lena512color.tiffI = imread(lena512color.tif
2、);%讀入圖檔存進變數II_gray = rgb2gray(I); %將彩色圖片轉成灰階,2D傅立葉轉換,I_fft2 = fft2(I_gray); %進行2D傅立葉轉換I_log = log(abs(I_fft2); %調校頻率域值以方便觀察figure;imshow(I_log,0 40); colormap(jet); %加入彩色觀察其頻譜能量colorbarI_Output = fftshift(I_log); %位移頻率域值,將零點移到中心 figure;imshow(I_Output,0 40); colormap(jet); %加入彩色觀察其頻譜能量colorbar,二維快速傅
3、立葉變換函數-fft2,fft2函數用於計算二維快速傅立葉變換,其語法格式為:B=fft2(I)可得到圖I的二維fft變換矩陣,輸入圖I和輸出圖B大小相同。使用方式如下I = imread(lena512color.tif);I = rgb2gray(I);B=fftshift(fft2(I);imshow(log(abs(B),),反轉換ifft2,ifft2函數用於計算圖像的二維傅立葉反變換,語法格式為:B=ifft2(I)B=ifft2(A)返回圖像I的二維傅立葉反變換矩陣,輸入圖像I和輸出圖像B大小相同。語法格式與fft2函數語法格式相似。I = imread(lena512color
4、.tif);I = rgb2gray(I);I = fft2(I);y = ifft2(I);figureimshow(uint8(y);,fftshift,MATLAB提供的fftshift函數用於將變換後的圖像頻譜中心從矩陣的原點移到矩陣的中心,其語法格式為:B=fftshift(I)將矩陣I的一、三象限和二、四象限進行互換得到矩陣B。如: A = 1 2 3 4 5 6 7 8 y=fftshift(A)Then y = 7 8 5 6 3 4 1 2,fftshift在fft運算裡的物理意義,做完傅立葉變換之後,負頻率信號移到了正頻率之後,fftshift函數就是將負頻率移回去,這樣零
5、頻率就由原來的頻譜最左邊移動到了中間中頻範圍(採樣頻率的一半)其實質是把Fs/2的右邊頻譜平移到Fs/2的左邊,把低頻平移到Fs/2的右邊,各圖像間距不變,色調,colormap(jet);colorbar,I_fft2 = fftshift(I_fft2); %位移原始未調校之頻率域值%生成濾波器基本矩陣u,v=meshgrid(-255:256,-255:256);%生成butterworth低通濾波器 預設2階H=1./(1+(sqrt(u.2+v.2)/40).4);figure;ezsurf(1/(1+(sqrt(u2+v2)/40)4),-255 256,-255 256); %b
6、utterworth低通濾波器3D表示圖%進行濾波與位移 最後反傅立葉轉換y=ifft2(fftshift(H.*I_fft2);figure;imshow(uint8(y);,meshgrid指令,利用獨立之兩維向量 x 與 y,將其轉換為 與之對應網絡座標。其結果是之諸列為x向量之複製;值內之行向量則是複製y向量。,4.3.2 Butterworth Low-Pass Filter,BLPF轉換函數的透視圖濾波器顯示成一個影像階數從1到4的濾波器徑向剖面圖,比較,截止頻率D0=10截止頻率D0=40,基本立體繪圖指令- ezsurf,如果我們只是要很快地檢視一個具有二個輸入的函數的圖形,就
7、可以使用 ezmesh 或是 ezsurf 等來快速地畫出函數的曲面圖形ezsurf(sin(x*y)/(x*y);default domain: -2 x 2, -2 y 2.,練習,butterworth低通濾波器(預設2階)改為8階H1=1./(1+(sqrt(u.2+v.2)/100).16);ezsurf(1/(1+(sqrt(u2+v2)/100)16),-255 256,-255 256);增加butterworth高通濾波器(2階、4階)H2=1./(1+(40./sqrt(u.2+v.2).4);ezsurf(1/(1+(40/sqrt(u2+v2)4),-255 256,-255 256);H3=1./(1+(10./sqrt(u.2+v.2).8);ezsurf(1/(1+(10/sqrt(u2+v2)8),-255 256,-255 256);,end,Homework1,實作Butterworth filter繳交方式:doc檔(需印出紙本)、matlab程式檔,