sRGB

sRGB (Standard Rot Grün Blau) ist ein RGB-Farbraum, den HP und Microsoft 1996 gemeinsam für den Einsatz auf Monitoren, Druckern und im Internet erstellt haben. Es wurde anschließend von der IEC als IEC 61966-2-1: 1999 standardisiert. Es ist oft der „Standard“ -Farbraum für Bilder, die keine Farbrauminformationen enthalten, insbesondere wenn die Pixel der Bilder in 8-Bit-Ganzzahlen pro Farbkanal gespeichert sind.

sRGB verwendet die ITU-R BT.709-Primärgeräte, die gleichen wie bei Studiomonitoren und HDTV, eine für CRTs typische Übertragungsfunktion (Gammakurve) und eine Betrachtungsumgebung, die für typische Betrachtungsbedingungen im Heim- und Bürobereich entwickelt wurde. Diese Spezifikation ermöglichte es, dass sRGB direkt auf typischen CRT-Monitoren der Zeit angezeigt wurde, was seine Akzeptanz erheblich unterstützte.

Der sRGB-Gamut

Chromatizität rot Grün Blau Weißer Punkt
x 0.6400 0.3000 0.1500 0.3127
y 0,3300 0,6000 0,0600 0.3290
Y 0.2126 0.7152 0,0722 1.0000

sRGB definiert die Farbwerte der roten, grünen und blauen Primärfarben, die Farben, bei denen einer der drei Kanäle ungleich Null ist und die anderen zwei Null sind. Die Farbskala, die in sRGB dargestellt werden kann, ist das Farbdreieck, das durch diese Primärfarben definiert wird. Wie bei jedem RGB-Farbraum ist es für nicht-negative Werte von R, G und B nicht möglich, Farben außerhalb dieses Dreiecks darzustellen, was gut innerhalb des Bereichs von Farben liegt, die für einen Menschen mit normaler trichromatischer Sicht sichtbar sind.

sRGB wird manchmal von High-End-Print-Publishing-Profis vermieden, da sein Farbumfang insbesondere in den blaugrünen Farben nicht groß genug ist, um alle Farben aufzunehmen, die im CMYK-Druck reproduziert werden können.

Die sRGB-Übertragungsfunktion („Gamma“)

e effektives Gamma an jedem Punkt. Unterhalb eines komprimierten Wertes von 0,04045 oder einer linearen Intensität von 0,00313 ist die Kurve linear, so dass das Gamma 1 ist. Hinter der roten Kurve ist eine gestrichelte schwarze Kurve, die ein genaues Gamma = 2,2 Potenzgesetz zeigt.

sRGB definiert auch eine nichtlineare Transformation zwischen der Intensität dieser Primärfarben und der tatsächlich gespeicherten Zahl. Die Kurve ähnelt der Gamma-Antwort einer CRT-Anzeige. Diese nichtlineare Konvertierung bedeutet, dass sRGB eine recht effiziente Verwendung der Werte in einer auf ganzzahligen Werten basierenden Bilddatei ist, um von Menschen wahrnehmbare Lichtpegel anzuzeigen.

Im Gegensatz zu den meisten anderen RGB-Farbräumen kann das sRGB-Gamma nicht als einzelner numerischer Wert ausgedrückt werden. Das Gesamt-Gamma beträgt ungefähr 2,2, bestehend aus einem linearen (gamma 1,0) Abschnitt in der Nähe von Schwarz und einem nichtlinearen Abschnitt, der anderswo einen 2,4-Exponenten und ein Gamma (Steigung der logarithmischen Ausgabe gegenüber log-Eingabe) von 1,0 bis etwa 2,3 aufweist. Der Zweck des linearen Abschnitts besteht darin, dass die Kurve keine unendliche Steigung bei Null aufweist, was numerische Probleme verursachen könnte.

Spezifikation der Transformation
Die Vorwärtstransformation (CIE XYZ nach sRGB)
Die CIE XYZ-Werte müssen skaliert werden, so dass das Y von D65 („weiß“) 1,0 ist (X, Y, Z = 0,9505, 1,0000, 1,0890). Dies ist normalerweise richtig, aber einige Farbräume verwenden 100 oder andere Werte (wie im Lab-Artikel).

