影像還原練習
目錄
作業說明
附件中的 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
留言
張貼留言