Ich arbeite an einem Programm, um zufällig ausgewählte Bilder als Desktop-Hintergrund zu verwenden. Jetzt haben nicht alle Bilder die gleiche Form wie ein Computermonitor. Eine Idee, die ich hatte, um damit umzugehen, ist, eine Hintergrundfarbe festzulegen, die dem Bild wahrnehmungsmäßig ähnlich ist. Wie würde ich vorgehen, um diese Farbe zu finden?
Die einfache RGB-Mittelung berücksichtigt keine Nichtlinearitäten wie Monitor-Gamma und befasst sich nicht mit dem menschlichen Sichtsystem.
color
human-vision
Kennzeichen
quelle
quelle
Antworten:
Sie könnten eine Art Farbquantisierungsalgorithmus ausprobieren, der im Allgemeinen die dominantesten N Farben extrahiert. Diejenige, auf die ich am häufigsten Bezug genommen habe, ist die modifizierte Medianschnittquantisierung [.pdf], die auf der Medianschnittquantisierung [.doc] basiert . Der Vorteil dieser Art von Algorithmus besteht darin, dass anstatt einfach jede Farbe im Bild zu mitteln, andere herausragende Farben extrahiert und verworfen werden, anstatt dass sie den Durchschnitt verschmutzen können.
Das Konzept besteht darin, dass der Farbraum (RGB-Raum) in an der 3D-Achse ausgerichtete rechteckige Bereiche unterteilt wird (das Papier nennt sie Vboxen) und durch Teilen von Vboxen iterativ unterteilt wird, wobei versucht wird, die Hälfte der Pixel auf jeder Seite der Teilung zu belassen. Das Ergebnis sind Farbcluster, die Farbclustern im Bild entsprechen sollten. Die größte Farbe hat eine hohe Wahrscheinlichkeit, dem Bild "wahrnehmungsmäßig ähnlich" zu sein.
Es gibt eine JavaScript-Implementierung und Demo dieses Algorithmus namens Color Thief .
quelle