s1093705 作業3

 離散傅立葉轉換 DFT 練習

題目說明:

撰寫傅利葉轉換程式(Forward Fourier Transform and Inverse Fourier Transform)將一張圖

像轉換至頻域後,將頻譜大小與相位角度各以灰階256 色圖像方式呈現出,再呈現還

原後圖像。


開發環境:

  • Windows 11 
  • Visual Studio Code
  • Python 3.11.2 
  • Opencv 4.7.0


實作結果:


程式說明:

此次作業使用cv2, numpy, matplotlib 三個程式庫,分別使用於:影像處理、處理矩陣運算、繪製影像
import cv2
import numpy as np
from matplotlib import pyplot as plt


圖取照片
img = cv2.imread("image3.png", 0)


進行傅立葉轉換,在 numpy 程式庫裡面 fft 套件有 fft2() 函數可以使用,提供二維的傅立葉轉換。
f = np.fft.fft2(img)


二維傅立葉轉換之後,zero frequency component (零頻率) 會位於左上角,用 np.fft.fftshift(),讓兩個維度各自位移 \frac{N}{2} ,方便我們觀察頻譜分布狀況。
fshift = np.fft.fftshift(f)
magnitude_spectrum_shift = np.log(np.abs(fshift))


用 np.angle() 取得照片的相位角。
phase_angle = np.angle(f)


用 np.fft.ifft2() 做反傅立葉轉換。 

留言

這個網誌中的熱門文章

rzwang Homework #1

s1093350 Homework #2

s1091537 Homework #1