Schnelle Bitmap-Unschärfe für Android
In Android kann das Anwenden eines Unschärfefilters auf Bilder ein zeitaufwändiger Vorgang sein, insbesondere bei großen Bildern . Dies liegt daran, dass herkömmliche Methoden das Durchlaufen jedes Pixels des Bildes erfordern, was rechenintensiv sein kann.
Einführung eines schnelleren Algorithmus
Der Artikel stellt einen schnelleren Algorithmus vor als der Traditioneller Ansatz der Pixel-für-Pixel-Unschärfe. Dieser von Quasimondo portierte Algorithmus kombiniert Elemente der Box-Unschärfe und der Gaußschen Unschärfe.
Der Algorithmus erstellt einen „sich bewegenden Stapel“ von Farben, während er das Bild durchsucht. Dieser Stapel wird schrittweise aktualisiert, wobei auf der rechten Seite eine neue Farbe hinzugefügt und die Farbe ganz links entfernt wird. Die verbleibenden Farben oben auf dem Stapel werden abhängig von ihrer Position auf dem Stapel angepasst.
Implementierungsdetails
Das bereitgestellte Java-Code-Snippet implementiert den Algorithmus in Android. Es werden drei Parameter benötigt:
Der Algorithmus ist in zwei verschachtelte Schleifen unterteilt, eine für Zeilen und eine für Spalten. Innerhalb jeder Schleife berechnet der Algorithmus die Summen der Farben und aktualisiert sie mithilfe des Moving-Stack-Ansatzes.
Leistungsverbesserung
Dieser Algorithmus verbessert die Unschärfeleistung im Vergleich zu Pixel- Pixelweise Methoden. Bei einem 640x480-Bild benötigte der ursprüngliche Algorithmus 30 Sekunden zum Verwischen, während dieser Algorithmus diese Zeit auf etwa 5 Sekunden reduziert.
Hinweis
Das Code-Snippet enthält einen Fix für ein ArrayIndexOutOfBoundsException-Problem, das in bestimmten Fällen auftreten kann. Stellen Sie bei Android 11 und höher sicher, dass Sie StrictMath.abs anstelle von Math.abs verwenden, um die Ausnahme zu verhindern.
Das obige ist der detaillierte Inhalt vonWie können wir eine schnelle Bitmap-Unschärfe in Android erreichen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!