Bildverarbeitung mit Python 100 Knock # 11 Glättungsfilter (Durchschnittsfilter)

Einführung

Hallo, ich bin Ramu. Dieses Mal werden wir einen Medianfilter implementieren, der Rauschen im Bild entfernt.

11. Glättungsfilter (Durchschnittsfilter)

Ein Glättungsfilter ist ein Filter, der ein Bild glättet. Durch Anwenden dieses Filters können Sie das gesamte Bild verschwommen erscheinen lassen.

Dieser Filter ersetzt das interessierende Pixel durch den Durchschnittswert der peripheren Pixel. Ein 3x3- oder 5x5-Durchschnittsfilter sieht beispielsweise folgendermaßen aus:

\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}

Unter der Annahme, dass das interessierende Pixel das Zentrum ist, sollte das interessierende Pixel durch die Summe der Produkte der peripheren Pixel und der entsprechenden Filterwerte ersetzt werden. Für einen 3 × 3-Filter ist $ I (x_0, y_0) × \ frac {1} {9} + I (x_0, y_1) × \ frac {1} {9} + ... I (x_2, y_2) × Ersetzen Sie das interessierende Pixel durch den Wert von \ frac {1} {9} $. Der Durchschnittswert der peripheren Pixel wird nun dem interessierenden Pixel zugewiesen.

Wie in der vorherigen Zeit kann die Filterverarbeitung nicht am Bildrand ausgeführt werden, sodass für nicht vorhandene Pixel eine 0-Auffüllverarbeitung mit 0 durchgeführt wird.

Quellcode

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 Auffüllvorgang
  _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()

  #Filtererstellung
  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)

  #Filterprozess
  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


#Bild lesen
img = cv2.imread('image.jpg')

#Durchschnittlicher Filter
img = meanFilter(img,9)

#Bild speichern
cv2.imwrite('result.jpg', img)
#Bildschirm
plt.imshow(cv2.cvtColor(img, cv2.COLOR_BGR2RGB))
plt.show()

ファイル名 ファイル名

Das Bild links ist das Eingabebild und das Bild rechts ist das Ausgabebild. Das Ausgabebild sieht verschwommen aus und Sie können sehen, dass es geglättet ist.

abschließend

Wenn Sie Fragen haben, können Sie sich gerne an uns wenden. imori_imoris Github hat die offizielle Antwort. Bitte überprüfen Sie dies ebenfalls. .. Da Python ein Anfänger ist, weisen Sie bitte auf Fehler hin.

Recommended Posts

