Liebe Alle
Ich möchte gerne berechnen, welche Helligkeit eine RGB-Farbe (als umgerechneter Grauwert) hat. Dazu fand ich ZWEI Formeln und möchte wissen, welche von beiden nun stimmt - und warum:
(...)
Keine der beiden Formen hier stimmt so wirklich, das sind allenfalls grobe Näherungen.
Denn das, was man hier machen muss, das ist eine Farbraum-Transformation. Man muss aus dem RGB-Farbraum z.B. in einen L*a*b* Farbraum umrechnen, damit man zu jeder RGB-Kombination eben nicht nur die Farben (a*,b*), sondern auch die jeweilige Helligkeit L* hat. Wobei der CIEL*a*b* Farbraum den menschlichen Sehen sehr nahe kommt.
Dazu muss man erst mal wissen ob das Bild in sRGB kodiert ist (das ist de facto Standard...) oder z.B. nur als reines RGB. Das ist dann "irgend ein RGB", das direkt vom Gerät abhängt (und damit auf einem anderen Gerät schon wieder ganz anders aussieht). Ist es z.B. lineares (und damit geräteabhängiges) RGB, dann muss das Ganze zuerst mal in einen normierten Farbraum wie z.B. sRGB gebracht werden, d.h. man muss z.B. den Weißpunkt anpassen usw.
Anschließend kann man das sRGB dann in den CIE 1931 XYZ Farbraum transformieren, das ist eine 3D-Matrix-Operation.
Die Formel dafür findet sich z.B. hier:
https://en.wikipedia.org/wiki/CIE_1931_color_space
Und aus dem CIE-1931 XYZ kann man dann direkt die Helligkeit L* des CIEL*a*b* Farbraums berechnen, also die reine Helligkeit der Farbe, wie sie in etwa vom Auge wahrgenommen würde.
Formel unter:
https://en.wikipedia.org/wiki/Lab_color_space#RGB_and_CMYK_conversions
Fürs Internet (Kontstruktion von Webseiten z.B.) in etwa ausreichend ist aber schon die hier erwähnte Formel als Näherung, die sich wohl jemand eher empirisch erarbeitet hat:
Helligkeit = ca. sqrt(0,299* r^2 + 0,587 *g^2 + 0,114 * b^2). mit r,g,b = [0,255].
Das gibt dann "schön aussehende" Graustufenbilder.