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()

執行結果

tags: CS362 s1081050 HW3

留言

這個網誌中的熱門文章

rzwang Homework #1

s1093350 Homework #2

s1091537 Homework #1