Algorithmus: MultiBlur

Lesezeit: 3 Minuten

Mittels Faltungsmatrix oder der internen PHP-Filterfunktion kann man nicht stark Weichzeichnen – es bedarf einer häufigeren Anwendung einer blur-Funktion.

Genau das mache ich mit dem MultiBlur-Filter.

Die PHP-Grafikgemeinde ist sich einig und viele Blogs wurden dazu schon geschrieben.

Eine gute Essenz vieler Vorschläge findet man hier: https://stackoverflow.com/questions/42759135/php-best-way-to-blur-images (mit weiterführenden Links)

Ablauf

Zuerst wird das Bild auf ein Viertel verkleinert, dann mehrfach ein Blur auf dieses Bild angewendet. Anschließend wir dieses Bild in der Größe verdoppelt (und ist damit halb so groß wie das Ausgangsbild). Nun wird ebenfalls mehrfach ein Blur angewendet, bevor das Bild abermals in der Größe verdoppelt wird, um schlussendlich wieder die Ausgangsgröße zu erhalten.

Implementierung

Ich passe den im obigen Link gezeigten Algorithmus etwas an und parametriere die Iterationen auf dem Viertel und dem Halbbild.

Ob ich (für Fotos sinnvoll, für Höhenmaps eher nicht) Aufhellung und Weichheit haben möchte, kann ich ebenfalls per Parameter einstellen.

Anwendung

In der definierten Struktur aus: PHP: Organisation der grafischen Algorithmen ist die Anwendung so:

2, 4, false, false

40, 20, false, false

Und mit 40, 20, true, true

Damit habe ich einen schönen Weichzeichner fürs richtig Grobe.

Weiterführende Links

Für die komplette Erklärung der Sandstruktur aus Mission on Mars: UV-Map generieren benötige ich noch einige Filter und Operationen für Bilder. Damit geht es in den nächsten Blogs weiter: Algorithmus: Noise

PHP-Code

Hier die gesamte Filterklasse:

 

 

Schreibe einen Kommentar

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