Der erste Schritt bei der Berechnung von sRGB aus CIE XYZ ist eine lineare Transformation, die durch eine Matrixmultiplikation durchgeführt werden kann. (Die unten angegebenen numerischen Werte stimmen mit denen in der offiziellen sRGB-Spezifikation überein, die kleine Rundungsfehler in der Originalpublikation durch sRGB-Schöpfer korrigiert haben, und nehmen den 2 ° -Standard-Farbmetrikbeobachter für CIE XYZ an)


Es ist wichtig zu beachten, dass diese linearen RGB-Werte nicht das Endergebnis sind, da sie noch nicht für die Gammakorrektur angepasst wurden. Die folgende Formel wandelt die linearen Werte in sRGB um:


Wobei {\ displaystyle a = 0.055} a = 0.055 und wo {\ displaystyle C} C {\ displaystyle R} R, {\ displaystyle G} G oder {\ displaystyle B} B ist.
Diese gammakorrigierten Werte liegen im Bereich von 0 bis 1. Werden Werte im Bereich von 0 bis 255 benötigt, z. B. für eine Videoanzeige oder eine 8-Bit-Grafik, so wird üblicherweise mit 255 und rund zu einer ganzen Zahl multipliziert.

Die Werte werden normalerweise auf den Bereich von 0 bis 1 begrenzt. Dieses Clipping kann vor oder nach der Gamma-Berechnung oder als Teil der Konvertierung in 8 Bits durchgeführt werden.

Die umgekehrte Transformation
Wieder die sRGB-Komponentenwerte  ,  ,  sind im Bereich von 0 bis 1. (Ein Bereich von 0 bis 255 kann einfach durch 255.0 geteilt werden).


Wobei {\ displaystyle a = 0.055} a = 0.055 und wo {\ displaystyle C} C {\ displaystyle R} R, {\ displaystyle G} G oder {\ displaystyle B} B ist.
Gefolgt von einer Matrixmultiplikation der linearen Werte, um XYZ zu erhalten:


Theorie der Transformation

Es wird oft beiläufig behauptet, dass das Decodierungsgamma für sRGB-Daten 2,2 beträgt, die obige Transformation zeigt jedoch einen Exponenten von 2,4. Dies liegt daran, dass der Nettoeffekt der stückweisen Zerlegung notwendigerweise ein sich änderndes momentanes Gamma an jedem Punkt in dem Bereich ist: es geht von Gamma = 1 bei Null bis zu einem Gamma von 2,4 bei maximaler Intensität mit einem Medianwert nahe bei 2,2. Die Transformation wurde so entworfen, dass sie einem Gamma von ungefähr 2,2 angenähert ist, aber mit einem linearen Teil nahe Null, um zu vermeiden, dass eine unendliche Steigung bei K = 0 vorliegt, was numerische Probleme verursachen kann. Die Kontinuitätsbedingung für die Kurve  , die oben als stückweise Funktion definiert ist  ist


Lösen mit  und der Standardwert  ergibt zwei Lösungen,  ≈  oder  ≈  . Der Standard IEC 61966-2-1 verwendet den gerundeten Wert  . Wenn wir jedoch die Bedingung aufstellen, dass die Pisten auch übereinstimmen, dann müssen wir haben


Wir haben jetzt zwei Gleichungen. Wenn wir die beiden Unbekannten zu {\ displaystyle K_ {0}} K_ {0} und {\ displaystyle \ phi} \ phi machen, können wir lösen


Substituierend  und  gibt  ≈  und  ≈  mit dem entsprechenden linearen Domänenschwellenwert bei  ≈  . Diese Werte sind gerundet auf  ,  , und  , manchmal beschreiben sRGB-Konvertierung.Publikationen von sRGB Schöpfer abgerundet auf  und  , was zu einer kleinen Diskontinuität in der Kurve führt. Einige Autoren haben diese Werte trotz der Diskontinuität übernommen. Für den Standard der gerundete Wert  wurde aufbewahrt und die  Der Wert wurde neu berechnet, um die resultierende Kurve, wie oben beschrieben, kontinuierlich zu machen, was zu einer Steigungsdiskontinuität von 12,92 unterhalb der Kreuzung bis 12,70 oberhalb führt.

Betrachtungsumgebung

