作業說明
請撰寫一個程式,讀取一張 256 色灰階圖像。
(1) 計算輸入圖的離散傅立葉轉換結果,並將頻譜大小與相位角度各以灰階256色圖像方式呈現出。
(2) 對圖像利用 Gaussian Low-Pass filter 處理,輸出平滑後圖像。(程式利用課本的frequency filter 步驟者可得滿分!)
操作環境
macOS Big Sur
終端機
Python 3.7.3 / openCV 4.5.1
方法
第一部分:
1.用cv2.imread()讀取圖片
2.用np.fft.fft2()得到頻率(複數)
3.用np.fft.fftshift()把0頻率移至中心
4.將頻率取絕對值,再取對數得到magnitude
5.用np.angle()求相位角
6.用plt.savefig()輸出magnitude,angle
第二部分:
1.用cv2.dft()得到雙通道的頻率
2.用np.fft.fftshift()把0頻率移至中心
3.製作一個與原圖同大小的遮罩,中心點x,y軸正負60設為1,其餘為0
4.頻率x遮罩,保留低頻率的值
5.用np.fft.iffshift()將0頻率移回左上角
6.用cv2.idft()將頻率轉回圖片
7.用cv2.magnitude()合併時數和虛數
8.用plt.savefig()輸出圖片
結果:
1. 原圖
2. Magnitude
3. 相位角
4. Gaussian low_pass filter
沒有留言:
張貼留言