Vielleicht möchten Sie es weiterentwickeln: Rendern Sie ein Bild so, wie es das menschliche Auge erfassen würde, oder sogar so, wie es der Mensch wahrnehmen würde.
Es gibt zwei Möglichkeiten, dies zu interpretieren. Ich mache beides.
Interpretation 1: Rendern Sie ein Bild, das perzeptuell realistisch aussieht.
Am Ende des Tages muss Ihr Bild noch irgendwo angezeigt werden . Hier ist der Schlüssel: Sie möchten Ihr Bild so rendern, dass es beim * Anzeigen * dieses Bildes auf einem bestimmten Anzeigegerät die gleiche Empfindung erzeugt, die das ursprüngliche radiometrische Bild erzeugt hätte.
So packen Sie diese Idee aus.
In der realen Welt gelangen radiometrische Spektren (dh reale Lichtverteilungen) in Ihr Auge und stimulieren ungefähr 1 bis 4 Lichtrezeptoren. Die Stimulation der Rezeptoren erzeugt die Farbempfindungen, die wir mit Bildern assoziieren.
Beim Rendern haben wir keine willkürliche Kontrolle über die von uns erzeugten Spektren. Da wir (normalerweise) nur drei Kegel haben, von denen jeder nur einen skalaren Wert erzeugt, kann das Farbsehen glücklicherweise unter Verwendung von genau drei Primärfarben reproduziert werden. Die Quintessenz ist, dass Sie jedes Farbempfinden erzeugen können , indem Sie nur eine lineare Kombination von drei Wellenlängen verwenden (bis zu ein paar Farben, die möglicherweise negativ sein müssen, in diesem Fall verwenden Sie nur verschiedene Primärfarben).
Sie haben keine Wahl zwischen Vorwahlen. Fast alle Farbdisplays verwenden den sRGB-Standard, der drei Primärfarben (die normalerweise keine einzige Wellenlänge haben) bereitstellt. Das ist in Ordnung, denn es stellt sich heraus, dass alles abstrahiert ist und Sie sich nicht darum kümmern müssen.
Der folgende Algorithmus verdeutlicht die Unordnung bei der wahrnehmungsgetreuen Wiedergabe:
- Rendern Sie Ihr Bild mit korrekten radiometrischen Berechnungen. Sie verfolgen einzelne Wellenlängen des Lichts oder Schaufeln von Wellenlängen. Was auch immer. Am Ende haben Sie ein Bild, das eine Darstellung des Spektrums hat, das an jedem Punkt empfangen wurde.
- An jedem Pixel nehmen Sie das von Ihnen gerenderte Spektrum und konvertieren es in den CIE XYZ-Farbraum . Dies hat zur Folge, dass das Produkt des Spektrums in die Standardbeobachterfunktionen integriert wird (siehe CIE XYZ-Definition) .
- Dies erzeugt drei Skalarwerte, die die CIE XYZ-Farben sind.
- Verwenden Sie eine Matrixtransformation, um dies in lineares RGB zu konvertieren, und verwenden Sie dann eine Linear / Power-Transformation, um lineares RGB in sRGB zu konvertieren .
- Konvertieren Sie von Fließkomma zu uint8 und speichern Sie Werte außerhalb des Bereichs (Ihr Monitor kann sie nicht darstellen).
- Senden Sie die uint8-Pixel an den Framebuffer.
- Die Anzeige nimmt die sRGB-Farben auf und führt die inverse Transformation durch, um drei Primärfarben mit bestimmten Intensitäten zu erzeugen. Jedes skaliert die Ausgabe des Bildelements, für das es verantwortlich ist. Die Bildelemente leuchten auf und erzeugen ein Spektrum. Dieses Spektrum wird (hoffentlich) ein Metamer für das von Ihnen gerenderte ursprüngliche Spektrum sein.
- Sie nehmen das Spektrum so wahr, wie Sie das gerenderte Spektrum wahrgenommen hätten.
Interpretation 2: Versuchen Sie, die Enddaten zu simulieren, die das menschliche Auge möglicherweise zu Visualisierungszwecken oder zur Kompensation von LDR-Anzeigen erhält.
Dieser hat eine weniger nützliche Bedeutung, denke ich. Im Wesentlichen versuchen Sie, ein Bild zu erstellen, das die Art und Weise, wie das Gehirn es wahrnimmt, aus Spaß und Gewinn optimiert.
Zum Beispiel gab es dieses Jahr auf der SIGGRAPH ein Papier, in dem Nachbilder und Farbreduzierungen simuliert wurden, um die Wahrnehmung von Bildern zu verändern. Natürlich ist der einzige Grund, warum sie dies überhaupt tun, der, dass die Displays, mit denen wir arbeiten, alle Low Dynamic Range (LDR) sind. Der Punkt ist, die Effekte zu simulieren, die jemand sehen könnte, wenn er einer HDR-Anzeige (Real High Dynamic Range) als tatsächliche Bilddaten ausgesetzt wird.
In der Praxis stellt sich heraus, dass dies nicht sehr gut funktioniert. Für Nachbilder sehen wir zum Beispiel Nachbilder aufgrund eines sehr hellen Reizes, der die Farbzellen erschöpft. Wenn Sie stattdessen versuchen, den Effekt mit einem gefälschten Nachbild zu stimulieren, sieht es möglicherweise ähnlich aus - aber da es sich um einen völlig anderen Mechanismus handelt, ist es nicht sehr überzeugend.
Diese Art von Grafik ist in der Literatur tatsächlich untererforscht, wenn Sie es ausprobieren möchten. Das erwähnte Papier ist ein Beispiel für mehr oder weniger die modernsten Ansätze, die wir haben. Ich bin jedoch der Meinung, dass es sich derzeit nicht wirklich lohnt, zu simulieren (zumindest zu diesem Zeitpunkt), da Sie im besten Fall echte Vision-Effekte nur durch Ersetzen verschiedener Effekte approximieren würden und dies nicht wirklich der Fall ist Arbeit.
1 Stange + 3 * Zapfen, der übliche Fall. Ungefähr, weil Menschen möglicherweise nur null funktionierende Lichtrezeptoren haben, bis zu einem mutmaßlichen Maximum von sieben (wobei das höchste jemals beobachtete Maximum fünf beträgt).