LUT-Werkbank: eigene 3D-LUTs für darktable bauen

Ich habe mir ein kleines Werkzeug gebaut, mit dem man eigene 3D-LUTs für darktable gestalten kann: die LUT-Werkbank. Sie läuft komplett im Browser, und ihr könnt sie unten direkt ausprobieren.

Wie es dazu kam

Angefangen hat alles mit einem Porträt im Gegenlicht bei Sonnenuntergang. Das JPG aus meiner Sony a6400 sah großartig aus: rosige Haut, warmes Licht, kräftige Farben. Dieselbe RAW-Datei in darktable wirkte dagegen flau und kippte ins Sepia.

Der Grund ist simpel. Die Kamera bearbeitet ihre JPGs ab Werk kräftig, darktable startet bewusst neutral. Den Look kann man mit Modulen wie sigmoid, color balance rgb und color equalizer nachbauen. Irgendwann wollte ich aber verstehen, was bei so einer Farbveränderung eigentlich mathematisch passiert. Und wie man einen Look als Datei festhält, die man immer wieder verwenden kann.

Was eine 3D-LUT ist

Eine 3D-LUT ist eine Tabelle, die jeder Eingangsfarbe eine Ausgangsfarbe zuordnet. Mathematisch ist das eine Abbildung vom Farbwürfel in den Farbwürfel:

       f: [0,1]³ → [0,1]³, (r, g, b) ↦ (r′, g′, b′)

Alle unendlich vielen Farben kann man nicht speichern. Deshalb wird der Würfel in ein Gitter eingeteilt: Auf jeder Achse setzt man in gleichen Abständen Markierungen, meist 33 Stück von 0 bis 1. Jede Kombination aus einer Rot-, einer Grün- und einer Blaumarkierung ist ein Gitterpunkt, ähnlich wie die Kreuzungen auf kariertem Papier, nur dreidimensional. Für jeden der 33³ = 35.937 Gitterpunkte steht die Ausgangsfarbe in der Datei. Liegt eine Farbe zwischen den Gitterpunkten, wird aus den acht Ecken des kleinen Würfelchens interpoliert, in dem sie liegt. Das ist wie bei einer Wetterkarte, die die Temperatur nur an einzelnen Messstationen kennt und die Orte dazwischen schätzt. Je dichter das Gitter, desto genauer die LUT.

In einer .cube-Datei steht das ganz einfach als Text: ein paar Kopfzeilen, danach eine Zeile pro Gitterpunkt mit drei Zahlen. Rot läuft als erstes, dann Grün, dann Blau. Die Position der Zeile verrät also die Eingangsfarbe, ihr Inhalt die Ausgangsfarbe.

Warum drei Kurven nicht reichen

Mein erster Gedanke war: Man braucht doch nur drei Kurven, eine für Rot, eine für Grün, eine für Blau. Das stimmt aber nicht. Bei drei Kurven hängt jeder Ausgangskanal nur von seinem eigenen Eingangskanal ab. Eine Regel wie „Orange etwas röter machen, Grau aber in Ruhe lassen“ lässt sich so nicht ausdrücken, denn dafür müssen alle drei Kanäle gemeinsam entscheiden.

Genau das kann eine 3D-LUT: Jeder Gitterpunkt darf eine völlig eigene Ausgangsfarbe bekommen. Drei Kurven sind nur ein Spezialfall davon, eine sogenannte 1D-LUT.

Was die LUT-Werkbank kann

Die Werkbank baut eine 3D-LUT aus Werkzeugen, die man aus der Bildbearbeitung kennt, und rechnet am Ende alles in ein Gitter um. Die Vorschau läuft schon über dieses Gitter, also genau so, wie darktable die LUT später anwendet.

  • Kurven: klassische Gradationskurven für RGB gesamt und die einzelnen Kanäle, mit Histogramm.
  • Farbton: Kurven über dem Farbton, zum Verschieben (±60°), Sättigen und Aufhellen einzelner Farbbereiche. Eine Farbleiste zeigt für den gewählten Punkt, welche Farben er erreichen kann.
  • Mapping: Eine Farbe im Bild anklicken und im Farbrad auf eine Zielfarbe ziehen. Reichweite, Stärke und Helligkeit sind einstellbar, der Übergang ist weich.
  • 3D-Ansicht: Das Gitter als drehbare Punktwolke, im RGB-Würfel oder in OKLab. Man sieht direkt, wie die LUT den Farbraum verformt.
  • Inspektor: Zeigt für jedes Pixel die Gitterzelle, die Zeile in der .cube-Datei und die Interpolationsanteile.
  • Export: als .cube-Datei oder als HaldCLUT-PNG, mit einstellbarer Gittergröße (17, 33 oder 65) und Deckkraft.

Gerechnet wird überwiegend im Farbraum OKLab. Dort entsprechen Farbton, Sättigung und Helligkeit ziemlich gut dem, was wir wahrnehmen. Graue Töne bleiben bei den Farbwerkzeugen unberührt.

So nutzt ihr die LUT in darktable

  1. In der Werkbank einen Look bauen und als .cube exportieren.
  2. In darktable in der Dunkelkammer das Modul lut 3D aktivieren und die Datei auswählen.
  3. application color space auf sRGB stellen, als Interpolation tetrahedral wählen.
  4. Bei Bedarf die Deckkraft des Moduls reduzieren.

Wichtig: Die LUT erwartet Werte zwischen 0 und 1, also ein Bild, das der Tonemapper (sigmoid oder filmic) schon in den Bildschirmbereich gebracht hat. Werte darüber werden abgeschnitten. Wer einen Look öfter braucht, speichert das Modul danach als Style.

Grenzen und Tipps

Eine LUT wirkt punktweise: Sie sieht nur die Farbe eines Pixels, nicht seine Nachbarn. Schärfen, Entrauschen oder lokaler Kontrast sind damit grundsätzlich nicht möglich. Auch die Werkbank selbst kann nicht jede denkbare LUT erzeugen. Kanalmischer oder Farbe abhängig von der Helligkeit, etwa Split-Toning, fehlen zum Beispiel noch.

Ein paar Tipps aus meinen ersten Versuchen:

  • Kleine Schritte: 5 bis 10° Farbton oder 10 % Sättigung wirken oft schon deutlich.
  • An mehreren Bildern testen: Ein Look, der auf einem Foto toll aussieht, kann auf dem nächsten kippen.
  • Verläufe prüfen: Himmel und Haut zeigen am schnellsten, wenn eine Kurve zu steil ist.
  • Deckkraft nutzen: Oft ist die LUT bei 60 bis 80 % am schönsten.

Ausprobieren

Die Werkbank läuft komplett in eurem Browser, es werden keine Bilder hochgeladen. Ladet ein eigenes Foto, spielt mit den Kurven und exportiert eure LUT. Entstanden ist das Tool in einem langen Gespräch mit Claude, vom ersten „Wie funktioniert eine LUT eigentlich?“ bis zur 3D-Ansicht.

https://nils-becker.org/wp-content/uploads/2026/11/lut-werkbank_wordpress.html

Ich freue mich über Feedback und eure Looks in den Kommentaren.


Kommentare

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert