Umwandlung L*a*b* zu RGB |
11.07.2004, 14:09 | pewode | Auf diesen Beitrag antworten » | ||||
Umwandlung L*a*b* zu RGB ich bin gerade auf dieses Forum gestoßen und könnte mir vorstellen, das ihr mir vielleicht helfen könntet. Ich habe vor einiger Zeit mal ein kleines Farbmetrikprogramm geschrieben. Was mir aber immer noch darin fehlt ist eine visualisierung der Farben. Da ich in diesem Programm mit L*a*b* Werten arbeite, meine benutzte Programmiersprache (rapidq) aber nur RGB Werte als Farben darstellen kann muß ich L*a*b* in RGB umwandeln. Auf folgender Seite habe ich Algoithmen gefunden: http://www.cs.rit.edu/~ncs/color/t_convert.html Demnach muß ich erst mal CIELAB (L*a*b*) in XYZ umwandeln:
Danach muß ich dann mittels Matrixberechnung XYZ in RGB umwandeln:
Falls von euch jemand lust hat mir zu helfen würde mich das sehr freuen. Gruß Peter |
||||||
12.07.2004, 16:19 | Ben Sisko | Auf diesen Beitrag antworten » | ||||
RE: Umwandlung L*a*b* zu RGB Hab mal einen neuen Thread aus dem Beitrag erstellt. |
||||||
13.07.2004, 11:37 | SirJective | Auf diesen Beitrag antworten » | ||||
Welche Schwierigkeit hast du mit dieser Umwandlung, pewode? Soweit ich sehe, fehlt in dem von dir zitierten Text eine Angabe von Xn,Yn,Zn, ohne die natuerlich die Umwandlung nicht moeglich ist. |
||||||
14.07.2004, 18:48 | pewode | Auf diesen Beitrag antworten » | ||||
Hallo Sir Jective, So wie ich das verstanden habe sind Xn,Yn,Zn nötig um den richtigen Weißabgleich zu berücksichtigen. Da es mir weniger um die absolut korrekte Darstellung einer Farbe geht, als vielmehr darum den Unteschied zwischen zwei Farben darzustellen, könnte ich die Berücksichtigung des Weißabgleiches vernachlässigen. Hm, ob ich dies erreichen kann indem ich Xn, Yn, und Zn jeweils auf 1 setze? Dann könnte ich doch folgendes machen, oder?: X = 1 * (((L* + 16) / 116) + a* / 500 ) 3 Y = 1 *(L* + 16) / 116) 3 Z = 1 * ( (L* + 16) / 116) - b* / 200 ) 3 Was hältst Du davon? |
||||||
18.07.2004, 14:25 | pewode | Auf diesen Beitrag antworten » | ||||
Hallo, ich habe jetzt im WWW ein Programm gefunden, das die Umrechnung beherrscht. http://perso.univ-lr.fr/pcourtel/html/cours/dea/Munsell.exe dadurch konnte ich überprüfen ob ich riichtig liege. Ich habe folgende L* a* b* Werte umgerechnet : L* 51,57 a* 42,14 b* 22,16 und habe folgende xyz Werte erhalten: x 0,296 y 0,197 z 0,105 Das Programm gibt folgende xyz Werte an: x 29,08 y 19,77 z 12,41 hm, x und y haben ja nur eine falsche Kommastelle... da könnte ich ja einfach mit 100 multiplizieren. Aber z liegt doch schon etwas daneben. Da die Farbe optisch nicht sehr weit entfernt ist würde ich gern erst mal gern so weiter machen. Ich müßte als nächstes aber unbedingt wissen wie ich diese Matrix berechne: [ R ] [ 3.240479 -1.537150 -0.498535 ] [ X ] [ G ] = [ -0.969256 1.875992 0.041556 ] * [ Y ] [ B ] [ 0.055648 -0.204043 1.057311 ] [ Z ] Ich habe keine Ahnung von Matritzenberechnung, bitte erklärt mir was ich da machen muß |
||||||
18.07.2004, 15:13 | Irrlicht | Auf diesen Beitrag antworten » | ||||
Hallo pewode, ist eine Matrixgleichung und gleichwertig zu diesem Gleichungssystem: r = 1*x + 2*y + 3*z g = 4*x + 5*y + 6*z b = 7*x + 8*y + 9*z Du kannst also aus den gegebenen x,y,z-Werten direkt r, g und b berechnen. Lieben Gruss, Irrlicht |
||||||
Anzeige | ||||||
|
||||||
21.07.2004, 17:01 | pewode | Auf diesen Beitrag antworten » | ||||
Vielen Dank für die Hilfe. damit kan ich wirklich was anfangen :] Bis zum nächsten Matheproblem dann Peter |
|
Verwandte Themen
Die Beliebtesten » |
|
Die Größten » |
|
Die Neuesten » |