Ich versuche, mit einer Farbkamera mehrere Objekte im Raum zu verfolgen. Jedes Objekt hat eine andere Farbe und um gut zwischen den einzelnen Objekten unterscheiden zu können, versuche ich sicherzustellen, dass sich jede einem Objekt zugewiesene Farbe von jeder Farbe eines anderen Objekts so stark wie möglich unterscheidet.
Im RGB-Raum haben wir drei Ebenen, alle mit Werten zwischen 0 und 255. In diesem Würfel möchte ich die n Farben so verteilen , dass es so viel gibt Abstand zwischen sich und anderen wie möglich. Eine zusätzliche Einschränkung besteht darin, dass ( 0 , 0 , 0 ) und ( 255 , 255 , 255 ) (oder so nah wie möglich an ihnen) in das n aufgenommen werden solltenFarben, weil ich sicherstellen möchte, dass keines meiner Objekte eine der beiden Farben annimmt, da der Hintergrund wahrscheinlich eine dieser Farben sein wird.
Wahrscheinlich wird (einschließlich schwarz und while) nicht mehr als ungefähr 14 sein.
Vielen Dank im Voraus für Hinweise, wie Sie diese Farben erhalten.
Antworten:
Alle Farben befinden sich auf der Oberfläche des RGB-Würfels, sofern ich mich nicht irre, aus demselben Grund, aus dem die gesamte elektrische Ladung auf der Oberfläche der elektrischen Leiter erscheint. Dies schlägt die folgende Methode zur Bestimmung der Farben vor:
Sobald Partikel konvergieren, können Sie Farben anordnen, indem Sie Punkte als Farben interpretieren. Anfänglich können Partikel mit geringem Abstand zufällig auf der Würfeloberfläche angeordnet werden (hilft bei Konvergenz- und Stabilitätsproblemen). Das Platzieren kleiner Gruppen auf den Flächen des Würfels sollte funktionieren.
Um zu vermeiden, dass Sie in einem lokalen (und nicht in einem globalen) Minimum stecken bleiben, können Sie nach der Konvergenz ein kleines zufälliges elektrisches Feld "pulsieren" und prüfen, ob das System zur gleichen oder zu einer anderen Konfiguration zurückkehrt. Es ist etwas unwahrscheinlich, dass zufällig platzierte Partikel dies in diesem Szenario tun, aber möglich.
BEARBEITEN:
Wie in den Kommentaren ausgeführt, gilt die Annahme, dass optimale Lösungen nur auf der Oberfläche liegen sollten, wahrscheinlich nicht für alle Geometrien im diskreten Fall.
Glücklicherweise hat dies wenig Einfluss auf den Rest der oben beschriebenen Technik. Partikel können anfänglich überall platziert werden; Lassen Sie einfach etwas Platz zwischen den Partikelpaaren, um Stabilität und Bedeckung zu gewährleisten, und iterieren Sie das System dann zur Konvergenz. Pulsieren Sie dann einige Male (möglicherweise mit zunehmender Intensität), um festzustellen, ob das System zu einer anderen (möglicherweise besseren) Konfiguration konvergieren kann .
Beachten Sie auch, dass ich glaube, dass diese Methode so etwas wie "(harmonische?) Durchschnittliche Entfernung zwischen Teilchenpaaren" maximiert. Wenn Sie den Mindestabstand zwischen Partikelpaaren oder einen anderen Durchschnitt (geometrisch?) Zwischen Partikelpaaren maximieren möchten, ist dies möglicherweise nicht die beste Lösung.
Ich bin auf jeden Fall der Meinung, dass diese Technik Ihnen eine einfache Möglichkeit bietet, gute, ungefähr optimale Farbsätze zu finden. Für Ihren Anwendungsfall ist es wahrscheinlich nicht erforderlich, tatsächliche "optimale" Lösungen zu erhalten. Wenn eine genaue und nachweislich optimale Lösung gewünscht wird, ist die numerische Simulation wahrscheinlich nicht der beste Weg.
quelle