Bildverarbeitung mit Python 100 Knock # 12 Bewegungsfilter

Einführung

Hallo, ich bin Ramu. Dieses Mal werden wir einen Bewegungsfilter implementieren, der dem Bild Bewegung hinzufügt.

12. Bewegungsfilter

Ein Glättungsfilter ist ein Filter, der ein Bild glättet. Durch Anwenden dieses Filters können Sie das gesamte Bild verschwommen erscheinen lassen. Insbesondere mit diesem Bewegungsfilter ist eine Flüssigkeitsunschärfe möglich.

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

\frac{1}{3} 0 0
0 \frac{1}{3} 0
0 0 \frac{1}{3}
\frac{1}{5} 0 0 0 0
0 \frac{1}{5} 0 0 0
0 0 \frac{1}{5} 0 0
0 0 0 \frac{1}{5} 0
0 0 0 0 \frac{1}{5}

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} {3} + I (x_1, y_1) × \ frac {1} {3} + I (x_2, y_2) × \ frac { Ersetzen Sie das interessierende Pixel durch den Wert 1} {3} $. Der Durchschnittswert der diagonalen Linien 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

motionFilter.py


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


def motionFilter(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 i in range(-1*size,k-size):
    ker[i+size,i+size] = 1/k

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

#Bewegungsfilter
#Zweites Argument: Filtergröße
img = motionFilter(img,21)

#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. Im Gegensatz zu anderen Glättungsfiltern fließt es auch in diagonaler Richtung des Filters.

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 # 12 Bewegungsfilter
Bildverarbeitung mit Python 100 Knock # 10 Medianfilter
Bildverarbeitung mit Python
Bildverarbeitung mit Python 100 Knock # 9 Gauß-Filter
Bildverarbeitung mit Python (Teil 2)
100 Sprachverarbeitungsklopfen mit Python 2015
Bildverarbeitung mit Python (Teil 1)
Bildverarbeitung mit Python (3)
Bildverarbeitung mit Python 100 Knock # 11 Glättungsfilter (Durchschnittsfilter)
[Python] Bildverarbeitung mit Scicit-Image
100 Sprachverarbeitungsklopfen mit Python (Kapitel 1)
100 Sprachverarbeitungsklopfen mit Python (Kapitel 3)
100 Bildverarbeitung mit Python Knock # 2 Graustufen
Python-Bildverarbeitung
Grundlagen der binärisierten Bildverarbeitung durch Python
100 Bildverarbeitung mit Python Knock # 8 Max Pooling
100 Sprachverarbeitungsklopfen mit Python (Kapitel 2, Teil 2)
Bildverarbeitung mit Python & OpenCV [Tonkurve]
Bildverarbeitung mit Python 100 Knock # 6 Farbreduktionsverarbeitung
100 Sprachverarbeitungsklopfen mit Python (Kapitel 2, Teil 1)
Zeichnen mit Matrix-Reinventor von Python Image Processing-
Verarbeiten Sie Bilder in Python ganz einfach mit Pillow
Die Bildverarbeitung mit Python 100 führt zu einem durchschnittlichen Pooling von # 7
Leichte Bildverarbeitung mit Python x OpenCV
Erste Python-Bildverarbeitung
Bildverarbeitung mit PIL
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 PIL (Pillow)
Hinweise zur HDR- und RAW-Bildverarbeitung mit Python
Akustische Signalverarbeitung mit Python (2)
Sortieren von Bilddateien mit Python (2)
Sortieren von Bilddateien mit Python (3)
100 Sprachverarbeitung Knock Kapitel 1 (Python)
100 Sprachverarbeitung Knock Kapitel 2 (Python)
Tweet mit Bild in Python
Bilddateien mit Python sortieren
Bildverarbeitung mit Python (Pillow)
Bildverarbeitungssammlung in Python
[Lass uns mit Python spielen] Bildverarbeitung zu Monochrom und Punkten
Schneiden Sie ein Bild mit Python aus
Grundlagen der Echtzeit-Bildverarbeitung mit opencv
[Python] Verwenden von OpenCV mit Python (Bildfilterung)
[Python] Einfache Parallelverarbeitung mit Joblib
100 Sprachverarbeitung Knock Kapitel 1 in Python
[Python] Verwenden von OpenCV mit Python (Bildtransformation)
Persönliche Notizen für die Python-Bildverarbeitung
Bildverarbeitung 100 Klopfen Q9, Q10 (Filter) Beschleunigung
Lassen Sie uns mit Python Image Scraping durchführen
Python-Anfänger versucht 100 Sprachverarbeitung klopfen 2015 (05 ~ 09)
Finden Sie Bildähnlichkeit mit Python + OpenCV
100 Sprachverarbeitung Knock Kapitel 1 von Python
Sende Bild mit Python und speichere mit PHP
Erzeugung von Verlaufsbildern mit Python [1] | np.linspace
Python-Anfänger versucht 100 Sprachverarbeitung klopfen 2015 (00 ~ 04)
Bildverarbeitung mit Python 100 Knock # 4 Otsu-Binarisierung (Diskriminierungsanalyse-Methode)
Erstellen Sie mit PySimpleGUI einen Bildverarbeitungs-Viewer
Erstellen Sie mit Python + PIL ein Dummy-Image.