Das Sprechen über lineares RGB muss vermieden werden, da es Ihnen nichts über die RGB-Farbraum-Eigenschaften, dh Primär-, Weißpunkt- und Farbkomponententransferfunktionen, verrät. Vor ein paar Jahren war sRGB noch mittelmäßig, aber heute, da DCI-P3 und BT.2020 weit verbreitet sind, muss dies ausgeschlossen werden.
Der ideale Farbumfang für das Rendern ist derjenige, der Fehler in Bezug auf eine Referenz in der realen Welt oder günstiger ein Grundwahrheitsspektral-Rendering minimiert. Die erste Erkenntnis aus diesem Satz ist, dass die verschiedenen RGB-Farbräume nicht gleichwertig sind und keine ähnlichen Ergebnisse liefern.
Man könnte meinen, dass zwei Renderer mit den gleichen Grundfarben ausgeführt werden, bei denen sie jedoch mit sRGB / BT.709 codiert sind, und bei denen sie mit DCI-P3 codiert sind. Anschließend werden die beiden resultierenden Bilder in beispielsweise ACES2065-1 konvertiert die gleichen Bilder liefern, aber es ist nicht der Fall. Einige mathematische Operationen aufgrund der Natur der linearen Algebra und Matrizen hängen von den gegebenen RGB-Farbraumprimären ab, dh von der Farbraumbasis. Dieselben Operationen, die in unterschiedlichen RGB-Farbräumen ausgeführt werden, ergeben unterschiedliche Farbwerte, sobald sie zurück in den CIE XYZ-Farbraum konvertiert wurden. Beispielsweise sind Multiplikations-, Divisions- und Potenzoperationen von RGB-Farbraumprimären abhängig, während dies bei Addition und Subtraktion nicht der Fall ist.
Dieses Bild zeigt den Effekt der Multiplikation verschiedener Farben in verschiedene RGB-Farbräume: Die resultierenden Farben sind unterschiedlich. Die verschiedenen Stichproben werden wie folgt generiert: 3 zufällige sRGB-Farbraumwerte werden ausgewählt und in die drei untersuchten RGB-Farbräume konvertiert, sie werden potenziert, zurück in sRGB-Farbraum konvertiert, im CIE 1931 Chromaticity Diagram auf der linken Seite aufgezeichnet und als Farbfelder auf der linken Seite angezeigt richtig.
Tests und Untersuchungen von Ward und Eydelberg-Vileshin (2002) , Langlands und Mansencal (2014) und Mansencal (2014) zeigten, dass Farbskalen mit Primären, die dem Spektralort am nächsten liegen, dh spektral scharfen Primären, dazu neigen, die Fehler im Vergleich zum Spektralgrund zu minimieren Wahrheit macht.
Hier ist ein Bild, das ich kürzlich mit Mitsuba gerendert habe, um unsere Ergebnisse mit Anders zu überprüfen:
Dies sind Darstellungen derselben Szene unter Verwendung von BT.709-Vorwahlen (erste Reihe), 47 Spektralfächern (zweite Reihe), BT.2020-Vorwahlen (dritte Reihe), Spektral minus BT.709-Vorwahlen ergeben Residuen (vierte Reihe), Spektral minus BT .2020 primaries gibt Residuen aus (fünfte Reihe). Die letzte Reihe zeigt zusammengesetzte Bilder, die mit drei vertikalen Streifen der Grundfarben BT.709, Spectral und BT.2020 zusammengesetzt sind. Direkte Beleuchtung neigt dazu, zwischen den Renderings zu passen. Bereiche, die die Wirkung von mehrfachen Lichtreflexionen zeigen, dh die Decke, neigen bei den Grundrendern BT.709 und BT.2020 zu einer erhöhten Sättigung, insbesondere bei den Grundrendern BT.709, oder zu einem leichten Energieverlust, insbesondere bei den Grundrendern BT .2020 rendern. Ohne Ausreißer, z. B. die sichtbare Lichtquelle, beträgt der RMSE mit dem spektralen Rendering 0,0083und 0,0116 für die Primärrender BT.2020 bzw. BT.709.
Jetzt heißt das nicht, dass sie immer eine bessere Leistung erbringen werden, und es könnte möglich sein, Beispiele zu erstellen, die eine Tendenz zu BT.709 / sRGB aufweisen. Die wichtigste Erkenntnis ist, dass RGB-Renderings nicht mit Spektralrenderings übereinstimmen können und dass scharfe, breite Farbskalen tendenziell eine bessere Leistung erzielen. Für die Auswahl eines Rendering-Farbraums würde ich einen mit einem breiten Farbumfang wählen, der den Gamut von Pointer umfasst, und DCI-P3, BT.2020 oder ACEScg sind ausgezeichnete Kandidaten dafür.
Es gibt zwei Gründe, warum sRGB besonders wichtig ist. Es wird behauptet, dass für Nicht-HDR-Eingabebilder davon ausgegangen werden sollte, dass diese auf sRGB komprimiert sind (ob diese Behauptung korrekt ist, ist eine andere Geschichte). Daher müssen Sie sie aus sRGB dekomprimieren, bevor Sie lineare Rechenoperationen ausführen können. Es ist auch möglich, dass ein Bild aufgenommen und in eine andere Darstellung komprimiert wurde, die nicht sRGB ist. In diesem Fall müssen Sie diese bestimmte Darstellung dekomprimieren. In jedem Fall impliziert die Codierung einen bestimmten Farbumfang, aus dem das Eingabebild niemals hervorgeht (da in sRGB gespeicherte Bilder normalerweise auf 8 Bit pro Kanal gekürzt werden), aber Ihre Shader-Mathematik muss nach der Eingabe nicht in diesem Farbumfang verbleiben Bild wird dekomprimiert. Aber am Ende muss man die Anzeige berücksichtigen.
Wenn Sie ein Bild haben und es angezeigt werden soll, codieren Sie es in einer Darstellung, die das Anzeigegerät benötigt. CRTs entschieden sich für sRGB und LCDs emulierten dies. Daher war die sRGB-Komprimierung für die Monitoranzeige in den letzten Jahrzehnten die übliche Wahl, und die Ausgabe beschränkte sich darauf, innerhalb des sRGB-Bereichs zu bleiben. Andernfalls kommt es zu Übersteuerungen. Breitbild-Displays müssen sich nicht genau an diese Skala halten.
(Ich denke, die Grundlage für die Behauptung, dass von Menschen erstellte Bilder sRGB-codiert sind, liegt darin, dass angenommen wurde, dass diese Bilder auf sRGB-Displays erstellt wurden.)
Jetzt können Sie wahrscheinlich besser erkennen, warum insbesondere sRGB in der Hardware für mathematische Shader-Eingaben und die Bildanzeige unterstützt wurde. Es ist der übliche Fall. Darüber hinaus hat es gute Vorzüge, wahrnehmbare Farbstreifen-Artefakte zu reduzieren. Daher ist es eine gute Möglichkeit, Farben in 8 Bit zu komprimieren und sie für den Menschen plausibel zu halten.
quelle
Wenn Sie Werte außerhalb des Bereichs 0..1 zulassen, können Sie auch mit den relativ begrenzten sRGB-Vorwahlen den gesamten menschlichen visuellen Bereich ansprechen. Für das Speichern von Fließkomma-Lichtfarbwerten sollte es also keine Rolle spielen, welche Primärfarben Sie verwenden. Allerdings wird das Ausführen von multiplikativen Berechnungen etwas unkonventionell, da die willkürlichen Koordinaten der Primärdaten als Dreh- und Angelpunkt für die Skalierung fungieren. sRGB-Primärdaten werden in der Regel verwendet, da Ihre Eingabedaten traditionell sRGB-codiert sind und die Ausgangsanzeige sRGB oder rec709 ist. Mit rec2020 hat sich die Hälfte davon geändert, aber die meisten Ihrer Eingabedaten sind wahrscheinlich immer noch sRGB-codiert Die gleichen Vorwahlen wie Ihr Speicher sind nur die einfachste Option.
quelle