2015/07/19

CinEgal: Wo die Protune Tonwertkurve herkommt...

In Videobearbeitung mit Hero 3 Videomaterial habe ich seinerzeit erklärt, was GoPros Protune grob gesagt so mit den Daten des Videobilds anstellt, bevor sie auf die Speicherkarte geschrieben werden (manchmal schreibt GoPro sie ja sogar an die richtige Stelle, aber das ist eine andere Geschichte). Außerdem gab's seinerzeit noch die passende Tonwertkurve dazu, um wieder zu einem im Normalfall ganz ansehnlichen Kontrast zu gelangen. Aber was steckt wirklich dahinter? Ein glücklicher Irrtum...


Ein glücklicher Irrtum


Die von mir verwendete Tonalkurve für das Entzerren des Kontrasts von Protune-Videomaterial basiert auf CineStyle(!)-Daten von David Jordan, die noch in einer Diskussion im Kdenlive-Forum unter Technicolor CineStyle LUT for Kdenlive zu finden sind. Die originale Kdenlive-Effektdatei von David Jordan ist leider in der Dropbox-Cloud verschollen, aber da es sich um XML handelt, habe ich seinerzeit wohlweislich die Parameter am Ende des Diskussionsfadens dokumentiert. Leider ist die CineStyle-Dokumentation, auf die sich David Jordan bezieht, ebenfalls ein Opfer der Cloud geworden: es existieren zwar Abbilder der Technicolor-Website auf Archiv.org, aber leider konnte ich dort die betreffenden Dokumente nicht aufspüren.

Und ja, die Ironie an der Geschichte ist, dass das alles auf einem Missverständnis meinerseits basiert. Denn ursprünglich gelten die Daten für den Technicolor CineStyle und nicht für GoPro CineForm/Protune. Offensichtlich schreibe ich besser, als ich lese. Doch, oh Wunder! CineStyle bekommt derart gut die (Kontrast-) Kurve von Protune/CineForm-Videomaterial hin, das mir das Missverständnis lange Zeit nicht wirklich auffiel. Die Ergebnisse sind ansehnlich, warum also noch darüber nachgrübeln?

Protune Insider, oder: auf der Suche nach der Gralskurve


Schon vor langer Zeit bin ich auf den interessanten Blog des GoPro-Mitarbeiters David Newman gestoßen: GoPro/CineForm Insider. In seinem Artikel Protune von Oktober 2012 beschreibt David Newman das grobe Funktionsprinzip, das Protune zugrunde liegt. Dort führt er aus, dass Protune beim Kodieren der Tonwerte für die Farbkanäle RGB statt der häufig eingesetzten Gamma-Kurve eine logarithmische Kurve einsetzt. Leider fehlen im Blog konkrete Informationen zu dieser Kurve. Nicht zuletzt deshalb gärte diese Beschreibung lange in meinem Schädel: da passt etwas bei meiner Tonwertkurve nicht ganz zusammen.

Es ist wohl wiederum die Ironie der Geschichte, dass David Newman im Frühjahr 2011 bereits über die CineStyle(!)-Kurve berichtete, die Canon in bestimmten seiner Digitalkameras einsetzt, um H.264-Videomaterial mit mehr Reserve für die Nachbearbeitung auszustatten. Also mit dem gleichen Ziel, das auch GoPro mit CineForm verfolgt. Da soll man doch bei all den ähnlichen Marketing-Namelein nicht kirre werden...

Als ich dann vor einiger Zeit David Newmans Artikel über Protune 2.0 las, habe ich ihn kurzerhand kontaktiert, um ihm meine lange gärende Frage zu stellen. David war so geduldig, mir meine diversen Fragen zu erläutern und schließlich erhielt ich die lange ersehnte Auskunft...

Wahre Kurven


Wie David Newman in seiner Antwort schreibt, wird die für den typischen GoPro-Kontrast-Eindruck erforderliche Tonalkurve ganz profan und aller Logarithmik zum Trotz mit einer simplen Sinus-Funktion angenähert:
out=0.5*sin((in+1.5)*Pi)+0.5
wobei in der aus dem Protune-Rohmaterial stammende einzelne Tonwert R, G oder B eines Pixels ist. Und out ist der entsprechend entzerrte Tonwert im Gamma-2.2-Tonwertraum. Also letztlich in dem Farbraum, der für die Anzeige des fertigen H.264-Videomaterials benutzt wird und der dem Rec 709-Raum ebenfalls zugrunde liegt. In der Formel oben sind die Werte übrigens auf das Intervall [0..1] normiert und nicht auf die 8bit-tiefe Kodierung im Intervall [0..255], wie in vielen Anwendungen eingesetzt.

Das ist also die geheime Protune-Soße? Oder zumindest ein Teil davon? Sei's drum. Oder wie man so schön in Franken sagt: nur Kloß mit Soß.

CineStyle oder CineForm? CinEgal!


Legt man nun die von David Newman angegebene (Protune/CineForm) Tonwertkurve einmal auf die von mir bisher benutzte CineStyle-Tonwertkurve ... dann passen sie ganz prima zueinander! Die geheime Protune-Soße leckte damit also auch schon praktisch identisch aus (ausgerechnet!) den Technicolor Farbeimern. Ich bin mir unsicher, ob ich nun lachen oder weinen soll ... aber egal.

Ich lasse dann mal ein Bild mehr als tausend Worte lügen.

Protune Tonwertkurve für das Entzerren des Kontrasts im Rec 709/Gamma 2.2.

Grün dargestellt: die Protune/CineForm-Soße. Im Vergleich dazu die rote CineStyle-Soße aus dem Hause Technicolor.

Die Kurven habe ich übrigens mit dem Funktionsplotter FooPlot erstellt, der direkt im Webbrowser läuft, und das Ergebnis dann noch in Inkscape aufbereitet.

Für diejenigen, die lieber die beim Kdenlive/MLT-Effekt Bézierkurve tatsächlich zur Berechnung der Tonwertkurve verwendeten Parameter wissen möchten, die gibt's hier auch noch mal, bitteschön:
  • Ausgangspunkt P0: (x; y)=(0; 0,619)
  • Richtungspunkt P1: (x; y)=(0,378; 0)
  • Richtungspunkt P2: (x; y)=(0,619; 1)
  • Endpunkt P3: (x; y)=(1; 1)
Die Bedeutung der Punkte P0 bis P3 ist sehr anschaulich samt Formel im englischen Wikipedia-Artikel über kubische Bézierkurven erläutert. In der obrigen Grafik ist das die rote durchgehende Kurve.

Abspann


Die bisher von mir empfohlene CineStyle-Kurve passt hervorragend auf das GoPro Protune/CineForm Videomaterial.

Keine Kommentare: