s1081414 作業3
主題:離散傅立葉轉換 DFT 練習
撰寫傅利葉轉換程式(Forward Fourier Transform and Inverse Fourier Transform)將一張圖 像轉換至頻域後,將頻譜大小與相位角度各以灰階 256 色圖像方式呈現出,再呈現還 原後圖像。
開發環境:
- Windows 10
- Visual Studio Code
- python 3.9.7
- OpenCV 4.7.0
說明:
f = np.fft.fft2(gray_img)
對灰度圖像
gray_img
做二維傅利葉轉換fshift = np.fft.fftshift(f)
將傅利葉轉換後的頻率域圖像進行中心化處理,
np.fft.fftshift()
函數會將傅利葉變換後的頻譜圖像的四個象限進行交換,使得圖像的中心點移動到左上角,這樣圖像的低頻分量就位於中心點附近,而高頻分量則分布在圖像的四周。此時可以進一步進行頻域分析和處理。f_ishift = np.fft.ifftshift(fshift)
restored_img = np.fft.ifft2(f_ishift)
restored_img = np.abs(restored_img)
restored_img = cv2.normalize(restored_img, None, 0, 255, cv2.NORM_MINMAX).astype(np.uint8)
逆傅利葉轉換得到還原後的圖像。
np.fft.ifftshift()
用來將零頻移到頻譜的左上角,np.fft.ifft2()
用來進行二維逆傅立葉轉換,np.abs()
取得轉換後的實部以獲取振幅資訊,cv2.normalize()
將還原後的圖像進行歸一化並轉換為 uint8
資料類型。最終得到的 restored_img
即為逆傅立葉轉換後的原始圖像。
留言
張貼留言