s1091447作業3

作業說明 :

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

 

參考網址: https://blog.csdn.net/Ibelievesunshine/article/details/104984775

開發環境: 

   Windows 11+ Visual Studio 2022 + OpenCV 4.7.0

程式碼說明:

第一個版本是使用np.fft.fft2(),第二個版本改成np.fft.fft()

 

第一個版本

1.     cv2.IMREAD_GRAYSCALE讀取灰度圖像。

2.     使用NumPynp.fft.fft2()函數計算一維傅立葉轉換。

3.     使用np.fft.fftshift()函數,將步驟1結果的低頻分量移到頻譜中心,以便更好地可分析頻譜。

4.     np.abs()函数計算傅立葉轉換的幅值,然後使用np.log()函數將其轉換為對數刻度,得到振幅頻譜。使用np.log()的原因是因為傅立葉變換後的頻譜最小值和最大值分別為10.62153154030341163185040.41939175

5.     np.angle()函數計算相位頻譜。

6.     逆傅立葉轉換,np.fft.ifftshift()函數將中心化的傅立葉轉換移到其原始位置。然後使用np.fft.ifft2()函數計算逆傅立葉轉換。使用np.abs()函數計算複數值的模數,以獲得逆傅立葉轉換的圖像。


第二個版本

1.     cv2.IMREAD_GRAYSCALE讀取灰度圖像。

2.     使用NumPynp.fft.fft()函數先對每個row做計算,之後再對每個col做計算。

3.     之後也是一樣用np.abs()np.log()函數得到振幅頻譜,np.angle()函數計算相位頻譜。

4.     逆傅立葉轉換是使用NumPynp.fft.fft()函數,先對每個row做計算,之後再對每個col做計算。   

 

留言

這個網誌中的熱門文章

rzwang Homework #1

s1093350 Homework #2

s1061637 作業6