題目: 傅里葉變換及圖像的頻域處理 算法
學院(系): 里仁學院電氣工程系 數據庫
年級專業: 生物醫學工程10-1班 函數
學 號: 101203041007 工具
學生姓名: 趙 林 靜 性能
指導教師: 孟 輝 學習
教師職稱: 講 師 ui
燕山大學課程設計(論文)任務書spa
院(系):里仁學院電氣工程系 基層教學單位:生物醫學工程 設計
學 號3d |
101203041007 |
學生姓名 |
趙林靜 |
專業(班級) |
生物醫學工程10-1班 |
||
設計題目 |
傅立葉變換及圖像的頻域處理 |
||||||
設 計 技 術 參 數 |
在設計巴特沃思濾波器時知足的性能指標:通帶截止頻率1000rad/s,通帶最大衰減3dB,阻帶的截止頻率40000rad/s阻帶的最小衰減6dB |
||||||
設 計 要 求 |
理解離散傅立葉變換的基本原理; 掌握應用MATLAB語言進行FFT及逆變換的方法; 熟悉圖像在頻域中處理方法,應用MATLAB語言做簡單的低通濾波器。
|
||||||
工 做 量 |
網上查閱相關資料 圖書館查閱有關資料 綜合整理所學的知識 完成相關程序 |
||||||
工 做 計 劃 |
第1-2天查找有關資料,開始準備; 第3-4天編寫程序,進行運行以及改進 第5天整理程序,完成設計報告 |
||||||
參 考 資 料 |
百度文庫 MATLAB數據庫論壇 張德峯,《MATLAB數字圖像處理》,機械工業出版社。2009,1
|
||||||
指導教師簽字 |
孟 輝 |
基層教學單位主任簽字 |
趙 勇 |
說明:此表一式四份,學生、指導教師、基層教學單位、系部各一份。
2013年12 月 5 日
一 緒論 …………………………………………………………………………………………………………………2
二 設計目的………………………………………………………………………………………………………………4
三 設計原理………………………………………………………………………………………………………………4
3.1傅里葉變換的基本知識…………………………………………………………………………………………4
3.2MATLAB提供的快速傅里葉變換……………………………………………………………………………6
3.3簡單低通濾波器的設計…………………………………………………………………………………………7
四 設計要求………………………………………………………………………………………………………………10
4.1理想低通濾波器的設計 ……………………………………………………………………………………11
4.2理想高通濾波器的設計 ……………………………………………………………………………………13
五 總結 ……………………………………………………………………………………………………………………17
六 參考文獻………………………………………………………………………………………………………………17
MATLAB的英文全稱Matrix Laboratory(矩陣實驗室).一開始它是一種專門用於矩陣數值計算的軟件。 從這一點能夠看出,它在矩陣運算方面有本身的特色。實際上,MATLAB中的絕大多數運算都是經過矩陣這一形式完成的。從理論上講,圖像是一種二維的連續函數,然而在計算機上對圖像進行數字處理時,首先必須對其在空間和亮度上進行數字化。
圖像處理技術的發展大體經歷了處創期,發展期,普及期和實用化期4個階段。初創期開始於20世紀60年代,當時的圖像採用像素型光柵進行掃描顯示,大多采用中,大型機對其處理。20世紀90年代是圖像處理技術的實用化時期,圖像處理的信息量巨大,對處理器速度的要求極高。
傅立葉變換是數字信號處理領域一種很重要的算法。要知道傅立葉變換算法的意義,首先要了解傅立葉理的意義。
傅立葉原理代表:任何連續測量的時序或信號,均可以表示爲不一樣頻率的正弦波信號的無限疊加。而根據該原理創立的傅立葉變換算法利用直接測量到的原始信號,以累加方式來計算該信號中不一樣正弦波信號的頻率、振幅和相位。和傅立葉變換算法對應的是反傅立葉變換算法。該反變換從本質上說也是一種累處理,這樣就能夠將單獨改變的正弦波信號轉換成一個信號。所以,能夠說,傅立葉變換將原來難以處理的時域信號轉換成了易於分析的頻域信號(信號的頻譜),能夠利用一些工具對這些頻域信號進行處理、加工。最後還能夠利用傅立葉反變換將這些頻域信號轉換成時域信號。從現代數學的眼光來看,傅里葉變換是一種特殊的積分變換。它能將知足必定條件的某個函數表示成正弦基函數的線性組合或者積分。在不一樣的研究領域,傅里葉變換具備多種不一樣的變體形式,如連續傅里葉變換和離散傅里葉變換。
1、設計目的
一、理解離散傅立葉變換的基本原理;
二、掌握應用MATLAB語言進行FFT及逆變換的方法;
三、熟悉圖像在頻域中處理方法,應用MATLAB語言做簡單的低通濾波器。
2、設計原理
一、傅立葉變換的基本知識
在圖像處理的普遍應用領域中,傅立葉變換起着很是重要的做用,具體表如今包括圖像分析、圖像加強及圖像壓縮等方面。
假設f(x, y)是一個離散空間中的二維函數,則該函數的二維傅立葉變換的定義以下:
p=0,1…M-1 q=0,1…N-1 (6.1)
或 p=0,1…M-1 q=0,1…N-1 (6.2)
離散傅立葉反變換的定義以下:
m=0,1…M-1 n=0,1…N-1 (6.3)
F(p, q)稱爲f(m, n)的離散傅立葉變換係數。這個式子代表,函數f(m, n)能夠用無數個不一樣頻率的復指數信號和表示,而在頻率(w1,w2)處的復指數信號的幅度和相位是F(w1,w2)。
例如,函數f(m, n)在一個矩形區域內函數值爲1,而在其餘區域爲0,如圖所示。
了簡便起見,假設f(m, n)爲一個連續函數,則f(m, n)的傅立葉變換的幅度值(即)顯示爲網格圖,如圖所示。
將傅立葉變換的結果進行可視化的另外一種方法是用圖像的方式顯示變換結果的對數幅值,如圖所示。
幾種簡單函數的傅立葉變換的頻譜能夠直觀的表示爲圖所示的樣子。
二、MATLAB提供的快速傅立葉變換函數
(1) fft2
fft2函數用於計算二維快速傅立葉變換,其語法格式爲:
B = fft2(I)
B = fft2(I)返回圖像I的二維fft變換矩陣,輸入圖像I和輸出圖像B大小相同。
例如,計算圖像的二維傅立葉變換,並顯示其幅值的結果,如圖所示,其命令格式以下
load imdemos saturn2
imshow(saturn2)
B = fftshift(fft2(saturn2));
imshow(log(abs(B)), [ ], ‘notruesize’)
(2) fftshift
MATLAB提供的fftshift函數用於將變換後的圖像頻譜中心從矩陣的原點移到矩陣的中心,其語法格式爲:
B = fftshift(I)
對於矩陣I,B = fftshift(I)將I的1、三象限和2、四象限進行互換。
(3) ifft2
ifft2函數用於計算圖像的二維傅立葉反變換,其語法格式爲:
B = ifftn(I)
B = ifftn(I)返回圖像I的二維傅立葉反變換矩陣,輸入圖像I和輸出圖像B大小相同。其語法格式含義與fft2函數的語法格式相同,能夠參考fft2函數的說明。
3、簡單低通濾波器的設計
一個圖像通過傅立葉變換後,就從空域變到了頻域,所以咱們能夠用信號處理中對於頻域信號的處理方法對一幅圖像進行處理。好比對圖像進行低通濾波等。
一個二維的理想低通濾波器(ILPF),它的傳遞函數由下式肯定:
(6.4)
式中D0是一個規定的非負的量,稱爲截止頻率,雖然在計算機中一定可以模擬一個銳截止頻率的理想低通濾波器,但它們不能用電子元件來實現。實際中比較經常使用的低通濾波器有:巴特沃思(Butterworth)濾波器、指數濾波器(ELPF)、梯形低通濾波器等。
在實驗中咱們設計一個理想的低通濾波器。
設計理想的低通濾波器由其定義可知只要設計一個與頻域圖像大小徹底相同的矩陣。在某一個域值內該矩陣的值爲1,其他爲0便可。
例:若圖像的大小爲128*128,則能夠這樣設計一個低通濾波器:
H=zeros(128);
H(32:96, 32:96)=1; %此處的範圍是人爲取定的,能夠根據須要更改。
若圖像矩陣I的傅立葉變換是B(已經用fftshift將頻譜中心移至矩陣的中心),則對這幅圖像作低通濾波,再作傅立葉逆變換命令爲
LOWPASS=B.* H; %此處變換後的矩陣爲LOWPASS,另注意這兒是矩陣的點乘。
C=ifft2(LOWPASS);
imshow(abs(C))
參考代碼實現:
I=imread(‘guzhe.jpg'’); %讀入原圖像文件
imshow(I); %顯示原圖像
fftI=fft2(I); %二維離散傅立葉變換
sfftI=fftshift(fftI); %直流份量移到頻譜中心
RR=real(sfftI); %取傅立葉變換的實部
II=imag(sfftI); %取傅立葉變換的虛部
A=sqrt(RR.^2+II.^2); %計算頻譜幅值
A=(A-min(min(A)))/(max(max(A))-min(min(A)))*225; %歸一化
figure; %設定窗口
imshow(A); %顯示原圖像的頻譜
2.理想低通濾波器參考代碼實現:
I = imread(' guzhe.jpg'');
[f1,f2] = freqspace(size(I),'meshgrid');
Hd = ones(size(I));
r = sqrt(f1.^2 + f2.^2);
%0.1
Hd(r>0.1) = 0;
Y=fft2(double(I));
Y=fftshift(Y);
Ya=Y.*Hd;¨
Ya=ifftshift(Ya);
Ia01=ifft2(Ya);
%0.2
Hd(r>0.2) = 0; ÷
Y=fft2(double(I));
Y=fftshift(Y);
Ya=Y.*Hd; ¨
Ya=ifftshift(Ya);
Ia02=ifft2(Ya);
%0.5
Hd(r>0.5) = 0;
Y=fft2(double(I));
Y=fftshift(Y);
Ya=Y.*Hd;
Ya=ifftshift(Ya);
Ia05=ifft2(Ya);
subplot(2,2,1),imshow(I),title('原圖像')
subplot(2,2,2),imshow(uint8(Ia01)),title('r=0.1')
subplot(2,2,3),imshow(uint8(Ia02)),title('r=0.2')
subplot(2,2,4),imshow(uint8(Ia05)),title('r=0.5')
3. 理想高通濾波器參考代碼實現:
I = imread(' guzhe.jpg'');
[f1,f2] = freqspace(size(I),'meshgrid');
Hd = ones(size(I));
r = sqrt(f1.^2 + f2.^2);
%0.1
Hd(r<0.1) = 0;
Y=fft2(double(I));
Y=fftshift(Y);
Ya=Y.*Hd;
Ya=ifftshift(Ya);
Ia01=ifft2(Ya);
%0.2
Hd(r<0.2) = 0;
Y=fft2(double(I));
Y=fftshift(Y);
Ya=Y.*Hd;
Ya=ifftshift(Ya);
Ia02=ifft2(Ya);
%0.5
Hd(r<0.5) = 0;
Y=fft2(double(I));
Y=fftshift(Y);
Ya=Y.*Hd;
Ya=ifftshift(Ya);
Ia05=ifft2(Ya);
subplot(2,2,1),imshow(I),title('原圖像')
subplot(2,2,2),imshow(uint8(Ia01)),title('r=0.1')
subplot(2,2,3),imshow(uint8(Ia02)),title('r=0.2')
subplot(2,2,4),imshow(uint8(Ia05)),title('r=0.5')
3、設計要求
一、讀取圖像guzhe.jpg,顯示這幅圖像,對圖像做傅立葉變換,顯示頻域振幅圖像。做傅立葉逆變換,顯示圖像,看是否與原圖像相同。
A=imread(' guzhe.jpg');
subplot(1,3,1),imshow(A);title('原圖像');
A=rgb2gray(A);
B=fftshift(fft2(A));
subplot(1,3,2),imshow(log(abs(B)), [ ], 'notruesize');title('二維傅立葉變換');
C= ifft2(B);
subplot(1,3,3),imshow(log(abs(C)), [ ], 'notruesize');title('逆變換後圖像');
二、設計一個簡單的理想低通濾波器(截止頻率自選),對圖像做頻域低通濾波,再做反變換,觀察不一樣的截止頻率下反變換後的圖像與原圖像的區別。
A=imread(' guzhe.jpg ');
subplot(3,2,1),imshow(A);title('原圖像');
A=rgb2gray(A);
B=fftshift(fft2(A));
E= ifft2(B);
subplot(3,2,2),imshow(log(abs(E)), [ ], 'notruesize');title('未濾波的逆變換圖像');
[X,MAP]=imread(' guzhe.jpg ');
[m,n]=size(X);
H1=zeros(m,n);
H1(m/2:m, n/2:n)=1;
LOWPASS1=B’.* H1;
C=ifft2(LOWPASS1);
subplot(3,2,3),imshow(log(abs(LOWPASS1)), [ ], 'notruesize');title('低通1');
subplot(3,2,4),imshow(log(abs(C)), [ ], 'notruesize');title('低通1逆變換圖像');
H2=zeros(m,n);
H2(m/10:m, n/10:n)=1;
LOWPASS2=B’.* H2;
D=ifft2(LOWPASS2);
subplot(3,2,5),imshow(log(abs(LOWPASS2)), [ ], 'notruesize');title('低通2');
subplot(3,2,6),imshow(log(abs(D)), [ ], 'notruesize');title('低通2逆變換圖像');
三、設計一個簡單的理想高通濾波器(截止頻率自選),對圖像做頻域高通濾波,再做反變換,觀察不一樣的截止頻率下反變換後的圖像與原圖像的區別。
A=imread(' guzhe.jpg ');
subplot(3,2,1),imshow(A);title('原圖像');
A=rgb2gray(A);
B=fftshift(fft2(A));
E= ifft2(B);
subplot(3,2,2),imshow(log(abs(E)), [ ], 'notruesize');title('未濾波的逆變換圖像');
[X,MAP]=imread(' guzhe.jpg ');
[m,n]=size(X);
H1=ones(m,n);
H1(m/3:m*2/3, n/3:n*2/3)=0;
LOWPASS1=B’.* H1;
C=ifft2(LOWPASS1);
subplot(3,2,3),imshow(log(abs(LOWPASS1)), [ ], 'notruesize');title('高通1');
subplot(3,2,4),imshow(log(abs(C)), [ ], 'notruesize');title('高通1逆變換圖像');
H2=ones(m,n);
H2(m*3/5:m, n*3/5:n)=0;
LOWPASS2=B’.* H2;
D=ifft2(LOWPASS2);
subplot(3,2,5),imshow(log(abs(LOWPASS2)), [ ], 'notruesize');title('高通2');
subplot(3,2,6),imshow(log(abs(D)), [ ], 'notruesize');title('高通2逆變換圖像');
四、對一幅圖像做傅立葉變換,顯示一幅頻域圖像的振幅分佈圖和相位分佈圖,分別對振幅分佈和相位分佈做傅立葉逆變換,觀察兩幅逆變換後的圖像,體會頻域圖像中振幅與位相的做用。
I=imread(' guzhe.jpg ');
A=fftshift(fft2(I));
A1=angle(A);
B=ifft2(A);
B1=ifft2(A1);
C=ifft2(abs(A));
figure;
subplot(2,3,1),imshow(I);title('原圖像');
subplot(2,3,2),imshow(A1,[],'notruesize');title('相位譜');
subplot(2,3,3),imshow(log(abs(A)),[],'notruesize');title('傅立葉振幅頻譜');
subplot(2,3,4),imshow(log(abs(B)),[],'notruesize');title('直接圖像逆變換');
subplot(2,3,5),imshow(log(abs(B1)),[],'notruesize');title('相位逆變換');
subplot(2,3,6),imshow(log(abs(C)),[],'notruesize');title('傅立葉振幅逆變換');
五、設計一個其它類型(如巴特沃思、指數等)的低通濾波器,對圖像做頻域低通濾波,比較這一濾波器和理想濾波器濾波結果的差別。
頻域低通濾波:
I=imread(' guzhe.jpg ');
I=rgb2gray(I);
A=fftshift(fft2(I));
d0=100;
N=8;
[m,n]=size(A);
h=zeros(m,n);
[a,b]=size(I);
H=zeros(a,b);
H(a/4:3*a/4,b/4:3*b/4)=1;
for i=1:m
for j=1:n
d(i,j)=sqrt(i^2+j^2);
h(i,j)=1/(1+(d(i,j)/d0)^(2*N));
end
end
low1=A.*H;
B=ifft2(low1);
low2=A.*h;
C=ifft2(low2);
figure;
subplot(2,3,4),imshow(I);title('原圖像');
subplot(2,3,2),imshow(log(abs(low1)),[],'notruesize');title('理想低通濾波頻譜');
subplot(2,3,3),imshow(log(abs(low2)),[],'notruesize');title('巴特沃思低通濾波頻譜');
subplot(2,3,1),imshow(log(abs(A)),[],'notruesize');title('傅立葉振幅頻譜');
subplot(2,3,5),imshow(uint8(abs(B)),[],'notruesize');title('理想低通濾波後圖像');
subplot(2,3,6),imshow(uint8(abs(C)),[],'notruesize');title('巴特沃思低通濾波後圖像');
四.總結
此次課程設計,咱們使用了MATLAB進行頻域低通濾波,對圖像進行傅里葉變換,經過設計,咱們學會了實現圖像的傅里葉變換,同時也在頻域中實現了低通濾波。在設計過程當中,咱們熟悉了各個模塊的做用,瞭解它的基本職能以及操做,爲從此的學習打下了基礎。
五.參考文獻
MATLAB數據庫論壇
張德峯,《MATLAB數字圖像處理》,機械工業出版社。2009,1
羅述謙,周國宏 圖像處理與分析 北京,科學出版社,2003
燕山大學課程設計評審意見表
指導教師評語:
①該生學習態度 (認真 較認真 不認真) ②該生遲到、早退現象 (有 無) ③該生依賴他人進行設計狀況 (有 無)
平時成績: 指導教師簽字:
2013 年 12 月 7 日 |
圖面及其它成績: |
答辯小組評語:
①設計巧妙,實現設計要求,並有所創新。 ②設計合理,實現設計要求。 ③實現了大部分設計要求。 ④沒有完成設計要求,或者只實現了一小部分的設計要求。
答辯成績: 組長簽字:
2013 年 12 月 7 日 |
課程設計綜合成績: |
答辯小組成員簽字:
2013年 12 月 7 日 |