RGB --> XYZ Problem

Gast #2865285
Lesenswert?

Hallo zusammen,

hab das hier n bisschen durchforstet, habe aber nichts gefunden, was mir 
wirklich hilft.

Ich habe das Problem, dass ich aus RGB Primärvalenzen XYZ Werte 
errechnen will.

Probiert habe ich das ganze mal am Adobe-RGB Farbraum (1998) mit 
folgenden Primärvalenzen:

  Rot   Grün   Blau   Weiß (D65)
x   0,640   0,210   0,150   0,3127
y   0,330   0,710   0,060   0,3290
z   0,030   0,080   0,790   0,3583

Jetzt will ich daraus die Matrix aufstellen und geh dabei nach folgender 
Seite vor:

http://www.brucelindbloom.com/index.html?Eqn_RGB_XYZ_Matrix.html

Mein Problem ist: Ich komme nicht auf die gegebene Umrechnungsmatrix von

0.5767309  0.1855540  0.1881852
0.2973769  0.6273491  0.0752741
0.0270343  0.0706872  0.9911085

sondern auf eine Matrix, die ungefähr um den Faktor 3,04 daneben liegt 
und finde den Fehler einfach nicht. Hat jemand ne Idee woran das liegen 
könnte?

Vielen Dank im Voraus
KlausMausi
Gast #2865328
Lesenswert?

Nope, Matrix wurde invertiert. Mich wundert halt, dass es ein Faktor 
ist, um den die gesamte Matrix falsch ist.

Oder hast du das grade durchgerechnet und kommst auf die Matrix, weil 
dann weiß ich wirklich nicht mehr weiter, wo mein Fehler liegt. Kann 
ansonsten gleich mal den gesamten Rechenweg posten
Gast #2865387
Lesenswert?

Also:

ausgehend von

 Rot   Grün   Blau   Weiß (D65)
x   0,640   0,210   0,150   0,3127
y   0,330   0,710   0,060   0,3290
z   0,030   0,080   0,790   0,3583


komme ich auf

     Rot     Grün    Blau
X   64/33    21/71    5/2
Y     1        1       1
Z   1/11      8/71   79/6


Dann ergibt sich für den S-Vektor

Sr = 0.09782649686
Sg = 0.2064026133
Sb = 0.02477088984

Daraus folgt als Matrix M (auf vier Stellen gerundet)

   0.1897   0.0610   0.0619
M= 0.0978   0.2064   0.0248
   0.0089   0.0233   0.3262

Folgende Faktoren ergeben sich:

Im Vergleich mit der Matrix, die eigentlich rauskommen sollte, ergibt 
sich dann

[errechnete Matrix] * (3.04) = [gegebene Matrix]
#2865431
Lesenswert?

KlausMausi schrieb:

> Dann ergibt sich für den S-Vektor
>
> Sr = 0.09782649686
> Sg = 0.2064026133
> Sb = 0.02477088984

Ich krieg da andere Werte raus

Xr = 0.64/0.33 = 1.93
Yr = 1
Zr = (1 - 0.64/0.33 - 0.33)/0.33 = -3.84

Xg = 0.21/0.71 = 0.29
Yg = 1
Zg = (1 - 0.21/0.71 - 0.71)/0.71 = -0.0081

Xb = 0.15/0.06 = 2.5
Yb = 1
Zb  (1 - 0.15/0.06 - 0.06)/0.06 = -26


Matrix zur Berechnung von S

   1.93   0.29    2.5
   1      1       1
   -3.84  -0.0081 -26

diese invertiert

   0.7609  -0.22   0.06
  -0.6487   1.188 -0.01
  -0.112    0.03  -0.04

multipliziert mit dem Weiß-Vektor  0.3127 0.3290 0.3583

ergibt

  Sr =  0.188696
  Sg =  0.182011
  Sb = -0.041706
Gast #2865489
Lesenswert?

Karl Heinz Buchegger schrieb:
> Xr = 0.64/0.33 = 1.93
> Yr = 1
> Zr = (1 - 0.64/0.33 - 0.33)/0.33 = -3.84
>
> Xg = 0.21/0.71 = 0.29
> Yg = 1
> Zg = (1 - 0.21/0.71 - 0.71)/0.71 = -0.0081
>
> Xb = 0.15/0.06 = 2.5
> Yb = 1
> Zb  (1 - 0.15/0.06 - 0.06)/0.06 = -26


Du teilst einmal zuviel durch 0.33/0.71/0.06 also bei der Z-Koordinate, 
oder seh ich das falsch

Z = (1 - x - y) / y und nicht (1-x/y - y)/y  oder?
#2865577
Lesenswert?

KlausMausi schrieb:
> Nur nochmal zum Endverständnis, was den Weißwert angeht handelt es sich
> bei dem mit Faktor 3.04 einfach nur um einen Weißabgleich?

Nein. Das ist einfach nur unterschiedlich normiert. Lindbloom normiert 
auf Y=1.0, Wikipedia auf (X+Y+Z) = 1.0.

Da die Lindbloom-Werte (X+Y+Z) = 3.0393 sind, kommt da dein Faktor her.

Viele Grüße,
        Simon
#2865586
Lesenswert?

Simon Budig schrieb:
> KlausMausi schrieb:
>> Nur nochmal zum Endverständnis, was den Weißwert angeht handelt es sich
>> bei dem mit Faktor 3.04 einfach nur um einen Weißabgleich?
>
> Nein. Das ist einfach nur unterschiedlich normiert.

Vielleicht sollte ich noch dazuschreiben: Eine Skalierung des Wertes 
entspricht einer Intensitätsänderung. Dadurch wird kein Weißpunkt 
verschoben o.ä. (was bei einem Weißabgleich passiert).

Viele Grüße,
        Simon

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren