s1091707 作業3

  作業說明:

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

執行環境:

  • windows11
  • Opencv 4.6.0
  • Python 3.10.2
  • Vscode
實作方法:
  • 使用opencv內建函數完成
  1. 首先,用imread函式並指定grayscale讀入灰階圖片。

  2. 再來,使用dft轉換前須先將影像轉成float32格式,以及使用DFT_COMPLEX_OUTPUT來設定回傳值為複數陣列,其兩個通道,一個為實數部分,一個為虛數部分


  3. 為了處理方便將原本0頻率分量從左上角移至中央。


  4. 為了顯示影像必須再計算振幅值,在此使用magnitude計算第一個參數實部與第二個參數虛部的平方和的相加的平方根。最後再將幅值對映到灰階空間[0, 255],使用公式如下:
  5. arctan2(y,x)獲得平面上點(x,y)與正x軸之間的角度。

     6.正規化,用0到1之間的浮點值將矩陣變換為可視的影像格式
    

     7.進行逆傅立葉轉換前,先將零頻率分量恢復到原來的位置
    
     8.再進行逆傅立葉轉換
     9.在進行逆傅立葉後,獲得的值仍舊是複數,需使用MAGNITUDE計算其幅度

     10.正規化,用0到1之間的浮點值將矩陣變換為可視的影像格式
    

執行結果:
frequency spectrum:


phase spectrum:

還原後的圖:











留言

這個網誌中的熱門文章

rzwang Homework #1

s1093350 Homework #2

s1091537 Homework #1