作業說明:
離散傅立葉轉換DFT練習
請撰寫一個程式,讀取一張256色灰階圖像。
(1)計算輸入圖的離散傅立葉轉換結果,並將頻譜大小與相位角度各以灰階256色方式呈現出。
(2)對圖像利用Gaussian Low-Pass filter處理,輸出平滑後圖像。(程式利用課本的frequency filter步驟者可得滿分!)
開發環境:
Windows 10/cmd/python/openCV 4.5.1
開發原理:
傅立葉/反傅立葉(Fourier):以np.fft.fft2() 快速傅立葉變換得到頻率分佈,再
np.fft.fftshift() 函式
將中心位置轉移至中間,最終通過 Matplotlib顯示效果圖。
頻譜大小(Magnitude Spectrum):以cv2.dft將輸入影像轉換成 np.float32格式,此時輸
出的頻譜為一個複數,以cv2.magnitude(x, y, magnitude=None)將傅立葉轉換的雙通道
結果轉換為0~255的範圍,x為浮點型X座標值,即為實部,y則是虛部浮點型Y座標值。
Gaussian(Blurred) :以cv2.GaussianBlur(img, (5,5), 0)做轉換。其中(5,5),0表示高斯矩
陣長寬皆為5,標準差為0,openCV即會根據高斯矩陣自己計算,矩陣尺寸越大,標準差越
大,其模糊程度就越大。
相位角度(Phase angle):以np.angle直接根據複數的虛部和十部求出角度,默認的角度
是弧度。
圖片:
傅立葉 / 反傅立葉 / Gaussian(Blurred) /
頻譜大小(Magnitude Spectrum) / 相位角度(Phase angle)
沒有留言:
張貼留言