So wenden Sie einen Filterkern an


8

Ein Filter, der für digitale Signale wie Audio-, Video- oder Bildverarbeitung verwendet werden kann, kann mithilfe einer Matrix ("Kernel") definiert werden, die die Umgebung gewichtet (dies ist eine Beschreibung, die ich in Vorlesungsunterlagen von jemand anderem gelesen habe).

Der Kernel definiert einen Erodierfilter .

(111111111)

Könnten Sie mir bitte sagen, wie dieser Kernel beispielsweise auf ein Bild (und damit auf ein 2D-Pixelfeld) angewendet wird? Vielen Dank im Voraus!


Der Begriff "Filter" erodiert hier etwas falsch, da es sich um eine stark nichtlineare Operation handelt. Filter im strengeren Sinne bezieht sich auf eine lineare zeitinvariante Operation. Die Faltung mit einem Kernel ist ein Filter, der den Erodierprozess nicht anwendet
Hilmar

1
IMO, die Antwort ist eine Zeile: Faltung. Forschung Faltung und die mathematische Gleichung und Implementierung der Faltung und das ist getan. (In diesem Fall würden Sie 2d Faltung machen).
Trevor Boyd Smith

1
Ich denke, die eigentliche Frage sollte lauten: "Wie filtert man etwas mit einem FIR-Filter?" oder "wie funktioniert die Faltung?" oder "Wie implementieren Sie Faltung?".
Trevor Boyd Smith

Dies ist kein Kernel, sondern ein Strukturierungselement. Daher wird es ganz anders angewendet. Siehe die Antwort von @ kolentebert unten. Einfach gesagt, es ist eine Form, die Sie einem Bild überlagern, um lokale Maxima / Minima zu extrahieren.
Sansuiso

Antworten:


2

Ihr Erodierfilter ist falsch. Der von Ihnen angegebene Link besagt, dass das Maximum der benachbarten Pixel ermittelt werden soll, und Ihr Array tut dies nicht. Stattdessen gibt es die Summe der benachbarten Pixel. Wenn Sie das Ergebnis normalisieren (da all diese Zusätze die Helligkeit erhöhen), werden Sie feststellen, dass Ihr Filter die benachbarten Pixel einfach gleichmäßig mittelt.

Im Allgemeinen nehmen Sie Ihr Bild auf und falten 3x3 Blöcke davon (oder wie groß der Filter auch sein mag) mit Ihrem Filter. Sie können dies aus Gründen der Geschwindigkeit auch parallel tun.


5

Um bei der Bildverarbeitung einen solchen Filter anzuwenden, iterieren Sie über alle Pixel des Eingabebilds und platzieren in jedem Schritt die Filtermaske über dem Bild, sodass sich ihre Mitte an Ihrem aktuellen Pixel befindet. Sie "bewerten" dann die Pixel in der Nachbarschaft, die von der Maske auf irgendeine Weise abgedeckt werden, und schreiben das Ergebnis zurück auf das aktuelle Pixel.

Für eine normale Faltung multiplizieren Sie jedes Element des Filters mit dem Wert des entsprechenden Pixels, addieren die Ergebnisse und schreiben die Summe in das aktuelle Pixel.

Erosion ist eine morphologische Operation, und Sie würden sie (auf einem Binärbild) implementieren, indem Sie prüfen, ob alle "1" -Werte Ihrer Maske über "1" Pixel im Bild liegen. In diesem Fall schreiben Sie eine "1" in das aktuelle Pixel (andernfalls eine "0").

Stellen Sie in beiden Fällen sicher, dass Sie Ihre Eingabepixel immer aus einer veränderten Version des Bildes lesen (anstatt das Bild direkt zu ändern).

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.