2022年4月14日 星期四

s1081543作業 4

 作業說明:

  • 計算輸入圖的離散傅立葉轉換結果,並將頻譜大小與相位角度各以灰階256色圖像方式呈現出。

  • 對圖像利用Gaussian Low-Pass filter處理,輸出平滑圖像。


開發環境:

  •       Window10   
  •       Microsoft Visual Studio 2019
  •       C++
  •       OpenCv 4.5.5

程式說明:

    (1)

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

執行結果:

                                      原圖


以灰階讀取並padding後

將基數點乘上-1

頻譜圖

像位角

H

G

結果



公式


























參考資料:

沒有留言:

張貼留言