s1091550 作業3

 題目敘述:

離散傅立葉轉換 DFT 練習 

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

開發環境:

  • Windows 10
  • Visual Studio 2019 C++
  • OpenCV 4.2.0

步驟說明:

讀入圖片後,此程式可看作是分成三部分呈現: 頻譜圖相位圖,及 還原後圖像 三項。以下逐步說明各部分之步驟:
  • 頻譜圖
  1. getOptimalDFTSize()+copyMakeBorder(): 返回最佳尺寸並將邊界以0填充,可加快傅立葉轉換的計算速度
  2. merge()        :建plannes數組,组合成一个多通道的數組,分别保存實部和虛部
  3. dft()             :離散傅立葉轉換
  4. split()           :將通道分離
  5. magnitude() :獲取幅度圖像
  6. 重新排列傅立葉圖像象限,使原點位於圖像中心
  7. 將ROI區域左上和右下、右上和左下分別互換位置
  8. log()             :用對數尺度替換線性尺度
  9. normalize()  :歸一化,將頻譜圖轉換為可圖的圖像格式
  10. imshow()     :將結果顯示,如下圖
  • 相位圖
  1. Sobel(): 計算梯度
  2. blur()   : 進行卷積去噪
  3. phase(): 計算相位
  4. normalize(): 歸一化,將相位圖轉換為可圖的圖像格式
  5. imshow(): 將結果顯示,如下圖
  • 還原後圖像
  1. 建plannes數組
  2. idft()             :逆離散傅立葉轉換
  3. split()           :將通道分離
  4. magnitude() :主要取實數通道
  5. normalize()  :歸一化
  6. imshow()     :將結果顯示,如下圖

Demo影片:    

      https://youtu.be/0v-yh-ZxH1Q

留言

這個網誌中的熱門文章

rzwang Homework #1

s1093350 Homework #2

s1081444 Homework #7