s1093352 作業3

 離散傅立葉轉換 DFT 練習

  • 撰寫傅利葉轉換程式(Forward Fourier Transform and Inverse Fourier Transform)將一張圖像轉換至頻域後,將頻譜大小與相位角度各以灰階256 色圖像方式呈現出,再呈現還原後圖像。

開發環境: Window 10 + Visual Studio 2019 + OpenCV 3.4.1 


  1. imread() 讀取灰階圖片
  2. getOptimalDFTSize() 用來取得最佳的圖片尺寸
  3. copyMakeBorder() 來把padding 的部分補0
  4. planes()  多通道來儲存實數和虛數部分
  5. merge() 來合併planes
  6. dft() 來執行傅立葉轉換
  7. split() 來分離planes的實數和虛數部分
  8. magnitude() 來取得頻譜圖
  9. phase() 來取得相位圖
  10. log() 計算每組數值絕對值的自然對數來顯示傅立葉轉換的值
  11. 顯示頻譜圖之前先做shifting來重新排列傅立葉轉換圖片的四個象限,也就是原圖乘以-1^(x+y),來確保低頻在圖像中心 (amplitude是頻譜圖)

  12. 並normalize() 歸一化來把值設定在0~1之間
  13. idft() 來逆傅立葉轉換回去圖片

結果:

  1. 原圖

  2. 逆傅立葉轉換的圖片

  3. 頻譜圖





  4. 相位圖



留言

這個網誌中的熱門文章

rzwang Homework #1

s1093350 Homework #2

s1091537 Homework #1