s1081050 作業 3
離散傅立葉轉換 DFT 練習
目錄
作業說明
撰寫傅利葉轉換程式(Forward Fourier Transform and Inverse Fourier Transform)將一張圖
像轉換至頻域後,將頻譜大小與相位角度各以灰階 256 色圖像方式呈現出,再呈現還
原後圖像。
開發環境(google colab)
$ uname -srvmio
Linux 5.10.147+ #1 SMP Sat Dec 10 16:00:40 UTC 2022 x86_64 x86_64 GNU/Linux
$ gcc --version
gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0
$ pkg-config --modversion opencv4
4.2.0
程式碼說明
下載圖片
!wget https://i.imgur.com/gW6CJAG.jpg
載入套件
import cv2 as cv
import numpy as np
import matplotlib.pyplot as plt
主程式
def main():
#讀入灰階影像
img = cv.imread("gW6CJAG.jpg", cv.IMREAD_GRAYSCALE)
imgs = dict()
imgs[0] = img
# 將圖像轉換為頻域表示
f = np.fft.fft2(img)
fshift = np.fft.fftshift(f)
# 計算頻譜大小和相位角度
imgs[1] = np.log(np.abs(fshift))
imgs[2] = np.angle(fshift)
# 逆轉換
f_ishift = np.fft.ifftshift(fshift)
inv = np.fft.ifft2(f_ishift)
imgs[3] = np.abs(inv)
#輸出圖片
titles = ['Origin', 'Fourier SPEC', 'Phase', 'Inv']
for i in range(4):
plt.subplot(2,2,i+1)
plt.imshow(imgs[i], cmap='gray')
plt.title(titles[i])
plt.axis("off")
plt.show()
main()
留言
張貼留言