# Farbwerte für Flächen aus einem Bild erkennen



## MyName (10. Mai 2012)

Hallo erstmal

also nachdem ich wirklich schon lange nach einer Lösung gesucht habe (sowohl bei Google, als auch hier im Forum...), dachte ich, ich frag ich jetzt einfach einmal nach, ob mir jemand helfen kann. Ich such vermutlich einfach nach den falschen Stichworten... 

Es geht (natürlich) um ein Java-Projekt. Unzwar habe ich ein Bild, bzw. ich lös eine Kamera aus, von der ein Bild kommt. Dieses Bild wird dann in 9 Kästchen unterteilt, die Erkennung der einzelnen Kästchen klappt auch wunderbar. 
Jetzt muss ich nur für jedes Kästchen herausfinden, welche Farbe auf diesem Kästchen zu sehen ist. Da auf dem Bild aber gleiche Farben nicht immer gleich rauskommen, zwecks unterschiedlicher Lichtreflexion der einzelnen Bereiche, gestaltet sich das relativ schwierig.
Innerhalb eines Kästchens habe ich mir überlegt, dass ich die RGB-Werte für einen bestimmten Range an Pixeln pro Kästchen einles und der Wert, der am häufigsten vorkommt, ist dann meine Kästchen-Farbe.

So weit so gut.
Aaaaber... ich bekomme nie und nimmer für alle Kästchen mit der gleichen Farbe haargenau die gleichen RGB-Werte raus, selbst wenn es "in natura" die gleichen Farben sind.
Jetzt war meine weitere Überlegung einfach Wertebereiche zu definieren in denen unterschiedliche Farben eben liegen, bspw. Gelb könnte zwischen 190028 und 210834 liegen (das sind jetzt nur irgendwelche ausgedachten Werte als Beispiel), sodass ich mit einer switch-case-Anweisung die eingelesenen Farbwerte eben einordnen kann... Aber genau diese Werte zum einordnen der Farben kann ich nirgends finden...


Weiß jemand von euch, wo ich nachschauen kann, welche "Farbwert-Bereiche" für welche Farben gelten?
Oder hat jemand von euch einen ganz anderen viel einfacheren Ansatz?

Wäre echt dankbar für jeden Tipp, das beschäftigt mich nämlich schon eine Weile.. :/

Vielen, vielen Dank schonmal!

Liebe Grüße


----------



## Marco13 (10. Mai 2012)

Umwandung der RGB-Farben in HSB wäre wohl der erste, nahe liegende Schritt. Schau auch mal in http://www.java-forum.org/allgemein...iten-bild-schnell-auszuwerten.html#post625984 (wurde auch kürzlich in http://www.java-forum.org/allgemeine-java-themen/134272-quadrat-bild-erkennen.html drüber geredet)


----------



## Hansdampf (10. Mai 2012)

Du könntest Color.RGBtoHSB(r,g,b,hsv) nehmen.
Von float[] hsv nur hsv[0] (hue) verwenden, die anderen kannst du ignorieren.
Damit bekommst du für z.B. für dunkelrot,rot,hellrot,gräulichrot usw. immer den selben Wert 0 (hue=0 ist rot).


----------



## MyName (10. Mai 2012)

Dankeschön! Das scheint wirklich der richtige Ansatz zu sein

Wenn ich die HSV-Werte miteinander vergleichen will, gibt es da jetzt einen Wert, wo ich sagen kann, ok ab dem sind sie unterschiedlich? Bspw. 0.5 oder 1.0? Oder sind die Werte dann egal ob dunkelrot oder hellrot immer gleich?


----------

