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

三、使用Function說明

       (a) 原圖

            1imread() : 從檔案中讀取一張灰階圖像

       (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() : 逆傅立葉轉換,將頻域圖像轉換回時域圖像。
           3cv2.magnitude() : 此處用來計算逆變換後的圖像的大小。

       (e) 展示圖片

            1. 利用matplotlib繪圖函數plt.subplot展示四張圖片

四、實作例圖

(a)原圖片
(b)經傅立葉轉換後的圖片
(c)相位角圖片
(d)反轉傅立葉

四、參考資料

五、實作影片





留言

這個網誌中的熱門文章

rzwang Homework #1

s1093350 Homework #2

s1091537 Homework #1