影像還原練習
目錄
作業說明
附件中的 image4 似乎受到某種頻域雜訊干擾,撰寫一個程式嘗試復原此圖像(將圖中雜
訊去除)。
開發環境(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/LXZJigk.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[2] = np.log(np.abs(fshift))
  # 去除高頻範圍
  for i in range(len(fshift)):
    for j in range(len(fshift[i])):
      if fshift[i][j] < 50000:
        fshift[i][j] = fshift[i][j] + 500
  imgs[3] = np.log(np.abs(fshift))
  f_ishift = np.fft.ifftshift(fshift)
  inv = np.fft.ifft2(f_ishift)
  # 發現去除效果不太好 所以改用blur
  imgs[1] = np.abs(inv)
  imgs[1] = cv.GaussianBlur(imgs[1], (45,45), 0)
  # 輸出圖片
  titles = ['Origin', 'Origin Fourier SPEC', 'Fix', 'Fix Fourier SPEC']
  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 HW4
 
 
 
留言
張貼留言