Traitement d'image par filtre de lissage Python 100 knock # 11 (filtre moyen)

introduction

Salut, je suis Ramu. Cette fois, nous allons implémenter un filtre médian qui supprime le bruit dans l'image.

11ème: Filtre de lissage (filtre moyen)

Un filtre de lissage est un filtre qui lisse une image. En appliquant ce filtre, vous pouvez rendre l'image entière floue.

Ce filtre remplace le pixel d'intérêt par la valeur moyenne des pixels périphériques. Par exemple, un filtre moyen 3x3 ou 5x5 ressemble à ceci:

\frac{1}{9} \frac{1}{9} \frac{1}{9}
\frac{1}{9} \frac{1}{9} \frac{1}{9}
\frac{1}{9} \frac{1}{9} \frac{1}{9}
\frac{1}{25} \frac{1}{25} \frac{1}{25} \frac{1}{25} \frac{1}{25}
\frac{1}{25} \frac{1}{25} \frac{1}{25} \frac{1}{25} \frac{1}{25}
\frac{1}{25} \frac{1}{25} \frac{1}{25} \frac{1}{25} \frac{1}{25}
\frac{1}{25} \frac{1}{25} \frac{1}{25} \frac{1}{25} \frac{1}{25}
\frac{1}{25} \frac{1}{25} \frac{1}{25} \frac{1}{25} \frac{1}{25}

En supposant que le pixel d'intérêt est le centre, la somme des produits des pixels périphériques et des valeurs de filtre correspondantes doit être remplacée par le pixel d'intérêt. Pour un filtre 3 × 3, $ I (x_0, y_0) × \ frac {1} {9} + I (x_0, y_1) × \ frac {1} {9} + ... I (x_2, y_2) × Remplacez la valeur de \ frac {1} {9} $ par le pixel d'intérêt. Or, la valeur moyenne des pixels périphériques est affectée au pixel d'intérêt.

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.

Code source

meanFilter.py


import numpy as np
import cv2
import matplotlib.pyplot as plt


def meanFilter(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.uint8)
  _img[size:size+w,size:size+h] = img.copy().astype(np.uint8)
  dst = _img.copy()

  #Création de filtres
  ker = np.zeros((k,k), dtype=np.float)
  for x in range(-1*size,k-size):
    for y in range(-1*size,k-size):
      ker[x+size,y+size] = (1/k**2)

  #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.sum(ker*_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 moyen
img = meanFilter(img,9)

#Enregistrer l'image
cv2.imwrite('result.jpg', img)
#Affichage de l'image
plt.imshow(cv2.cvtColor(img, cv2.COLOR_BGR2RGB))
plt.show()

ファイル名 ファイル名

L'image de gauche est l'image d'entrée et l'image de droite est l'image de sortie. L'image de sortie semble floue et vous pouvez voir qu'elle est lissée.

en conclusion

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

Traitement d'image par filtre de lissage Python 100 knock # 11 (filtre moyen)
Traitement d'image par Python 100 knock # 10 filtre médian
Traitement d'image par le remplacement du canal Python 100 Knock # 1
Traitement d'image par Python 100 knock # 12 motion filter
Traitement d'image par Python 100 Knock # 6 Traitement de réduction de couleur
Traitement d'image par python (Pillow)
100 Language Processing Knock Chapitre 1 par Python
traitement d'image python
Échelle de gris par matrice-Reinventor of Python image processing-
Traitement d'image avec Python 100 knocks # 7 pooling moyen
Traitement d'image par Python 100 knock # 9 Filtre Gaussien
Traitement de la communication par Python
Premier traitement d'image Python
Traitement d'image avec Python
Traitement d'image par matrice Basics & Contents-Reinventor of Python image processing-
Traitement d'image avec Python (partie 2)
100 coups de traitement du langage avec Python 2015
100 Language Processing Knock Chapitre 1 (Python)
100 Language Processing Knock Chapitre 2 (Python)
Traitement d'image avec Python (partie 1)
Traitement d'image avec Python (3)
Collection de traitement d'image en Python
[Python] Traitement d'image avec scicit-image
Traitement d'image 100 coups Q9, Q10 (filtre) speedup
Traitement d'image par Python 100 knock # 10 filtre médian
Traitement d'image par Python 100 knock # 12 motion filter
Traitement d'image par Python 100 knock # 9 Filtre Gaussien
Traitement d'image par filtre de lissage Python 100 knock # 11 (filtre moyen)
traitement d'image python
Traitement d'image 100 coups ①
100 traitements de langage avec Python
100 Language Processing Knock Chapitre 1 en Python
Notes personnelles pour le traitement d'images python
Traitement d'image avec la binarisation Python 100 knocks # 3
Traitement d'image 100 coups Q9, Q10 (filtre) speedup
Le débutant en Python a essayé 100 traitements de langage Knock 2015 (05 ~ 09)
100 traitement d'image par Python Knock # 2 Échelle de gris
Le débutant en Python a essayé 100 traitements de langage Knock 2015 (00 ~ 04)
Dessin linéaire avec une matrice - Recherche originale par un réinventeur du traitement d'image Python -
Bases du traitement d'images binarisées par Python
Communication socket et traitement multi-thread par Python
100 Language Processing Knock-89: Analogie avec la constitution additive
"Data Science 100 Knock (traitement de données structurées)" Explication Python-007
"Data Science 100 Knock (traitement des données structurées)" Explication Python-006
"Data Science 100 Knock (traitement des données structurées)" Explication Python-001
100 traitements de langage avec Python (chapitre 2, partie 2)
Traitement d'image avec Python et OpenCV [Tone Curve]
"Data Science 100 Knock (traitement des données structurées)" Explication Python-002
Traitez facilement des images en Python avec Pillow
Analyse d'image de microtomographie à rayons X par Python
[Python] 100 coups sur la science des données (traitement de données structurées) 021 Explication
Traitement d'image 100 coups Q.6. Explication du traitement de réduction de couleur
"Data Science 100 Knock (traitement des données structurées)" Explication Python-005
"Data Science 100 Knock (traitement de données structurées)" Explication Python-004
[Python] 100 coups sur la science des données (traitement de données structurées) 020 Explication
Traitement d'image léger avec Python x OpenCV
[Python] 100 coups sur la science des données (traitement de données structurées) 025 Explication
"Data Science 100 Knock (traitement des données structurées)" Explication Python-003
Filtrage par convolution par matrice-Reinventor of Python image processing-
[Python] 100 coups sur la science des données (traitement de données structurées) 019 Explication
Entrée où les débutants en Python font de leur mieux pour frapper petit à petit 100 processus de langage
Conversion d'affine par matrice (agrandissement / réduction / rotation / cisaillement / mouvement) -Réinventeur du traitement d'image Python-
Une personne inexpérimentée en Python essaie de frapper 100 traitement du langage 14-16
Traitement d'image à partir de zéro avec python (5) Transformation de Fourier
Traitement d'image à partir de zéro avec python (4) Extraction de contour
Traitement d'image? L'histoire du démarrage de Python pour
Traitement d'image avec la configuration de l'environnement Python pour Windows