1.作業說明:
請撰寫一個程式,讀取一張256色灰階圖像。
(1) 計算輸入圖的離散傅立葉轉換結果,並將頻譜大小與相位角度各以灰階256色圖像方式呈現出。
(2) 對圖像利用Gaussian Low-Pass filter處理,輸出平滑後圖像。
(程式利用課本的frequency filter步驟者可得滿分,在網頁中將每個步驟結果呈現出。直接套用opencv函數得一半分數。)
2. 開發環境:
Windows 10
OpenCV 4.5.5
Python 3.7
3. 實作方法:
(1)
•
先利用imread將照片輸入
•
由cv2.dft(np.float32(img), flags = cv2.DFT_COMPLEX_OUTPUT)函式進行傅立葉轉換
•
以np.fft.fftshift(dft)將输出的零頻率分量移到中心
•
extract magnitude and phase
images : cv2.cartToPolar(dft_shift[:,:,0], dft_shift[:,:,1])
•
get spectrum : np.log(mag) /20
(2)
•
參考PIL原始檔的ImageFilter.py
•
高斯的計算公式: res1=1/(2*math.pi*self.sigema*self.sigema)
•
res2=math.exp(-(x*x+y*y)/(2*self.sigema*self.sigema))
4.結果:
• (1)
•
•
•
沒有留言:
張貼留言