s1091536 作業3
1.題目說明:
撰寫傅利葉轉換程式(Forward Fourier Transform and Inverse Fourier Transform)將一張圖
像轉換至頻域後,將頻譜大小與相位角度各以灰階 256 色圖像方式呈現出,再呈現還 原後圖像。
2.開發環境:
Editor: PyCharm
Language: python 3.8
Package: OpenCV 4.7.0
3.操作:
“python .\hw3_1091536_DFT-cv.py”啟動程式。
一次出現原始影像、相位角度、頻譜大小圖與還原影像
4.方法及實作:
(a)概念&程式:
讀入影像
img = cv2.imread('image3.png', 0)
對影像開始傅立葉轉換
# Opnecv2傅立葉變換函數
# 需要將影象進行一次float轉換
result =
cv2.dft(np.float32(img), ...)
# 將頻譜低頻從左上角移動至中心位置
dft_shift =
np.fft.fftshift(result)
可視化頻譜圖&相位圖
# 頻譜影象雙連結複數轉換為 0-255 區間
magnitude_spectrum
= 20 * np.log(cv2.magnitude(...))
phase = cv2.normalize(cv2.phase(...), None, 0, 255, cv2.NORM_MINMAX).astype(np.uint8)
逆向傅立葉轉換,還原影像
# 逆傅立葉變換
ifshift =
np.fft.ifftshift(dft_shift)
inv_img =
cv2.idft(ifshift)
inv_img = cv2.magnitude(inv_img[:, :, 0], inv_img[:, :, 1])
留言
張貼留言