Files

2.7 KiB

Übung 4: Filterkern

Ein Filterkern ist eine n-dimensionale Matrix, mit der üblicherweise eine lokale und lineare Operation auf Pixel im Eingangsbild angewendet wird. In dieser Übung sollen Aufgaben mit Filterkernen manuell und mit Python gelößt werden.

Aufgabe a) Separierung

Unter Umständen ist ein 2-dimensionaler Filterkern separierbar, d.h. er durch zwei 1-dimensonale Filterkerne dargestellt werden.

Nehmen Sie die bereits separierten Filterkerne

und erstellen den ursprünglichen Filterken, sowohl "von Hand" als auch in einem Python Skript.

Betrachten und separieren Sie zusätzlich den Filterkern

wenn möglich (manuell und in Python)! Die Lösung findet sich in der Datei l_a.py.

Aufgabe b)

Stellen Sie sich vor, Sie wenden die separierten oder nicht separierten Filterkerne auf ein durchschnittliches Bild an. Wie viele Rechenoperationen pro Pixel führen Sie im Durchschnitt pro Pixel aus, wenn sie

  • einen separierten 3x3 Filterkern
  • einen nicht separierten 3x3 Filterkern

verwenden. Die Musterlösung befindet sich in der Datei l_b.md.

Aufgabe c)

Laden Sie ein beliebiges Bild ein und verwenden Sie die OpenCV-Methode cv2.filter2D() um Schärfefilter, Mittelwert-Filter und Kantenfilter auf das Bild anzuwenden. Die Musterlösung befindet sich in der Datei l_c.py.

Aufgabe d)

Modifizieren Sie die Aufgabe c), indem Sie nur den Mittelwert-Filter verwenden und diesen vergrößern. Verwenden Sie verschiedene Boundary Optionen durch das Argument borderType in der Funktion cv2.filter2D() und betrachten Sie das Ergebnis. Vergleichen Sie die verschiedenen Optionen cv2.BORDER_REFLECT, cv2.BORDER_REPLICATE und cv2.BORDER_CONSTANT. Visualisieren Sie weiterhin die Optionen, indem Sie einen Rand mit der Funktion cv2.copyMakeBorder() zu dem Bild hinzufügen. Die Musterlösung befindet sich in der Datei l_d.py.