Salut, je suis Ramu. Cette fois, nous allons implémenter un filtre médian qui supprime le bruit dans l'image.
Un filtre médian est un filtre qui lisse et supprime le bruit des images. En appliquant ce filtre, vous pouvez rendre l'image entière floue.
Ce filtre remplace le pixel d'intérêt par la valeur médiane des pixels périphériques.
De plus, comme dans le temps précédent, le traitement de filtrage ne peut pas être effectué sur le bord de l'image, donc un traitement de remplissage à 0 utilisant 0 est effectué pour les pixels inexistants.
medianFilter.py
import numpy as np
import cv2
import matplotlib.pyplot as plt
def medianFilter(img,k):
w,h,c = img.shape
size = k // 2
#0 processus de remplissage
_img = np.zeros((w+2*size,h+2*size,c), dtype=np.float)
_img[size:size+w,size:size+h] = img.copy().astype(np.float)
dst = _img.copy()
#Processus de filtrage
for x in range(w):
for y in range(h):
for z in range(c):
dst[x+size,y+size,z] = np.median(_img[x:x+k,y:y+k,z])
dst = dst[size:size+w,size:size+h].astype(np.uint8)
return dst
#Lecture d'image
img = cv2.imread('image.jpg')
#Filtre médian
#Deuxième argument: taille du filtre
img = medianFilter(img,15)
#Enregistrer l'image
cv2.imwrite('result.jpg', img)
#Affichage de l'image
plt.imshow(cv2.cvtColor(img, cv2.COLOR_BGR2RGB))
plt.show()
Le côté gauche de l'image est l'image d'entrée, le centre de l'image est l'image de sortie par le filtre gaussien précédent et le côté droit de l'image est l'image de sortie actuelle. Vous pouvez voir que le filtre médian peut éliminer proprement le bruit ponctuel. Ce n'est pas une très bonne comparaison car les arguments sont différents, mais le filtre médian peut supprimer le bruit ponctuel plus proprement.
Si vous avez des questions, n'hésitez pas à nous contacter. [Github] de imori_imori (https://github.com/yoyoyo-yo/Gasyori100knock/blob/master/Question_01_10/answers_py/answer_6.py) a la réponse officielle, veuillez donc vérifier cela également. .. De plus, comme python est un débutant, veuillez signaler toute erreur.
Recommended Posts