s1091403 作業3

 1112 Digital Image Processing Assignment #3

主題: 離散傅立葉轉換 DFT 練習

作業說明:

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

(原圖)
                A將頻譜大小以灰階 256 色圖像方式呈現出




B將相位角度以灰階 256 色圖像方式呈現出



C呈現還原後圖像



 

開發環境:

Windows10

        Anaconda 3(22.9.0)

        Spyder 5.4.1

Python 3.9

Opencv(4.7.0)

Numpy(1.24.2)

程式片段(程式碼截圖在readme):


使用cv2.imread(file,cv2. cv2.IMREAD_GRAYSCALE)輸入灰階照片,其中cv2.IMREAD_GRAYSCALE能直接把照片轉換成灰階。在設定對應的函式回傳的圖片與顯示的視窗,顯示之後按任意鍵會消失。


使用np.fft.fft2()將原影像透過fft得到f,再透過np.fft.fftshift()把中心點移到中心的位置(fshift),再透過np.abs()np.log()取絕對值之後再取log再乘上20得到振福(f_log)np.angle()取得角度(f_angle),最後再使用cv2.normalize()分別將兩張圖進行規一化,使用cv2.NORM_MINMAX將陣列數直線性縮放到指定的範圍,獲得目標圖片(magnitude_spectrum, phase_spectrum)並輸出。


使用np.fft.ifftshift()fshift的中心點移回去(ifshift),再使用np.ifft.fft2()透過ifft轉換回去(if_img),再透過np.abs()取絕對值(iff_abs),再用cv2.normalize()分進行規一化,使用cv2.NORM_MINMAX將陣列數直線性縮放到指定的範圍,獲得目標圖片(iff_img)並輸出。

Demo影片: https://youtu.be/cYRqf3jNNm8

留言

這個網誌中的熱門文章

rzwang Homework #1

s1093350 Homework #2

s1091537 Homework #1