Algorithmus: Faltungsmatrix

Lesezeit: 3 Minuten

Viele grafische Filter können schnell mit sogenannten Faltungsmatrizen erledigt werden. Mit einem Schlag erhalte ich ein paar sehr nützliche Bildfilter.

Faltungsmatrix erklärt Wiki hier: https://de.wikipedia.org/wiki/Faltungsmatrix

Richtig verstehen, was eigentlich passiert, kann man hier: http://www.songho.ca/dsp/convolution/convolution2d_example.html

Der „Trick“ liegt eigentlich nur in der 3×3 Matrix, die man in die interne PHP-Funktion imageconvolution steckt.

Einige Beispiel-Matrizen gibt schon der Wiki-Artikel, andere habe ich hier her: https://cimage.se/doc/filters

Und speziell den Laplace-Filter findet man auch bei Wiki: https://de.wikipedia.org/wiki/Laplace-Filter

Anwendung

Meine interne Filterklasse, die ich nach den Regeln des Blogs PHP: Organisation der grafischen Algorithmen aufbaue, definiert diese Sammlung so:

Beispiele auf mein Voronoi-Wolkenbild

Die Benutzung ist denkbar einfach:

edgeL

emboss

blurG

Mit der entsprechenden Faltungsmatrix kann eine Menge erreicht werden. Unglücklicherweise bietet PHP derzeit lediglich eine 3×3 Matrix an – für kräftigere Effekte, wie z. B. einem echten  „Gaussian Blur“ wäre eine 7×7 Matrix wünschenswert.

Manchmal reicht es aus, den Blur mehrfach aufeinander auszuführen, aber für weitreichenderes Blurring benutze ich einen anderen Filter.

Weiterführende Links

Im nächsten Blog beschreibe ich den Filter MultiBlur: Algorithmus: MultiBlur

PHP-Code

Unspektakulär, aber schnell implementiert:

 

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.