s1091403 作業3
1112 Digital Image Processing Assignment #3
主題: 離散傅立葉轉換 DFT 練習
作業說明:
撰寫傅利葉轉換程式(Forward Fourier Transform and Inverse Fourier Transform)
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
留言
張貼留言