s1061637 作業3

主題離散傅立葉轉換 DFT 練習

作業要求:

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

開發環境:

  • Windows 11
  • Vscode
  • python
  • Open CV 4.7
作業步驟說明:

1.導入需要的import,並以灰階讀入圖片

2.使用getOptimalDFTSize( )得到最適合DFT轉換的影像尺寸,在一般情況中,圖像大小是2的冪次方會最快,而大小為 35 300 的乘積的陣列也為較快解。

得到最佳尺寸後,將圖片擴大並在擴大處補上0此處做法為先建立全黑圖,並將原本的圖片覆蓋。

(註:此題之圖片大小為960x1600,經函數處理後得到的仍為原值)

3.使用open cv中的cv2.dft(),對圖片進行二維離散傅立葉轉換,cv2.DFT_COMPLEX_OUTPUT可將實數與虛數分別儲存。使用ffshift()可將低頻率(0頻率,或稱直流分量)放置於中心,高頻率置於邊緣。    

4.      cv.magnitude()頻譜大小取其絕對值,對其+1後取log值以方便觀察。接著以cv.phase()取出相位角度。

5.將頻譜大小和相位角度正規化成0~255256色灰階圖



6.      plt.show()將圖片輸出結果如下


7.      將原圖回歸到原始位置,即直流分量放回邊緣。

8.      進行反離散傅立葉轉換cv2.idft(),最後計算複數值大小獲得圖像。


9.      輸出轉換結果,並與原圖對照。





留言

這個網誌中的熱門文章

rzwang Homework #1

s1093350 Homework #2

s1091537 Homework #1