Logo Logo
///  >

Praxis : Die bunte Welt der DCTLs in Resolve - Teil 2: DCTL-Scripting

von Do, 22.Juli 2021 | 4 Seiten | diesen Artikel auf einer Seite lesen

 RGB nach YUV
 Helligkeitsregler - hin und zurück



RGB nach YUV



Kommen wir als nächstes gleich zu einem theoretischen Anwendungsfall: Wir wollen eine RGB nach YUV Transformation schreiben. Vielleicht ist der folgende Code schon für den einen oder anderes Leser selbsterklärend:


__DEVICE__ float3 transform(int p_Width, int p_Height, int p_X, int p_Y, float p_R, float p_G, float p_B)
{

const float y = 0.299f * p_R + 0.587f * p_G + 0.114f * p_B;
const float u = -0.147f * p_R - 0.289f * p_G + 0.436f * p_B;
const float v = 0.615f * p_R - 0.515f * p_G - 0.100f * p_B;

return make_float3(y, u, v);
}


Hier haben wir die typischen Konstanten der gängigsten YUV-Umrechungsformel genutzt, um diese Transformation als DCTL zu berechnen. In der Praxis sitzt man in diesem Fall jedoch auf einer YUV-Komponenten-Ausgabe, die man in Resolve mit weiteren DCTLs wieder wandeln müsste, weil die Vorschau ja RGB erwartet. Darum macht dieses Beispiel noch wenig Sinn. Aber es führt uns zu unserem praktischen Anwendungsfall:



Helligkeitsregler - hin und zurück



Wenn wir einen eigenen Helligkeitsregler erstellen wollen, müssen wir das Signal nach YUV wandeln, dann Y (also die Helligkeit) verändern und abschließend die gesamte Ausgabe wieder nach RGB wandeln. Auch das funktioniert jetzt relativ einfach, wenn man die Formeln der Wikipedia nutzt::


__DEVICE__ float3 transform(int p_Width, int p_Height, int p_X, int p_Y, float p_R, float p_G, float p_B)
{

const float y = (0.299f * p_R + 0.587f * p_G + 0.114f * p_B) * 1.0f;
const float u = -0.147f * p_R - 0.289f * p_G + 0.436f * p_B;
const float v = 0.615f * p_R - 0.515f * p_G - 0.100f * p_B;

const float r = 1.0f * y + 0.0f * u + 1.13983f * v;
const float g = 1.0f * y - 0.39465 *u - 0.58060 * v ;
const float b = 1.0f * y + 2.03211 * u + 0.0f * v;

return make_float3(r, g, b);
}


Dieses Beispiel scheint beim Ausprobieren erstmal gar nichts zu machen. Tatsächlich wandelt es jedoch jeden Pixel nach YUV, multipliziert den Y-Kanal mit 1.0f, wandelt danach alles wieder nach RGB und gibt das Ergebnis aus. Da man keine Veränderung sieht, scheinen die beiden Umrechnungsformeln also ok zu sein.

Dass tatsächlich in der Funktion von RGB nach YUV und zurück gewandelt wird, können wir feststellen, wenn wir den Skalierungsfaktor von Y ändern, also die Helligkeit im Y-Kanal verändern. Hierfür benutzen wir statt der 1.0f aus unserem Beispiel eine neue Variable, die wir "bright" nennen:


const float y = (0.299f * p_R + 0.587f * p_G + 0.114f * p_B) * bright;


Und diese Variable wollen wir durch einen Schieberegler verändern können. Dafür müssen wir den Schieberegler am Anfang unseres Scripts folgendermaßen definieren:


DEFINE_UI_PARAMS(bright, Helligkeit, DCTLUI_SLIDER_FLOAT, 1.0f, 0.0f, 10.0f, 0.01f)


Einleitung / Die erste Funktion
Jetzt alles(s) zusammen...


4 Seiten:
Einleitung / Die erste Funktion
RGB nach YUV / Helligkeitsregler - hin und zurück
Jetzt alles(s) zusammen...
  

[noch keine Leserkommentare] [Kommentar schreiben]   

Weitere Artikel:


Praxis: ACES in Theorie und Praxis Teil 2: Der ACES Workflow in Blackmagic DaVinci Resolve Mi, 15.September 2021
ACES ist für viele nur ein theoretischer Begriff. Wir wollen zeigen, wie man in DaVinci Resolve einen ACES Workflow korrekt einstellen kann...
Praxis: Die bunte Welt der DCTLs in Resolve - Teil 1: Zwischen LUT und Plugin Di, 13.Juli 2021
DCTLs können mehr als LUTs und weniger als Plugins - und sind gerade deswegen für viele Einsatzzwecke interessant...
Grundlagen: Konsistente Farben für Filmprojekte - ACES in Theorie und Praxis Teil 1: Die Basics Di, 7.September 2021
Jeder hat schon davon gehört, aber die wenigsten nutzen es für ihren persönlichen Workflow: Die Rede ist von dem Academy Color Encoding System, kurz: ACES. Wir wollen einmal die Basics des Industriestandards für Farben beim Film beleuchten.
Tips: Schnell zu guten Hauttönen bei Sony Alpha S-LOG 3 Material kommen Do, 29.Juli 2021
Wir hatten bereits die wichtigsten Workflows gezeigt, um in DaVinci Resolve schnell zu guten Hauttönen zu gelangen. Den Auftakt zu kameraspezifischen Tips machen hier nun die aktuellen Sony DSLMSs Alpha 7S III, die Alpha 1 etc. mit S-Log 3 Material. Wie kommen wir also am schnellsten zu guten Hauttönen mit den Sony Alphas?
Grundlagen: Full Data Video Level Studio Swing? Wenn der Pegel nicht mehr stimmt... Di, 27.Juli 2021
Erfahrungsberichte: Atomos Neon 24 - 4K HDR-Grading Display-Recorder Do, 24.Juni 2021
Tips: LUTs in Lumetri unter Premiere Pro CC richtig anwenden Di, 4.Mai 2021
Tips: Schnell zu guten Hauttönen bei LOG und RAW Video kommen: Teil 1: Workflows in DaVinci Resolve Mi, 28.April 2021
Tips: Farbmanagement korrekt? Der slashCAM Color Workflow Schnellcheck! Fr, 19.Juni 2020
Ratgeber: RAW Format Vergleich - Ein tabellarischer Funktions-Überblick Di, 11.Februar 2020
Test: DJI Mavic Mini - Bester Match: GoPro Hero8 Black oder DJI Osmo Action? Fr, 20.Dezember 2019


[nach oben]


[nach oben]















Artikel-Übersicht



Artikel-Kategorien:

Messenschraeg
9-13. Oktober / Las Vegas
NAB 2021
3-6. Dezember / Amsterdam
IBC 2021
weitere Termine von Messen, Schulungen und Roadshows


update am 17.September 2021 - 18:02
ist ein Projekt der channelunit GmbH
*Datenschutzhinweis*