s1081414 作業3

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

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

開發環境:

  •  Windows 10
  • Visual Studio Code
  • python 3.9.7
  • OpenCV 4.7.0

說明:

f = np.fft.fft2(gray_img)
對灰度圖像 gray_img 做二維傅利葉轉換

fshift = np.fft.fftshift(f)
將傅利葉轉換後的頻率域圖像進行中心化處理,np.fft.fftshift() 函數會將傅利葉變換後的頻譜圖像的四個象限進行交換,使得圖像的中心點移動到左上角,這樣圖像的低頻分量就位於中心點附近,而高頻分量則分布在圖像的四周。此時可以進一步進行頻域分析和處理。

f_ishift = np.fft.ifftshift(fshift)
restored_img = np.fft.ifft2(f_ishift)
restored_img = np.abs(restored_img)
restored_img = cv2.normalize(restored_img, None, 0, 255, cv2.NORM_MINMAX).astype(np.uint8)
逆傅利葉轉換得到還原後的圖像。np.fft.ifftshift() 用來將零頻移到頻譜的左上角,np.fft.ifft2() 用來進行二維逆傅立葉轉換,np.abs() 取得轉換後的實部以獲取振幅資訊,cv2.normalize() 將還原後的圖像進行歸一化並轉換為 uint8 資料類型。最終得到的 restored_img 即為逆傅立葉轉換後的原始圖像。







留言

這個網誌中的熱門文章

rzwang Homework #1

s1093350 Homework #2

s1061637 作業6