s1091438 作業3
主題 離散傅立葉轉換 DFT練習
一、題目說明
撰寫傅利葉轉換程式(Forward Fourier Transform and Inverse Fourier Transform)將一張圖
像轉換至頻域後,將頻譜大小與相位角度各以灰階 256 色圖像方式呈現出,再呈現還原後圖像。
二、開發環境
OS : Windows 11
Editor : Visual Studio Code
Language : Python
Package : OpenCV - 4.7.0
Editor : Visual Studio Code
Language : Python
Package : OpenCV - 4.7.0
三、使用Function說明
(a) 原圖
1. imread() : 從檔案中讀取一張灰階圖像
(b) 傅立葉
1. cv2.dft() : 傅立葉轉換,將圖像轉由時域換為頻域
2. np.fft.fftshift() : 將傅立葉轉換後的頻譜中心移至圖像中心位置,便於觀察
3. cv2.magnitude() : 計算向量的長度(幅度),用於計算傅立葉變換的實部和虛部之間的歐幾
里得距離(兩點之間的直線距離),進而得到每個頻率的振幅值
4. np.log() : 為了增強高頻的幅度及降低低頻的幅度,使表現更明顯
(c) 相位角圖
1. cv2.phase() : 計算從傅立葉轉換得到的複數值中的相位角,相位角代表
每個頻率成分的相對相位關係
2. cv2.magnitude() : 此處用來計算相位角的大小,即相位頻譜
(d) 反轉傅立葉,將(b)的圖還原至(a)
1. np.fft.ifftshift() : 將中心化後的頻譜移回原位置
2. cv2.idft() : 逆傅立葉轉換,將頻域圖像轉換回時域圖像。
3. cv2.magnitude() : 此處用來計算逆變換後的圖像的大小。
(e) 展示圖片
1. 利用matplotlib繪圖函數plt.subplot展示四張圖片
四、實作例圖
(a)原圖片
(b)經傅立葉轉換後的圖片
(c)相位角圖片
(d)反轉傅立葉
留言
張貼留言