作業說明:
計算輸入圖的離散傅立葉轉換結果,並將頻譜大小與相位角度各以灰階256色圖像方式呈現出。
對圖像利用Gaussian Low-Pass filter處理,輸出平滑圖像。
開發環境:
- Window10
- Microsoft Visual Studio 2019
- C++
- OpenCv 4.5.5
程式說明:
(1)
- 輸入圖片名稱或路徑(如要輸入名稱請把圖片和.cpp檔放一起)
- 以灰階模式讀取圖片
- 將圖片進行padding(長和寬都是兩倍)
- 定義傅立葉轉換後要存取實部和虛部的地方
- 用merge()合成起來
- 進行dft()
- 用split()分離出實部和虛部
- 使用magnitude()和phase()算出頻譜圖和象位角
- 因為此時的値無法在電腦上顯示出來因此進行log(1 + M)的運算
- 將兩張圖進行象限交換的處理令最大值在圖片中中心後用normalize()再進行輸出
- 將padding後的圖片每個點乘上pow((-1), (x + y))
- 進行dft()
- 利用公式計算filter(D0設為50) H
- 將傅立葉轉換出的實部和虛部個別乘上H後合成形成G
- 將G進行逆傅立葉轉換idft()
- 分離出實部後將其normalize()得出模糊後的圖
執行結果:
原圖
沒有留言:
張貼留言