کاهش انواع نویز در تصاویر در پایتون
کدهای پروژه
# -*- coding: utf-8 -*-
“””Q1.ipynb
Automatically generated by Colaboratory.
Original file is located at
https://colab.research.google.com/drive/1cenqxfPWvsipF1v5TvHGOOcjteE-X2JH
“””
from skimage.io import imread
from skimage.util import random_noise,img_as_float64,img_as_uint
import matplotlib.pyplot as plt
import cv2
import numpy as np
“””<h1 style=”text-align:center;direction:rtl;”>نمایش تصاویر</h1>
“””
def plot(images,titles):
plt.figure(figsize=[20,10])
for i in range(3):
plt.subplot(1,3,i+1),plt.imshow(images[i],’gray’)
plt.title(titles[i])
plt.xticks([]),plt.yticks([])
plt.show()
“””<h1 style=”text-align:center;direction:rtl;”>نویزی کردن تصویر با نویز نمک و فلفل و حذف نویز با فیلتر MedianBlur</h1>
“””
#Salt and pepper noise
image1=imread(‘EX4-DataSet/Original/1.jpg’)
#—–add salt and pepper noise—–
noisy_image1=random_noise(image1,mode=’s&p’,amount=0.05,salt_vs_pepper=0.5)
noisy_image1=np.array(255*noisy_image1, dtype = ‘uint8’)
#———————————–
#—–Noise reduction—–
denoise_image1=cv2.medianBlur(noisy_image1,9)
#————————-
#—–show image—–
titles = [“Target image”, “Noised”, “Noise eliminated”]
images = [image1, noisy_image1, denoise_image1]
plot(images,titles)
#—————————–
“””<h1 style=”text-align:center;direction:rtl;”>نویزی کردن تصویر با نویز گوسی و حذف نویز با فیلتر Gaussian</h1>”””
#Gaussian noise
image2=imread(‘EX4-DataSet/Original/2.jpg’)
#—–add gaussian noise—–
noisy_image2=random_noise(image2,mode=’gaussian’,var=0.01)
#—————————-
#—–Noise reduction—–
denoise_image2=cv2.GaussianBlur(noisy_image2,(7,7),0)
#————————-
#—–show image—–
titles = [“Target image”, “Noised”, “Noise eliminated”]
images = [image2, noisy_image2, denoise_image2]
plot(images,titles)
#—————————–
“””<h1 style=”text-align:center;direction:rtl;”>نویزی کردن تصویر با نویز نقطه ای و حذف نویز با فیلتر wiener</h1>”””
#Speckle noise
from scipy.signal import wiener
image3=imread(‘EX4-DataSet/Original/3.jpg’)
#—–add Speckle noise—–
noisy_image3=random_noise(image3,mode=’Speckle’,var=0.01)
#—————————
#—–Noise reduction—–
denoise_image3=wiener(noisy_image3,(5,5))
#————————-
#—–show image—–
titles = [“Target image”, “Noised”, “Noise eliminated”]
images = [image3, noisy_image3, denoise_image3]
plot(images,titles)
#—————————–
“””<h1 style=”text-align:center;direction:rtl;”>نویزی کردن تصویر با نویز متناوب و حذف نویز با فیلتر برشی</h1>”””
#Periodic noise
image4=imread(‘EX4-DataSet/Original/4.jpg’)
#—–add periodic noise—–
x,y=np.meshgrid(range(image4.shape[1]),range(image4.shape[0]))
p=np.sin(x/3+y/5)+1
noisy_image4=(img_as_float64(image4)+p/2)/2
noisy_image4=img_as_uint(noisy_image4)
#—————————-
#—–fourier transfor—–
noisy_image4_fft = np.fft.fftshift(np.fft.fft2(noisy_image4))
#————————–
#—–masked—–
masked_fft=noisy_image4_fft.copy()
masked_fft[:,353:355]=255
masked_fft[:,285:287]=255
masked_fft[199:201,:]=255
masked_fft[226:228,:]=255
#—————-
#—–show fourier transfor and masked—–
titles = [“Noised”, “Fourier Transform”, “Mask Fourier Transform”]
images = [noisy_image4, noisy_image4_fft, masked_fft]
plt.figure(figsize=[20,10])
for i in range(3):
plt.subplot(1,3,i+1),plt.imshow(images[i],’gray’) if i==0 else plt.imshow(np.log(abs(images[i])),’gray’)
plt.title(titles[i])
plt.xticks([]),plt.yticks([])
#——————————————
#—–Noise reduction—–
denoise_image4 = abs(np.fft.ifft2(masked_fft))
#————————-
#—–show image—–
titles = [“Target image”, “Noised”, “Noise eliminated”]
images = [image4, noisy_image4, denoise_image4]
plot(images,titles)
#—————————–
دیدگاهتان را بنویسید