s1093350 Homework #3

 1122 Digital Image Processing Assignment #3報告

學號:s1093350      姓名:楊宜芳 

主題:傅立葉轉換與影像復原處理

問題與專案解決目標: 

呈現受雜訊干擾原圖的傅立葉轉換的振幅頻譜(Amplitude Spectrum)與相位頻譜(Phase Spectrum),並產生去除雜訊後的圖像。

開發環境:Microsoft Windows 11, Visual Studio Code 1.87.1, OpenCV 4.90, Python 3.8.13

程式架構與功能說明: 

1. 讓使用者 Conslole 輸入原始圖片的檔案名稱(包含副檔名),並用灰階模式讀取圖片。範       例如下,藍色部分為使用者自行輸入:

    input image filename: image1.jpg

    程式碼及註解如下圖。

2. 對讀取的圖片做傅立葉轉換,並計算出振幅頻譜和相位頻譜,再用Matplotlib的功能將振幅       頻譜及相位頻譜存成圖片檔。程式碼及註解如下圖。

3. 建立視窗預覽原始圖片。視窗上設置 Trackbar,讓使用者能透過 Trackbar  來調整設定的截止       頻率與儲存檔案。程式碼及註解如下圖。


    Trackbar 改動時不會執行動作,設置 nothing 函數,不執行動作,如下圖。


4. 取得 Trackbar 的值(截止頻率以及是否儲存圖片)。程式碼及註解如下圖。

5. 根據設定的截止頻率來設定低通濾波器,首先取得圖片的大小及算出圖片的中心位置,並建       立與圖片大小相同的零矩陣,再將矩陣的中心範圍設置為1。接著,去除圖片中的高頻雜           訊,並與原始的相位結合,最後,做逆傅立葉轉換,產生結果。程式碼及註解如下圖。

6. 對處理完後的圖片做歸一化,以顯示於預覽視窗。程式碼及註解如下圖。

7. 若使用者將SaveFile設置為1,則儲存圖像並退出。程式碼及註解如下圖。

濾波器原理與步驟說明: 

低通濾波器允許低頻信號通過,並抑制高頻信號。以下是低通濾波器的原理和應用步驟:

§   低通濾波器的原理:

在頻率域中,低頻的成分通常代表圖像的主要形狀或大範圍的變化,而高頻的成分則通常表示圖像的細節、邊緣,也容易有圖像的雜訊。低通濾波器是一個二維陣列,首先需要創建一個只在中心(低頻區域)有開放(值設為1),而在其他高頻區域封閉(值設為0)的濾波器來執行其功能。其中,中心區域允許低頻成分通過,邊緣區域則不允許高頻成分通過。

§   低通濾波器的應用步驟:

首先取得圖片的大小、計算圖片的中心位置,再建立與圖片大小相同的零矩陣作為濾波器,並將中心範圍設為1(大小由設定的截止頻率決定,表示允許這個頻率範圍內的成分通過)。程式碼如下:

rows, cols = img.shape

crow, ccol = rows // 2, cols // 2

lowpass_mask = np.zeros((rows, cols), np.uint8)

lowpass_mask[crow - cutoff_frequency:crow + cutoff_frequency, col - cutoff_frequency:ccol + cutoff_frequency] = 1

接著,將濾波器用於原始圖片傅立葉轉換後的結果。將傅立葉轉換的每個頻率成分與濾波器對應的值相乘,保留低頻成分,並削弱高頻成分。再將濾波過的結果重新建構成傅立葉變換數據,以便進行逆傅立葉轉換。程式碼如下:

filtered_FT = FT * lowpass_mask

filtered_FT_complex = np.abs(filtered_FT) * np.exp(1j * phase_spectrum)

最後,對濾波後的傅立葉轉換數據進行逆傅立葉轉換,將其轉回空間域,得到去除雜訊後的圖像。程式碼如下:

filtered_image = np.fft.ifft2(filtered_FT_complex)

filtered_image = np.abs(filtered_image)

成果展示與討論:

範例一:

使用者 conslole 輸入檔案名稱,即可讀取該圖片,並取得該圖的振幅頻譜和相位頻譜。接著可設置截止頻率,並儲存去除雜訊後的圖片至output資料夾。如下圖。



振幅頻譜、相位頻譜、原圖及去除雜訊後的結果如下:


 

 

範例二:



振幅頻譜、相位頻譜、原圖及去除雜訊後的結果如下:


 

 

範例三:


振幅頻譜、相位頻譜、去除雜訊後的結果如下:


 

 
 

影片:

 


留言

這個網誌中的熱門文章

rzwang Homework #1

s1093350 Homework #2

s1061637 作業6