Parameter Wert
Bildschirmleuchtdichte 80 cd / m²
Leuchtmittel weißer Punkt x = 0,3127, y = 0,3290 (D65)
Bild-Umgebungsreflexion 20% (~ mittelgrau)
Codierung der Umgebungsbeleuchtungsstärke 64 Lux
Codierung des Umgebungsweißpunkts x = 0,3457, y = 0,3585 (D50)
Encoding viewing flare 1,0%
Typische Umgebungsbeleuchtungsstärke 200 Lux
Typischer Umgebungsweißpunkt x = 0,3457, y = 0,3585 (D50)
Typische Sichtweite 5,0%

Die sRGB-Spezifikation geht von einer schwach beleuchteten Codier- (Erzeugungs-) Umgebung mit einer Umgebungs-Farbtemperatur (CCT) von 5000 K aus. Interessanterweise unterscheidet sich dies von der CCT des Leuchtmittels (D65). Bei Verwendung von D50 für beide würde der Weißpunkt des meisten Fotopapiers übermäßig blau erscheinen. Die anderen Parameter, wie der Luminanzpegel, sind repräsentativ für einen typischen CRT-Monitor.

Um optimale Ergebnisse zu erzielen, empfiehlt die ICC, die Environment-Umgebung für die Kodierung (dh dim, diffuse Beleuchtung) anstelle der weniger strengen typischen Betrachtungsumgebung zu verwenden.

Verwendung
Aufgrund der Standardisierung von sRGB im Internet, auf Computern und auf Druckern verwenden viele Digitalkameras und Scanner mit niedrigem bis mittlerem Verbrauch sRGB als Standardarbeitsfarbraum (oder nur als Arbeitsfarbraum). Da der sRGB-Farbraum die Farbskala eines Low-End-Tintenstrahldruckers erfüllt oder übertrifft, wird ein sRGB-Bild häufig als für den Heimgebrauch zufriedenstellend angesehen. Consumer-Level-CCDs sind jedoch in der Regel nicht kalibriert, was bedeutet, dass, obwohl das Bild als sRGB gekennzeichnet ist, nicht davon ausgegangen werden kann, dass das Bild sRGB-farbgenau ist.

Wenn der Farbraum eines Bilds unbekannt ist und ein 8- bis 16-Bit-Bildformat vorliegt, ist die Annahme, dass es sich im sRGB-Farbraum befindet, eine sichere Wahl. Dies ermöglicht einem Programm, einen Farbraum für alle Bilder zu identifizieren, was viel einfacher und zuverlässiger sein kann, als zu versuchen, den „unbekannten“ Farbraum zu verfolgen. Ein ICC-Profil kann verwendet werden; Die ICC verteilt drei solcher Profile: zwei Profile, die der Version 4 der ICC-Spezifikation entsprechen, die sie empfehlen, und ein Profil, das der Version 2 entspricht, die immer noch häufig verwendet wird.

Bilder, die für einen professionellen Druck über einen vollständig farbverwalteten Workflow, z. B. Druckvorstufenausgabe, vorgesehen sind, verwenden manchmal einen anderen Farbraum, wie z. B. Adobe RGB (1998), der eine größere Farbskala bietet. Solche Bilder, die im Internet verwendet werden, können unter Verwendung von Farbverwaltungstools, die normalerweise in Software enthalten sind, die in diesen anderen Farbräumen arbeitet, in sRGB umgewandelt werden.

Die beiden dominanten Programmierschnittstellen für 3D-Grafik, OpenGL und Direct3D, haben beide Unterstützung für die sRGB-Gammakurve. OpenGL unterstützt Texturen mit sRGB-Gamma-kodierten Farbkomponenten (zuerst eingeführt mit der Erweiterung EXT_texture_sRGB, hinzugefügt zum Kern in OpenGL 2.1) und Rendering in sRGB gamma-kodierte Framebuffer (zuerst eingeführt mit EXT_framebuffer_sRGB Erweiterung, hinzugefügt zum Kern in OpenGL 3.0).Direct3D unterstützt sRGB-Gamma-Texturen und Rendern in sRGB-Gamma-Oberflächen, beginnend mit DirectX 9. Korrektes Mipmapping und Interpolation von sRGB-Gamma-Texturen bietet direkte Hardware-Unterstützung in Texturierungseinheiten der meisten modernen GPUs (z. B. nVidia GeForce 8 konvertiert von 8-Bit-Textur zu linear) Werte vor der Interpolation dieser Werte) und hat keine Leistungseinbußen.