Farben
-
class Color { public: int r, g, b; Color() { r = g = b = 0; } };
Ich habe zwei 24-Bit Farben c1 und c2.
Leider hat das RGB-Farbmodell ja die Eigenschaft, dass die drei Farbwerte einem relativ wenig darüber sagen, wie die Farbe "im Auge des Betrachters" aussieht. Zwei völlig unterschiedliche RGB-Kombinationen können quasi identisch aussehen.Bsp.:
(0, 0, 0) ist natürlich schwarz, aber (17, 11, 15) hat ganz andere Zahlenwerte und sieht trotzdem direkt daneben noch fast genau gleich schwarz aus.Fraaaaaaaaaaaage: Gibt es eine Möglichkeit, wie ich die Unterschiede umrechnen kann in harten Zahlen (z. B. 0 ... 1000 Unterschiedsskala für SCHWARZ vs. WEISS)??
Danke
-
Ich würde vorschlagen nach Hexadezimal...
http://www.ipsi.fraunhofer.de/~crueger/farbe/farb-www1.html
-
@CarstenJ: Danke, aber das ist nicht so direkt das, was ich suche.
Wenn ich dich richtig verstanden habe, schlägst du praktisch Folgendes vor:
color1 = (c1.r << 16) + (c1.g << 8) + c1.b; color2 = (c2.r << 16) + (c2.g << 8) + c2.b; differenz = color1 - color2;
Wenn ich das mache, werden die Farben aber total ungleich gewichtet. Wenn der Rotwert der beiden Farben nur leicht variiert (macht ja eigentlich gar nix aus für den Betrachter), dann ist der Differenzwert riesengroß, während der Blauwert, der ja dann in den niederwertigen Bits abgespeichert ist, gar keine Rolle mehr spielt.
==========================================
Es müsste doch eigentlich so was Ähnliches, was ich suche, auch bei der GIF-Kompression geben. Bei der GIF-Kompression werden doch auch die Farben des Bildes auf 256 reduziert. Also muss das Programm entscheiden können, wie ähnlich sich verschiedene Farben sind.
Weiß da irgendjemand was drüber?
-
Guck dir mal den HSI bzw. HSV Farbraum an. Vielleicht ist das etwas für dich.
-
Wie kann ich den RGB in die Formate konvertieren?
-
bitte keine Cross-Posts! Und benutz bitte bessere Topics!