s1093304 作業3

一、作業說明

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

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

二、開發環境

  • Windows 10
  • Visual Studio Code 1.76.1
  • Python 3.9.15
  • OpenCV 4.6.0

三、實作過程

  • 首先使用cv2.imread('image3.png', 0),以灰階方式讀取圖像。
  • 圖一、以灰階方式讀取圖片

  • 使用np.fft.fft2()對輸入圖像執行二維傅立葉轉換,並將其結果藉由np.fft.fftshift()進行中心化處理
    圖二、進行傅立葉轉換
  • 使用20 * np.log(np.abs(fshift))計算頻譜大小,得到magnitude_spectrum
  • 使用np.angle(fshift)計算頻譜的相位角度,得到phase_spectrum
  • 使用cv2.normalize(),將magnitude_spectrum和phase_spectrum進行正規化,轉成0~255 的灰階影像
  • 透過cv2.imshow顯示經過正規化後magnitude_spectrum和phase_spectrum的圖
    圖三、magnitude_spectrum (頻譜大小)
    圖四、phase_spectrum (相位角度)
  • 進行傅立葉反轉換 (np.fft.ifftshift將頻譜移到原點附近 → np.fft.ifft2進行反傅立葉轉換 → np.real再取實數部分)
    圖五、進行反傅立葉轉換
  • 再透過cv2.normalize()將restored_image正規化後,使用cv2.imshow顯示還原後的圖像
    圖六、還原後的圖像

留言

這個網誌中的熱門文章

rzwang Homework #1

s1093350 Homework #2

s1091537 Homework #1