2022年4月15日 星期五

s1081515 作業4


作業說明:

  • 計算輸入圖的離散傅立葉轉換結果,並將頻譜大小與相位角度各以灰階256色圖像方式呈現出。
  • 對圖像利用Gaussian Low-Pass filter處理,輸出平滑後圖像。
  • 程式利用課本的frequency filter步驟者可得滿分,在網頁中將每個步驟結果呈現出。直接套用opencv函數得一半分數。

使用環境/語言:

  • Windows11
  • Visual Studio 2019
  • Opencv-4.3.0
  • C++

程式說明:

  1. 輸入圖片名稱或路徑(如要輸入名稱請把圖片和.cpp檔放一起)
  2. 以灰階模式讀取圖片
  3. 將圖片進行padding(長和寬都是兩倍)
  4. 定義傅立葉轉換後要存取實部和虛部的地方
  5. 用merge()合成起來
  6. 進行dft()來取得所需資訊
  7. 用split()分離出實部和虛部
  8. 使用magnitude()和phase()算出頻譜圖和象位角
  9. 因為此時的値無法在電腦上顯示出來因此進行log(1 + M)的運算
  10. 將兩張圖進行象限交換的處理令最大值在圖片中中心後用normalize()再進行輸出
  11. 將padding後的圖片每個點乘上pow((-1), (x + y))
  12. 進行dft()來取得所需資訊
  13. 利用公式計算filter(D0設為50)  H
  14. 將傅立葉轉換出的實部和虛部個別乘上H後合成形成G
  15. 將G進行逆傅立葉轉換idft()
  16. 在任何一張圖按0鍵已取得最後結果(即normalize後的圖)
  17. 分離出實部後將其normalize()得出模糊後的圖

執行方式/畫面:

                                                       原圖:

頻譜圖:

相位角(phase):

相乘的頻譜大小:

Normalize():

參考資料:

https://blog.csdn.net/xddwz/article/details/110938652






沒有留言:

張貼留言