影像還原練習

目錄

作業說明

附件中的 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

留言

這個網誌中的熱門文章

rzwang Homework #1

s1093350 Homework #2

s1091537 Homework #1