2010-12-11 7 views

Antwort

1

Nun, der einfachste Ansatz besteht darin, einfach über das Bild zu schauen und ein Wörterbuch zu erstellen, das Pixelfarben auf Ints abbildet. Wenn für jedes Pixel die Farbe im Wörterbuch vorhanden ist, erhöhen Sie die Anzahl der Pixel. Wenn dies nicht der Fall ist, addieren Sie es mit einer Zählung von 1. Dies gibt Ihnen die Häufigkeit, mit der jede Farbe im Bild erscheint.

Dann nach Anzahl sortieren und Sie finden die 256 häufigsten Farben im Bild. Diese Farben bilden deine Palette.

Dann iterieren Sie erneut über das Bild. Suchen Sie für jedes Pixel die Palettenfarbe, die der Farbe dieses Pixels am nächsten kommt, und legen Sie den Index dieses Pixels auf diesen Palettenindex fest.

Das wird ein gutes "first go" sein, aber in Bildern mit vielen Farben ist es vielleicht nicht so gut, die Palette zu finden. In der Wörterbuchphase möchten Sie vielleicht Farben kombinieren, die "nah genug" sind, um zu vermeiden, dass viele sehr ähnliche Farben alle schlecht abschneiden, obwohl sie zusammen sehr häufig sind.

Für bessere Ergebnisse sollten Sie sich die Techniken dithering ansehen.

1

Das Problem wird Farbquantisierung genannt. Siehe zum Beispiel pngquant.

Wenn Sie nach Algorithmen suchen, dann suchen Sie nach Median Cut, Octtree, K-Means, Linde-Buzo-Grey, NeuQuant. Im Idealfall bei Google Scholar, da reguläre Ergebnisse durch Cloaking-Paywalls gespammt werden.

Verwandte Themen