2022年4月13日 星期三

s1083346 作業4

離散傅立葉轉換 DFT練習

 請撰寫一個程式,讀取一張256色灰階圖像。

(1) 計算輸入圖的離散傅立葉轉換結果,並將頻譜大小與相位角度各以灰階256色圖像方式呈現出。

(2) 對圖像利用Gaussian Low-Pass filter處理,輸出平滑後圖像。

(程式利用課本的frequency filter步驟者可得滿分,在網頁中將每個步驟結果呈現出。直接套用opencv函數得一半分數。)

      開發環境:

      Windows10

      Vscode

      Python3.9.6

      Opencv-Python_4.5.5.62

程式想法:

一開始先引用matplotlib import pyplot as plt

(1)頻譜:

首先cv2.imread('檔名',cv.IMREAD_GRAYSCALE)

再來用cv2.dft轉換成頻率域,再使用np.fft.fftshift將頻率0移置中心點(原本在左上角)

接著使用magnitude函式和20*np.log取得頻譜

(2)相位角度:

使用arctan2取得相位角度

(3)高斯低慮波:

首先用mask遮罩設定為1,再用逆傅立葉np.fft.iffshift還原

最後再用magnitude取得振幅

(4)顯示:

使用plt顯示plt.show(),plt.axis('off')關掉座標

                                              原始灰階:

頻譜:

相位角度:

                                                                         高斯低慮波:


Demo影片:https://youtu.be/jhuCzR4IlhU

                                                                                






沒有留言:

張貼留言