RGB-Farbwert zu RGB-Grauwert umwandeln
Daniel P.
- php
Hi,
ich habe mir einen kleinen Script gebastelt, mit dem ich Farben in Graustufen umwandeln kann bzw. möchte. Hier mal der PHP-Code:
function color2gray($r,$g,$b) {
$gray = round($r * 0.299,0);
$gray += round($g * 0.587,0);
$gray += round($b * 0.114,0);
return $gray;
}
color2gray(255,0,0) ergibt 76. Diesen Wert kann ich nun als "Grauffarbe" verwenden - also "rgb(76,76,76)". Allerdings weis ich nicht, ob die Errechnung der "Grauffarbe" so richtig ist. Denn Photosho beispielsweise errechnet 65. Stimmt denn meine Umrechnung?
Hi,
ich habe mir einen kleinen Script gebastelt, mit dem ich Farben in Graustufen umwandeln kann bzw. möchte. Hier mal der PHP-Code:
es gibt keine "eine" Umwandlung von Farbe zu Graustufe, sondern nur übliche. Die von Dir gefundene Umrechnung _ist_ üblich (zumindest kenne ich die Werte auf zwei Nachkommastellen gerundet). Abhängig vom Ausgabegerät und - tadaa! - Betrachter sind andere Werte sinnvoller.
color2gray(255,0,0) ergibt 76. Diesen Wert kann ich nun als "Grauffarbe" verwenden - also "rgb(76,76,76)". Allerdings weis ich nicht, ob die Errechnung der "Grauffarbe" so richtig ist. Denn Photosho beispielsweise errechnet 65. Stimmt denn meine Umrechnung?
Ja. Und die von Photoshop stimmt auch.
Cheatah
es gibt keine "eine" Umwandlung von Farbe zu Graustufe, sondern nur übliche. Die von Dir gefundene Umrechnung _ist_ üblich (zumindest kenne ich die Werte auf zwei Nachkommastellen gerundet). Abhängig vom Ausgabegerät und - tadaa! - Betrachter sind andere Werte sinnvoller.
Ich meinte meine "eine" ;-) . Das es noch mehr gibt, ist mir klar. Nur ist das, was ich für meiner Funktion gefunden habe (Grauwerte bei Wikipedia), die für mich am einfachsten zu verwendeteten. Gibt es eigentlich eine Sammlung der üblichen Methoden mit Pseudo-Codes? Denn das, was ich über Google gefunden habe, war nicht wirklich aufschlussreich...
Ja. Und die von Photoshop stimmt auch.
Dann verwendet Photoshop wahrscheinlich nur eine andere Methode?
Hello out there!
Stimmt denn meine Umrechnung?
„Um einen RGB-Wert in einen 8-Bit Graustufen-Wert umzurechnen kann man die Formel "G = (R+G+B)/3" verwenden. Da das menschliche Auge allerdings verschiedene Farben verschieden stark wahrnimmt, Grün am stärksten, wird oft folgende Umrechnung verwendet: "G = 0,299*R + 0,587*G + 0,114*B".“ [http://de.wikipedia.org/wiki/RGB-Farbraum]
Die Gewichtung der drei Farbkanäle ist wohl ein Mittelwert aus empirischen Untersuchungen, für verschiedene Personen jedoch individuell unterschiedlich.
Ich würd allerdings nicht erst runden und dann addieren, sondern erst addieren und dann runden. Sonst könnest du bei anderen Faktoren, wenn du mehr aufrundest als abrundest, auch 256 als Ergebnis erhalten:
F F*255 gerundet
0.304 77.52 78
0.584 148.92 149
0.112 28.56 29
----- –––
1.000 256
See ya up the road,
Gunnar