Bildverarbeitung mit Python 100 Knock # 11 Glättungsfilter (Durchschnittsfilter)
Bildverarbeitung mit Python 100 Knock # 10 Medianfilter
Bildverarbeitung durch Python 100 Knock # 1 Kanalersatz
Bildverarbeitung mit Python 100 Knock # 12 Bewegungsfilter
Bildverarbeitung mit Python 100 Knock # 6 Farbreduktionsverarbeitung
Bildverarbeitung mit Python (Pillow)
100 Sprachverarbeitung Knock Kapitel 1 von Python
Python-Bildverarbeitung
Graustufen durch Matrix-Reinventor der Python-Bildverarbeitung-
Die Bildverarbeitung mit Python 100 führt zu einem durchschnittlichen Pooling von # 7
Bildverarbeitung mit Python 100 Knock # 9 Gauß-Filter
Kommunikationsverarbeitung durch Python
Erste Python-Bildverarbeitung
Bildverarbeitung mit Python
Bildverarbeitung durch Matrix Basics & Contents-Reinventor der Python-Bildverarbeitung-
Bildverarbeitung mit Python (Teil 2)
100 Sprachverarbeitungsklopfen mit Python 2015
100 Sprachverarbeitung Knock Kapitel 1 (Python)
100 Sprachverarbeitung Knock Kapitel 2 (Python)
Bildverarbeitung mit Python (Teil 1)
Bildverarbeitung mit Python (3)
Bildverarbeitungssammlung in Python
[Python] Bildverarbeitung mit Scicit-Image
Bildverarbeitung 100 Klopfen Q9, Q10 (Filter) Beschleunigung
Bildverarbeitung mit Python 100 Knock # 10 Medianfilter
Bildverarbeitung mit Python 100 Knock # 12 Bewegungsfilter
Bildverarbeitung mit Python 100 Knock # 9 Gauß-Filter
Bildverarbeitung mit Python 100 Knock # 11 Glättungsfilter (Durchschnittsfilter)
Python-Bildverarbeitung
Bildverarbeitung 100 Schläge ①
100 Sprachverarbeitungsklopfen mit Python (Kapitel 1)
100 Sprachverarbeitung Knock Kapitel 1 in Python
Persönliche Notizen für die Python-Bildverarbeitung
Die Bildverarbeitung mit Python 100 klopft an die Binärisierung Nr. 3
Bildverarbeitung 100 Klopfen Q9, Q10 (Filter) Beschleunigung
Python-Anfänger versucht 100 Sprachverarbeitung klopfen 2015 (05 ~ 09)
100 Bildverarbeitung mit Python Knock # 2 Graustufen
Python-Anfänger versucht 100 Sprachverarbeitung klopfen 2015 (00 ~ 04)
Lineares Zeichnen mit einer Matrix-Originalforschung von einem Neuerfinder der Python-Bildverarbeitung-
Grundlagen der binärisierten Bildverarbeitung durch Python
Socket-Kommunikation und Multithread-Verarbeitung durch Python
100 Sprachverarbeitung Knock-89: Analogie mit additiver Konstitutivität
"Data Science 100 Knock (Strukturierte Datenverarbeitung)" Python-007 Erläuterung
"Data Science 100 Knock (Strukturierte Datenverarbeitung)" Python-006 Erläuterung
"Data Science 100 Knock (Strukturierte Datenverarbeitung)" Python-001 Erläuterung
100 Sprachverarbeitungsklopfen mit Python (Kapitel 2, Teil 2)
Bildverarbeitung mit Python & OpenCV [Tonkurve]
"Data Science 100 Knock (Strukturierte Datenverarbeitung)" Python-002 Erläuterung
Verarbeiten Sie Bilder in Python ganz einfach mit Pillow
Analyse des Röntgenmikrotomographiebildes durch Python
[Python] 100 Schläge auf Data Science (strukturierte Datenverarbeitung) 021 Erläuterung
Bildverarbeitung 100 Klopfen Q.6. Erklärung der Farbreduktionsverarbeitung
"Data Science 100 Knock (Strukturierte Datenverarbeitung)" Python-005 Erläuterung
"Data Science 100 Knock (Strukturierte Datenverarbeitung)" Python-004 Erläuterung
[Python] 100 Schläge auf Data Science (strukturierte Datenverarbeitung) 020 Erläuterung
Leichte Bildverarbeitung mit Python x OpenCV
[Python] 100 Schläge auf Data Science (strukturierte Datenverarbeitung) 025 Erläuterung
"Data Science 100 Knock (Strukturierte Datenverarbeitung)" Python-003 Erläuterung
Faltungsfilterung durch Matrix-Reinventor der Python-Bildverarbeitung-
[Python] 100 Schläge auf Data Science (strukturierte Datenverarbeitung) 019 Erläuterung
Eintrag, bei dem Python-Anfänger ihr Bestes geben, um nach und nach 100 Sprachprozesse zu beenden
Affin-Konvertierung durch Matrix (Vergrößerung / Verkleinerung / Drehung / Scherung / Bewegung) - Erfinder der Python-Bildverarbeitung -
Python unerfahrene Person versucht, 100 Sprachverarbeitung 14-16 zu klopfen
Bildverarbeitung von Grund auf mit Python (5) Fourier-Transformation
Bildverarbeitung von Grund auf mit Python (4) Konturextraktion
Bildverarbeitung? Die Geschichte, Python für zu starten
Bildverarbeitung mit Python Environment Setup für Windows