1. 作業說明
請撰寫一個程式,讀取一張256色灰階圖像。
(1) 計算輸入圖的離散傅立葉轉換結果,並將頻譜大小與相位角度各以灰階256色圖像方式呈現出。
(2) 對圖像利用Gaussian Low-Pass filter處理,輸出平滑後圖像。
2. 開發環境
Windows 10
Visual Studio Code 1.64
OpenCV 4.5.5.
3. 實作方法
(1)
1. cv2.IMREAD_GRAYSCALE 讀入灰階圖片
2. 用 getOptimalDFTSize() 還有 copyMakeBorder() ,存下實部和虛部,最後用 merge() 合併通道
3. dft()進行傅立葉轉換
4. split() 分離通道,以 magnitude() 取得頻譜,phase() 取得相位角,將複數轉為幅值
5. log() 對圖片做對數縮放
6. 對圖片幅度分布圖做中心化,最後normalized()控制值於 0,1 之間並輸出
(2)
1. cv2.IMREAD_GRAYSCALE 讀入灰階圖片
2. 建立一個 5*5 高斯低通卷積核矩陣 kernel,中心點權重偏重,水平垂直方向呈高斯分布,如下:
3. 自定義函數,先對圖片做邊緣擴充 kernel 大小
4. for loop 對圖片各個點做卷積,原圖各點圖像乘上 kernel 對應數並相加,最後將圖片截為原圖尺寸並回傳
5. 最後以 pyplot.imshow 以 cmap='gray' 輸出,對比原圖
4. 執行結果
Spectrum Magnitude
Phase
Guassian Low Pass
對比圖
原圖 Gaussian Low pass
沒有留言:
張貼留言