離散傅立葉轉換DFT練習
題目說明
讀取一張256色灰階圖像,計算輸入圖的離散傅立葉轉換結果,並將頻譜大小跟相位角度各以灰階256色圖像方式呈現出
環境需求
- windows10
- python 3.7
- numpy 1.15.1
- opencv 4.0
- matplotlib 2.2.3
實作內容
一開始,我使用
numpy
套件中的np.fft.fft2()
函式,將原圖經過快速傅立葉轉換變成複數矩陣fft = np.fft.fft2(img)
origin image:
fft image:
由於原圖經過FFT轉換後,實數部分大於10^6以上,取對數值可以有效將數值限制在一定範圍之間
magnitude_spectrum = np.log(np.abs(fftshift))
為了能夠清楚分析頻域分布,我們需要將原點(0,0)移到圖像的中心(M/2,N/2)位置,將每點乘上(-1),用
np.fft.fftshift()
做轉換fftshift = np.fft.fftshift(fft)
位移圖像:
位移前的FFT圖:
位移後的FFT圖:
使用
np.angular()
公式求出原來的幅角ph_fftshift = np.angle(fftshift)
沒有留言:
張貼留言