Perfekt danke! So werde ich es morgen Früh gleich machen
Perfekt danke! So werde ich es morgen Früh gleich machen
Aus dem Bild ist ja nicht ersichtlich ob die RGB Werte bis 511 oder 1023 gehen, aber was man machen kann ist (bei 1023) eine Schleife in der immer um 29 erhöht wird und verglichen wird ob der variable wert (R,G oder B) kleiner ist.
Wenn ja wird abgebrochen und einer der 36 Werte (0-9,A-Z) zugewiesen.
(Bsp.: xxx < 28 => erg = 0; xxx < 57 => erg = 1;.... xxx < 318 => erg = A)
Die Schleife durchlauft man für R,G, und B und wandelt damit die 1024 * 1024 *1024 möglichen Kombinationen in 36 * 36 * 36 Kominationen die jeweils durch einen 3 Stelligen String repräsentiert werden (000 bis ZZZ).
Jetzt kann man mit Case diesen String mit festgelegten (z.B. 00M für einen Blauton) Farben vergleichen.
Wobei 00M für folgende Messerwerte steht,
R000; G000; B666
bis
R028; G028; B695
Also im Schritt 1 durch Mehrfachmessungen und Mittelwertbildung Rauschen aus der Messung nehmen und stabilere Messwerte bekommen.
Im Schritt 2, die über eine Millionen möglichen Kombinationen reduzieren (im Beispiel auf rund Sechsundvierzigtausen).
Schritt 2, den Umstand nutzen, das man dies mit einem Zeichen Tripplet darstellen kann und Case nutzen um einzelne Farben zu definieren.
Welche Farben man bekommt, kann man zur Not mit wenigen Zeilen HTML und seinem Browser durch probieren.
Dort beträgt der Zahlenraum für die RGB-Werte von <bgcolor> halt 0-255.
Bei 0-1023 müsste man halt den Messwert erst durch 4 teilen und dann in eine Hex Zahl umwandeln bevor man das vergleichen kann.
Geändert von i_make_it (21.03.2018 um 05:44 Uhr)
Üblicherweise wird RGB Farbcode mit jeweils 0-255 pro Farbkanal angegeben. Enge also erst einmal alle Einzelwerte auf 1/4 ihres Wertes ein.
weiß wäre dann 255 255 255 in hex: ffffff
Magentarot 255 0 0 in hex: ff0000
Grün 0 255 0 in hex: 00ff00
Blau 0 0 255 in hex: 0000ff
Schwarz 0 0 0 in hex: 000000
usw.
oft verwendet man in Tabellen die Hex-Zahlen (je 2 Stellen, also 255 = (hex)FF ), aber das ist grundsätzlich egal, denn es ist ja nur eine andere Schreibweise derselben Zahlen.
Diese RGB Codes taugen aber nicht viel, wenn man damit detektierte Farben einem Ziel-Farbton zuordnen will und insb. auch wenn das noch für verschiedene Helligkeiten oder Farbsättigungen funktionieren soll,
z.B.: ist das, was ich sehe, jetzt noch rot, oder schon orange oder magenta?
oder: ist RGB 120 20 10 noch der selbe Farbton wie 240 40 20 oder 180 30 15 oder 100 16 8 oder 60 10 5?
dazu ist die Umwandlung in den HSV-Farbraum sinnvoller, damit werden z.B. auch die Farben auf einem Rubik's Cube leichter den Zielfarben zugeordnet, innerhalb bestimmter Toleranzen und Schwankungen. Z.B. Hellrot und Dunkelrot hätten dabei den gleichen, leicht erkennbaren Farbton.
Du nimmst also deine RGB-Farben, wandelst sie in HSV um, und dann geht die Farbzuordnung deutlich einfacher.
openCV (ein Programmpaket u.a. zur Farbrerkennung oder -Separierung) verwendet dazu z.B. auch HSV.
PS, edit:
Übersicht über die Farbraum-Kodierungen: http://start.farben.rehbein.net/
Geändert von HaWe (21.03.2018 um 11:00 Uhr)
Lesezeichen