led:media_correction
Unterschiede
Hier werden die Unterschiede zwischen zwei Versionen angezeigt.
Beide Seiten der vorigen RevisionVorhergehende ÜberarbeitungNächste Überarbeitung | Vorhergehende Überarbeitung | ||
led:media_correction [2023/02/17 18:11] – [Wie geht man dabei vor?] sb279 | led:media_correction [2023/02/17 20:41] (aktuell) – [Wie geht man dabei vor?] sb279 | ||
---|---|---|---|
Zeile 2: | Zeile 2: | ||
- | Virtual Production hat sich in den letzten Jahren durch die fortschreitende Technologie rasch weiterentwickelt. | + | Virtual Production hat sich in den letzten Jahren durch die fortschreitende Technologie rasch weiterentwickelt. |
+ | Da es sich bei einer projizierten 3D-Welt auf ein spezifisches Display nicht um die gleichen physikalischen Gegebenheiten des Lichts, wie in der Realität handelt, ist eine besonderer Blick auf die Color-Pipeline zu werfen. Um realistische und ästethische Bilder mit der Kamera zu erzeugen, spielen verschiedene Elemente eine Rolle: | ||
- | Da es sich bei einer projizierten 3D-Welt auf ein spezifisches Display nicht um die gleichen physikalischen Gegebenheiten des Lichts, wie in der Realität handelt, ist eine besonderer Blick auf die Color-Pipeline zu werfen. Um realistische und ästethische Bilder mit der Kamera zu erzeugen, spielen verschieden Elemente eine Rolle: | + | |
- | + | - Farbkalibrierung der Displayechnologie (LED-Wand) | |
- | - 1. Colormanagement in der Gameengine | + | - Colorscience und Charakteristik der Kamera |
- | - 2. Farbkalibrierung der Displayechnologie (LED-Wand) | + | |
- | - 3. Colorscience und Charakteristik der Kamera | + | |
In jedem Bereich könnte angesetzt werden um die Farbtreue zu erhalten. | In jedem Bereich könnte angesetzt werden um die Farbtreue zu erhalten. | ||
- | ====== | + | ====== |
Das hat mit der menschlichen Wahrnehmung, | Das hat mit der menschlichen Wahrnehmung, | ||
- | Allgemein wird zwischen Scene-refered-Farbräumen und Display-Referred-Farbräumen unterschieden. | + | Allgemein wird zwischen Scene-refered-Farbräumen und Display-referred-Farbräumen unterschieden. |
Scene-referred Farbräume sind linear und stellen eine 1:1 Relation zum Licht der Szene dar. Display-referred Farbräume sind auf Monitore angepasst. Zu diesen gehören die Standards ITU-R BT.709 (Rec 709) oder auch sRGB. | Scene-referred Farbräume sind linear und stellen eine 1:1 Relation zum Licht der Szene dar. Display-referred Farbräume sind auf Monitore angepasst. Zu diesen gehören die Standards ITU-R BT.709 (Rec 709) oder auch sRGB. | ||
- | Game Engines sind dazu gedacht 3D-Inhalte in Echtzeit auf Bildschirmen | + | Game Engines sind dazu gedacht 3D-Inhalte in Echtzeit auf Monitoren |
- | Es gibt also zwei Übertragungsfunktionen: | + | Es gibt also zwei Übertragungsfunktionen: |
- | Im Anwendungsfall VP aber nur für die Anteile, die sich auf der LED-Wand befinden, der Vordergrund durchlebt die „normale“ Farbraumwandlung. Es ist somit schon zu erahnen, dass sich ein ästhetischer Bildeindruck nicht ohne zusätzliche Anpassungen erreichen lässt. | + | Im Anwendungsfall VP mit In-Camera-VFX |
Zeile 31: | Zeile 30: | ||
Ziel ist es, dass eine 3D-Asset genauso wirkt wie dasselbe Element in der Realität. Man könnte überlegen besondere OETF in den Kameras oder andere Colorscience/ | Ziel ist es, dass eine 3D-Asset genauso wirkt wie dasselbe Element in der Realität. Man könnte überlegen besondere OETF in den Kameras oder andere Colorscience/ | ||
- | Das ist nicht sinnvoll, da viel zu aufwändig und VP ist eine zu große Nische im Bereich der Kameraeinsatzmöglichkeiten, außerdem | + | Das ist nicht sinnvoll, da viel zu aufwändig und VP eine zu große Nische im Bereich der Kameraeinsatzmöglichkeiten |
Es könnte auch ein Ansatz sein, die Ausgabe in der Gameengine entsprechend anzupassen, um den doppelten Kurven zu entkommen. Doch könnte eine solche Umrechnung gegebenenfalls schwierig zu implementieren sein, oder die Performance beeinflussen. Es ist aber eine gute Möglichkeit. | Es könnte auch ein Ansatz sein, die Ausgabe in der Gameengine entsprechend anzupassen, um den doppelten Kurven zu entkommen. Doch könnte eine solche Umrechnung gegebenenfalls schwierig zu implementieren sein, oder die Performance beeinflussen. Es ist aber eine gute Möglichkeit. | ||
Zeile 37: | Zeile 36: | ||
Des weiteren, könnte die LED Wand entsprechend kalibriert werden: | Des weiteren, könnte die LED Wand entsprechend kalibriert werden: | ||
- | Zum Einen Hinsichtlich | + | Zum Einen hinsichtlich |
Zum Anderen kann die LED-Wand mit einer Korrekturmatrix korrigiert werden, dass sie perfekt zur OETF, dem Gammut und der Farbempfindlichkeit der Kamera passt. Dieser Ansatz wurde verfolgt. | Zum Anderen kann die LED-Wand mit einer Korrekturmatrix korrigiert werden, dass sie perfekt zur OETF, dem Gammut und der Farbempfindlichkeit der Kamera passt. Dieser Ansatz wurde verfolgt. | ||
- | |||
- | |||
====== Wie geht man dabei vor? ====== | ====== Wie geht man dabei vor? ====== | ||
//Am Beispiel der Kalibrierung in Unreal Engine// | //Am Beispiel der Kalibrierung in Unreal Engine// | ||
- | Zunächst wird über die Gameengine ein Color-Checker Test-Setting geladen. In diesem Setup wird ein synthetischer Color-Checker integriert. Dort sind durch den Verwendeten Farbraum die Farbwerte genau definiert und somit bekannt. Unreal nutzt standardmäßig Linear rec.709 als Farbraum. Also einen linearen Scener-referred Farbraum mit den Rec.709 Farbprimärvalenzen. Der Industriestandard für einen Arbeitsfarbraum ist aber oftmals z.B. ACEScg, der ermöglicht, | + | Detailierter nachzulesen in der Unreal-Dokumentation: |
+ | https:// | ||
- | In Unreal wird der gerenderte Inhalt über nDisplay | + | Zunächst wird über die Gameengine ein Color-Checker Test-Setting geladen. In diesem Setup wird ein synthetischer Color-Checker integriert. Dort sind durch den verwendeten Farbraum die Farbwerte genau definiert und somit bekannt. Unreal nutzt standardmäßig " |
+ | |||
+ | In Unreal wird der gerenderte Inhalt über Display | ||
Zur Erstellung der Korrekturmatrix wird der synthetische Color-Checker in Unreal mit der zu verwendenden Kamera von der LED-Wand abgelichtet. Das erstellte Footage muss zunächst linerarisiert werden, wozu die Inverse Kurve der Kamera (z.B LogC) angewendet wird. | Zur Erstellung der Korrekturmatrix wird der synthetische Color-Checker in Unreal mit der zu verwendenden Kamera von der LED-Wand abgelichtet. Das erstellte Footage muss zunächst linerarisiert werden, wozu die Inverse Kurve der Kamera (z.B LogC) angewendet wird. | ||
Zeile 58: | Zeile 58: | ||
Die RGB-Werte der abgelichteten Testpatches Rot, Grün und Blau werden in die Matrix geschrieben | Die RGB-Werte der abgelichteten Testpatches Rot, Grün und Blau werden in die Matrix geschrieben | ||
- | {{: | + | {{ : |
Die inverse dieser Matrix wird mit dem höchsten Weißwert (W), auf 1.0 normalisiert Multipliziert. Das ist der Skalierungsfaktor. | Die inverse dieser Matrix wird mit dem höchsten Weißwert (W), auf 1.0 normalisiert Multipliziert. Das ist der Skalierungsfaktor. | ||
** | ** | ||
- | I = F-1 -> S = I × W/ | + | I = F^-1 -> S = I × W/ |
+ | |||
+ | Dieser wird benutzt um um die Faktoren der Matrix zu skalieren. Danach muss diese Matrix invertiert werden: | ||
+ | |||
+ | {{ : | ||
+ | |||
+ | |||
+ | **Kalibrations-Matrix = F^-1** | ||
Mit dieser Matrix kann die Ausspielung auf der LED-Wand belegt werden. | Mit dieser Matrix kann die Ausspielung auf der LED-Wand belegt werden. | ||
- | Die RGB-Werte der abgelichteten Testpatches Rot, Grün und Blau werden | + | |
+ | In Unreal also: | ||
+ | |||
+ | | ||
+ | - die Korrektur Matrix wird angewendet. | ||
+ | - Kodierung in den Zielfarbraum | ||
+ | |||
+ | Wenn die Primärvalenzen übereinstimmen, werden | ||
====== Und an der HdM? ====== | ====== Und an der HdM? ====== | ||
Zeile 72: | Zeile 87: | ||
Da die LED-Wand hier an der HdM hauptsächlich für Fernsehen oder Film benutzt wird, kann der Schritt zur Kalibrierung mit einer Gameengine übersprungen werden. Außerdem haben die Panels, bzw die Controller der LED-Panels beider Wände keine Möglichkeit zur Kalibrierung, | Da die LED-Wand hier an der HdM hauptsächlich für Fernsehen oder Film benutzt wird, kann der Schritt zur Kalibrierung mit einer Gameengine übersprungen werden. Außerdem haben die Panels, bzw die Controller der LED-Panels beider Wände keine Möglichkeit zur Kalibrierung, | ||
- | Der Hauptfokus liegt somit auf dem Korrigieren des Bildes für die Kamera. Wie bereits erwähnt, wird dies über ein Testbild berechnet. Daher würde ein Script geschrieben (generate_primaries), | + | Der Hauptfokus liegt somit auf dem Korrigieren des Bildes für die Kamera. Wie bereits erwähnt, wird dies über ein Testbild berechnet. Daher würde ein Script geschrieben (generate_primaries), |
- | {{: | + | {{ : |
- | {{: | + | |
- | Das Testpattern und das Testbild wird dann Fullscreen auf einem Laptop angezeigt, welcher per HDMI mit dem Controller für die LED-Wand verbunden ist. Nun fotografiert man beide Bilder mit der gewünschten Kamera ab und speist diese In Matlab ein. Dort wird zuerst mit den Daten aus dem Testpattern gearbeitet. Das Bild wird auf das reine Testpattern gecroppt und die Farbwerte werden aus den einzelnen Patches extrahiert. Dafür müssen die Werte zuerst in den linearen Raum konvertiert werden und mit dem median wird dann der durchschnittliche | + | Das Testpattern und das Testbild wird dann Fullscreen auf einem Laptop angezeigt, welcher per HDMI mit dem Controller für die LED-Wand verbunden ist. Nun fotografiert man beide Bilder mit der gewünschten Kamera ab und speist diese In Matlab ein. Dort wird zuerst mit den Daten aus dem Testpattern gearbeitet. Das Bild wird auf das reine Testpattern gecroppt und die Farbwerte werden aus den einzelnen Patches extrahiert. Dafür müssen die Werte zuerst in den linearen Raum konvertiert werden und mit dem median wird dann der mittlere |
{{ : | {{ : | ||
Zeile 83: | Zeile 97: | ||
Nun können die Bilder miteinander verglichen werden, um zu überprüfen, | Nun können die Bilder miteinander verglichen werden, um zu überprüfen, | ||
+ | {{ : | ||
+ | |||
+ | Im letzten Teil des Skripts werden noch die Ergebnisse verglichen. Zu erst kommt das abfotographierte Bild ohne vorher angewendetet Korrektur, dann mit und dann das Original mit einem einfachen Gaussblur um die Bilder vergleichbarer zu machen. Obwohl das Ergenis nicht perfekt ist, ist ersichtlich, | ||
====== Wie geht man konkret vor? ====== | ====== Wie geht man konkret vor? ====== | ||
Zeile 91: | Zeile 108: | ||
* Rechner mit Software (NovaLCT) + Controller für die LED-Wand | * Rechner mit Software (NovaLCT) + Controller für die LED-Wand | ||
* Kamera (+Stativ) | * Kamera (+Stativ) | ||
- | * Matlab Skripts (camera_correction) + Testbilder | + | * Matlab Skripts (camera_correction.m) + Testbilder |
- | - Laptop an LED-Wand anschließen und Testpattern aus Github auf der LED-Wand ausgeben | + | - Laptop an LED-Wand anschließen und verifizieren, |
+ | - Testpattern aus Github auf der LED-Wand ausgeben | ||
- Kamera so weit entfernt platzieren, dass die einzelnen Pixel nicht mehr sichtbar sind | - Kamera so weit entfernt platzieren, dass die einzelnen Pixel nicht mehr sichtbar sind | ||
- Weißabgleich auf die Wand anpassen (im Normalfall 6500k), mit manuellem Fokus leicht unscharf stellen (um Aliasing und andere Artefakte zu vermeiden), auf das mittlere Grau belichten und ein Foto machen. Diesen Vorgang mit dem anderen Testbild wiederholen | - Weißabgleich auf die Wand anpassen (im Normalfall 6500k), mit manuellem Fokus leicht unscharf stellen (um Aliasing und andere Artefakte zu vermeiden), auf das mittlere Grau belichten und ein Foto machen. Diesen Vorgang mit dem anderen Testbild wiederholen | ||
- | - Bilder auf dem Laptop im Ordner " | + | - Bilder auf dem Laptop im Ordner " |
- Das Programm ausführen und mit der Maus eine rechteckige Auswahl um das Testpattern ziehen und mit Rechtsklick „crop image“ | - Das Programm ausführen und mit der Maus eine rechteckige Auswahl um das Testpattern ziehen und mit Rechtsklick „crop image“ | ||
- In den Vergleichsfenstern die Ergebnisse anschauen und Resultate bewerten | - In den Vergleichsfenstern die Ergebnisse anschauen und Resultate bewerten | ||
- Das korregierte Bild für die Wand liegt nun im Ordner " | - Das korregierte Bild für die Wand liegt nun im Ordner " | ||
- | + | - Unter " | |
- | + | ||
led/media_correction.1676653886.txt.gz · Zuletzt geändert: 2023/02/17 18:11 von sb279