s1091659 作業3

 

 Assignment #3 DFT 練習


功能: 撰寫一個程式,以灰階模式讀取一張圖像 imread(path, IMREAD_GRAYSCALE) 

    1.撰寫傅利葉轉換程式將一張圖像轉換至頻域

    2.將頻譜大小與相位角度各以灰階256 色圖像方式呈現

    3.呈現還原後圖像

開發環境:

  • Windows 10
  • Visual Studio 2022
  • C++
  • Open CV 4.7.0
程式說明 :

0.將圖片以灰階圖輸入 



1.擴展至最佳尺寸m*n,在最佳尺寸的圖像上執行DFT可以更快地執行




2.在圖像邊緣補0值




3.創建planes[2],planes[0] 是 CV_32F1的實數部分, planes[1] 是 CV_32F2 的虛數部分    
   將planes[0] planes[1]用merge()合併成複數矩陣complex                                                                                  

4.進行傅立葉變換



5.將complex分成實數部分和虛數部分



6.計算幅值並進行對數轉換







7.傅立葉變換後的圖像左上和右下互換,右上和左下互換









8.正規化頻譜0~1並輸出
結果

9.用phase()取得相位圖,正規化0~255後輸出
結果

10.進行逆傅立葉轉換idft(),split()分成實數部分和虛數部分後計算幅值magnitude(),正規化0~1再輸出
結果


影片demo




留言

這個網誌中的熱門文章

rzwang Homework #1

s1093350 Homework #2

s1081444 Homework #7