Bildverarbeitung mit Python 100 Knock # 9 Gauß-Filter

Einführung

Hallo, ich bin Ramu. Dieses Mal werden wir einen Gaußschen Filter implementieren, der Rauschen im Bild entfernt.

9. Gaußscher Filter

Der Gaußsche Filter ist ein Filter, der das Bild glättet. Durch Anwenden dieses Filters können Sie das gesamte Bild verschwommen erscheinen lassen.

In diesem Filter werden die peripheren Pixel des interessierenden Pixels durch die Gaußsche Verteilung gewichtet, und je näher am mittleren Pixel des Filters liegt, desto größer ist das Gewicht. Die Gewichtung nach Gaußscher Verteilung ist wie folgt definiert.

g(x,y) = \frac{1}{2\pi\sigma^2}e^{-\frac{x^2+y^2}{2\sigma^2}}

Beispielsweise werden die folgenden Filter häufig für 3x3- und 5x5-Gauß-Filter verwendet. Wenn Sie für das Argument s etwa $ σ = 0,85 $ angeben, ist dies wahrscheinlich dieser Wert.

\frac{1}{16} \frac{2}{16} \frac{1}{16}
\frac{2}{16} \frac{4}{16} \frac{2}{16}
\frac{1}{16} \frac{2}{16} \frac{1}{16}
\frac{1}{256} \frac{4}{256} \frac{6}{256} \frac{4}{256} \frac{1}{256}
\frac{4}{256} \frac{16}{256} \frac{24}{256} \frac{16}{256} \frac{4}{256}
\frac{6}{256} \frac{24}{256} \frac{36}{256} \frac{24}{256} \frac{6}{256}
\frac{4}{256} \frac{16}{256} \frac{24}{256} \frac{16}{256} \frac{4}{256}
\frac{1}{256} \frac{4}{256} \frac{6}{256} \frac{4}{256} \frac{1}{256}

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} {16} + I (x_0, y_1) × \ frac {2} {16} + ... I (x_2, y_2) × Ersetzen Sie das interessierende Pixel durch den Wert \ frac {1} {16} $.

Da die Bildkante nicht gefiltert werden kann, wird 0 für nicht vorhandene Pixel verwendet. Dies wird als 0-Auffüllung bezeichnet.

Quellcode

gaussianFilter.py


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


def gaussianFilter(img,k,s):
  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/(2*np.pi*(s**2)))*np.exp(-1*(x**2+y**2)/(2*(s**2)))

  ker /= ker.sum()

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

#Gaußscher Filter
#2. Argument: Filtergröße, 3. Argument: Standardabweichung(σ)
img = gaussianFilter(img,21,2)

#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. Sie können sehen, dass das punktuelle Geräusch reduziert wird.

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 # 9 Gauß-Filter
Die Bildverarbeitung mit Python 100 klopft an die Binärisierung Nr. 3
100 Bildverarbeitung mit Python Knock # 2 Graustufen
Bildverarbeitung mit Python
Bildverarbeitung mit Python 100 Knock # 10 Medianfilter
100 Bildverarbeitung mit Python Knock # 8 Max Pooling
Bildverarbeitung mit Python 100 Knock # 12 Bewegungsfilter
Die Bildverarbeitung mit Python 100 führt zu einem durchschnittlichen Pooling von # 7
Bildverarbeitung mit Python (Teil 2)
Bildverarbeitung mit Python (Teil 1)
Bildverarbeitung mit Python (3)
[Python] Bildverarbeitung mit Scicit-Image
Python-Bildverarbeitung
Bildverarbeitung 100 Schläge ①
Grundlagen der binärisierten Bildverarbeitung durch Python
Bildverarbeitung mit Python & OpenCV [Tonkurve]
Zeichnen mit Matrix-Reinventor von Python Image Processing-
Verarbeiten Sie Bilder in Python ganz einfach mit Pillow
Leichte Bildverarbeitung mit Python x OpenCV
Bildverarbeitung mit Python 100 Knock # 4 Otsu-Binarisierung (Diskriminierungsanalyse-Methode)
Bildverarbeitung mit MyHDL
Erste Python-Bildverarbeitung
Bildverarbeitung mit PIL
Erste Schritte mit Python mit 100 Klopfen bei der Sprachverarbeitung
Bildverarbeitung von Grund auf mit Python (5) Fourier-Transformation
Bildverarbeitung von Grund auf mit Python (4) Konturextraktion
Bildverarbeitung mit Python Environment Setup für Windows
Bildverarbeitung mit Python 100 Knock # 11 Glättungsfilter (Durchschnittsfilter)
100 Sprachverarbeitungsklopfen mit Python 2015
Bildverarbeitung mit PIL (Pillow)
"Apple-Verarbeitung" mit OpenCV3 + Python3
Hinweise zur HDR- und RAW-Bildverarbeitung mit Python
Bildbearbeitung mit Python OpenCV
Akustische Signalverarbeitung mit Python (2)
100 Schläge bei der Bildverarbeitung !! (011-020) Frühes Spiel
[Python] Filtern Sie Tabellenkalkulationen mit gspread
Sortieren von Bilddateien mit Python (2)
Sortieren von Bilddateien mit Python (3)
100 Klopfen bei der Bildverarbeitung !! (001 - 010) Vorsichtig und vorsichtig
Tweet mit Bild in Python
Bilddateien mit Python sortieren
[Kapitel 3] Einführung in Python mit 100 Klopfen Sprachverarbeitung
Bildverarbeitung mit Python (Pillow)
[Kapitel 2] Einführung in Python mit 100 Klopfen Sprachverarbeitung
Bildverarbeitungssammlung in Python
[Kapitel 4] Einführung in Python mit 100 Klopfen Sprachverarbeitung
[Lass uns mit Python spielen] Bildverarbeitung zu Monochrom und Punkten
Schneiden Sie ein Bild mit Python aus
[Python] Einfache Parallelverarbeitung mit Joblib
100 Sprachverarbeitungsklopfen mit Python (Kapitel 1)
[Python] Verwenden von OpenCV mit Python (Bildtransformation)
100 Sprachverarbeitungsklopfen mit Python (Kapitel 3)
Persönliche Notizen für die Python-Bildverarbeitung
Lassen Sie uns mit Python Image Scraping durchführen
Finden Sie Bildähnlichkeit mit Python + OpenCV
Erzeugung von Verlaufsbildern mit Python [1] | np.linspace
Medianfilter mit Röntgenstrahl (Medianfilter)
Bildverarbeitung mit Python 100 Knock # 10 Medianfilter
HTML-Mail mit Bild zum Senden mit Python
Bildverarbeitung durch Python 100 Knock # 1 Kanalersatz