5

Ich denke über eine kleine Bibliothek zu schreiben eine Vermutung auf dem Namen einer (RGB-Wert) Farbe zu machen, aus einer vorgegebenen Liste von Kandidaten.AI/Statistische Methoden zur Bestimmung des Namen einer Farbe

Mein erster Versuch basierte rein auf dem pythagoreischen Abstand innerhalb des dreidimensionalen RGB-Farbraums - das war nicht sehr erfolgreich, da die meisten der genannten Farbpunkte an den Rändern des Raumes waren (zB Blau bei 0, 0, 255), also war für die meisten Farben in der Mitte des Raums die genannte Farbe, die ihr am nächsten kam, ziemlich willkürlich.

Also, ich bin über bessere Ansätze zu denken und haben mit einigen Kandidaten kommen

  • Zylinderabstand innerhalb eines HSV-Farbraum - was auch ähnliche Probleme wie die oben haben kann, scheint jedoch HSV in einem menschlichen Sinne sinnvoller sein als RGB, was nützlich sein könnte.

  • Entweder oben, aber jeder benannte Farbpunkt wird mit einem beliebigen Wert gewichtet, der die Stärke seiner Anziehung zu Punkten im umgebenden Raum angibt. Gibt es einen Namen für ein solches Modell? Ich weiß, das ist ein bisschen vage, aber es scheint mir eine ziemlich intuitive Idee zu sein.

  • Ein Bayessches Netzwerk, das Eigenschaften einer HSV-Farbe untersucht und den wahrscheinlichsten Farbnamen zurückgibt (ich stelle mir Knoten vor, die ähnlich sind wie P (Schwarz | Sättigung < 10), P (Rot | Farbton = 0) , dies ist jedoch weniger als ideal scheint -. zum Beispiel die Wahrscheinlichkeit, dass eine bestimmte Farbe rot ist, ist proportional zu, wie nahe seiner Farbe 0 ist, eher als ein diskreter Wert zu sein, ist es eine Möglichkeit, Bayes-Netze der Anpassung mit Wahrscheinlichkeiten umgehen das sind fortlaufend auf der Variablen zu testen?

  • Schließlich fragte ich mich, ob eine Art von Support Vector Machine-basierte Klassifizierung innerhalb der HSV oder RGB-Farbraum, aber nicht mit diesen massiv vertraut ist, bin ich mir nicht sicher ob das wil l bietet einen bestimmten Vorteil gegenüber dem pythagoräisch Abstand basierten Ansatz ich ursprünglich versucht, zumal ich nur mit einem dreidimensionalen Raum zu tun.

Deshalb habe ich mich gefragt, haben Sie Sie keine Erfahrung mit ähnlichen Problemen haben oder wissen, dass Ressourcen, die mir helfen könnte der Lage sein, auf einen Ansatz zu entscheiden? Wenn jemand könnte mich in der richtigen Richtung (ob es eine der oben ist, oder etwas ganz anderes) würde ich sehr dankbar sein.

Prost!

Tim

Antwort

5

Name that Color scheint den Namen zu bestimmen basierend sowohl auf die RGB- und HSL-Werten, vielleicht Sie etwas ähnliches verwenden könnte.

Nach einem kurzen Blick auf dem Skript mit, so scheint es, die Farbe zu wählen, die am nächsten an die gegebenen Farbe sowohl in Bezug auf RGB und HSL ist. Es ist im Grunde nur eine große Karte von vordefinierten Farben und tut nichts vorgerückt, wie gewichtete Werte, aber die große Menge an definierten Farbnamen angegeben, kann es ‚gut genug‘, je nach Ihren Anforderungen sein.

+0

ich liebe es: "Da ich ein typischer Typ bin, habe ich keine Ahnung, wie die Farben Lavender und Mauve aussehen. Also habe ich diese kleine App gemacht ..." –

+0

Aah, das ist interessant! Guter Punkt in Bezug auf die Einstellung einer großen Anzahl von Farbnamen, um nähere Übereinstimmungen zu finden - wird untersucht! – mistertim

0

Gibt es eine Möglichkeit, bayessche Netzwerke anzupassen, um mit Wahrscheinlichkeiten umzugehen, die auf der zu testenden Variablen kontinuierlich sind?

Ja.Ich bin nicht die beste Person, um dies zu beantworten, aber es sollte Informationen darüber geben, wie dies zu tun ist. Verwenden Sie einfach "kontinuierlich" während Ihrer Suche.

0

Für meine Antwort werde ich außerhalb der Baysian-Box denken. Wenn ich dieses Problem angehen müsste, würde ich einen von drei Ansätzen versuchen:

1) Fuzzy-Logik, vielleicht basierend auf empirischen Daten von Benutzern gesammelt. Es ist möglich, dass die Fuzzy-Logik erfasst und es leichter macht, automatisch zu folgern, was Leute meinen, wenn sie über Farben sprechen, besser als knappe statistische Maße. (Es gibt auch Techniken, die Baysian-Inferenz und Fuzzy-Logik, IIRC, kombinieren.)

2) Ich habe einmal mit der Idee herumgespielt, Kohonen-Netzwerke zu verwenden, um Farben automatisch zu klassifizieren. Ich habe es nicht sehr weit getrieben, aber die ersten Ergebnisse waren insofern vielversprechend, als sich Netzwerke auf Lösungen konzentrierten, die aus menschlicher Sicht angenehm und intuitiv waren. Die Knoten neigten dazu, sich in Mustern zu sammeln, die mit menschlichen Bezeichnungen wie "rot" oder "orange" zu korrespondieren schienen, und wiesen offensichtliche Übergangszonen wie "rot-orange" auf.

3) Ich habe auch einige Experimente gemacht, die genetische Algorithmen verwendet haben, um optimierte Paletten für bestimmte Bilder zu entwickeln. Wiederum habe ich es nicht sehr weit getrieben, aber die ersten Tests waren vielversprechend.