Angenommen, ich habe ein Bild mit unspezifizierter Farbtiefe und Abmessungen.
Welche Möglichkeiten gibt es, dies auf eine n-Farbpalette zu komprimieren?
Mein Google-Fu ist schwach mit diesem.Methoden zum Erstellen einer Farbpalette aus einem Bild?
Antwort
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.
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.
- 1. Erzeuge Farbpalette aus einem Bild
- 2. Generate Farbpalette aus Bild mit ImageMagick
- 3. Algorithmus zum Erstellen von Fisheye-Effekt aus einem normalen Bild
- 4. Erstellen Sie eine XML aus einem Bild
- 5. Farbpalette
- 6. Verwenden von Karte zum Erstellen einer Liste aus einem Bereich
- 7. Effiziente Methode zum Erstellen einer Klasse aus einem Datagridview-Daten
- 8. eine dunkele, umgekehrt Farbpalette in Seaborn Erstellen
- 9. C# Performance-Methoden zum Empfangen von Daten aus einem Socket?
- 10. Erstellen Sie eine benutzerdefinierte Farbpalette in R
- 11. Farbpalette öffnen
- 12. Bild aus Daten erstellen URL
- 13. onClick Farbpalette
- 14. Java - Erstellen einer Reihe von Methoden
- 15. Erstellen einer Leinwand auf einem SVG (oder einem anderen Bild)
- 16. Zugriff auf die Farbpalette in einem XSSFWorkbook
- 17. Einen Menü (Farbpalette) aus Schleife durch Farben
- 18. Rekursion zum Erstellen einer Summenmethode
- 19. Erstellen einer SKTexture aus einem SKShapeNode
- 20. Erstellen einer Tabelle aus einem anderen
- 21. Erstellen einer kommagetrennten Zeichenfolge aus einem Objekt
- 22. Erstellen einer Quelle aus einem EventStream
- 23. Python bekommen Webseite Screenshot Farbpalette
- 24. Methoden zum Extrahieren von Orten aus Text?
- 25. Matplotlib Farbpalette
- 26. OllyDbg Farbpalette
- 27. Erstellen einer Rasterüberlagerung über Bild
- 28. Eine Methode zum Erstellen mehrerer Objekte oder mehrere Methoden zum Erstellen einzelner Objekte?
- 29. drupal: Standardmethode zum Erstellen eines Slugs aus einem String
- 30. R: Reduzierung der Farbsättigung einer Farbpalette