domain hat geschrieben:
Wenn mir jemand sagen würde, dass die mathematische Umrechnung für jeden Pixel über eine Funktion wesentlich mehr Computerpower erfordern würde als eine Tabellenumrechnung, dann wäre ja schon alles geklärt.
Das ist der wesentliche Grund. Rechenleistung einsparen. Und es geht dabei um relativ viel eingesparte Power.
Bedenke bitte: Für eine flüssige Vorschau muss alles, was nötig ist, um einen fertigen Frame zu generieren, innerhalb einer 1/50 Sekunde vom Rechner bewältigt werden. Den Großteil der Zeit fressen bereits I/Os sowie andere aufwendige Algorithmen (bspw. Dekodierung). Da bleibt nicht mehr viel.
LUTs sind Daten pur - guter Ansatz, denn es geht eben in der EDV, also auch in der digitalen Videobearbeitung, um Datenverarbeitung ... ;)
Auch Videoinhalte werden ja nicht über Funktionen erzeugt.
Man benötigt an Funktionen, um die Daten einer LUT zu verarbeiten, im Wesentlichen nur "Lesen" und "Kopieren". Die Daten werden aus der Datei in die RGB-Tabelle übertragen, ggf. mit bereits vorhanden Modifikationen abgemischt. Dazu ein wenig relativ triviale Interpolation für die nicht vorhanden Zwischenwerte. Das macht den Austausch der LUTs leicht, vergrößert die Reichweite (nutzbar in vielen unterschiedlichen Programmen) und vereinfacht die Anwendung für den Benutzer (einfach laden, fertig). Völlig unabhängig von den tatsächlich verfügbaren Videoeffekten zur Farbkorrektur im Zielprogramm.
Ein anderer Grund: Die nötigen Funktionen könnten beliebig komplex werden, denn jeder RGB-Wert kann ja unanhängig von anderen verändert werden, abhängig von den verwendeten Werkzeugen und Funktionen. Du kannst Dich bei der Erstellung quer durch Deine Effekte-Bibliothek wühlen, andere LUTs dazu mischen und vorgefertigte Presets von Drittherstellern draufklatschen - egal. (Ob das Sinn macht, ist eine andere Frage).
Die LUT zeigt quasi in Auszügen einen Schnappschuss der RGB-Tabelle im Speicher zum Zeitpunkt des Exports der LUT aus dem erstellenden Programm. Ganz simpel. Die einzelnen Schritte, die zu diesem Ergebnis geführt haben, sind längst abgearbeitet und aus dieser Tabelle heraus nicht mehr auflösbar.
Ein weiterer Grund: Funktionen sind anders als Daten zwischen Programmen nicht beliebig austauschbar. Das erstellende Programm müsste zunächst diese spezifische Funktion erzeugen und dann ein Plug-In generieren, das die entsprechende Funktion enthält und das dem abarbeitetenden Programm über eine dafür standardisierte API bereitgestellt wird. Das muss es erst mal geben. Denn jede Modifikation, auch mit den selben Werkzeugen, würde eine andere Funktion ergeben, abhängig von den eingestellten Werten.
Diese Lösung - Funktionen statt LUTs - gibt es übrigens. Viele "Looks" sind am Markt für unterschiedliche Programme in dieser Form zu erwerben. Ggf. zusammen mit "Look"-Plug-Ins. Sie speichern Funktionsaufrufe und Parameterwerte und arbeiten sie dann über das vorgesehene API oder über das Plug-in erneut ab. Die nötige Rechenleistung ist oft deutlich zu spüren.
Beste Grüße,
Reiner