Farbgrading
Skript: scripts/grade.py QUELLE AUSGABE --look NAME [--staerke 0.8] [--lut datei.cube] [--vergleich raster.png]
Listet Looks mit --list auf. Wendet einen Look als ffmpeg-Filterkette an; --vergleich rendert Vorher/Nachher-Standbilder mehrerer Looks, damit Sie (und der Benutzer) mit dem Auge auswählen können.
1. Reihenfolge der Operationen (immer)
- Input-Transformation: Rotation/HDR/Log → Rec.709 (Color Space Transform in Resolve, LUT oder Tonemap in ffmpeg). Niemals Log-Material direkt nach Augenmaß gradieren.
- Korrektur (neutral und konsistent machen): Weißabgleich → Belichtung → Kontrast → Sättigung. Ziel: Weiß ist weiß, Schwarz ist schwarz, Haut ist natürlich, jedes Shot passt.
- Look / kreatives Grading: Farbtonverschiebungen, Split-Toning, Kurven, LUT mit reduzierter Stärke.
- Finishing: Vignette, Korn, Halation, Schärfung zuletzt.
Grading pro Segment vor dem Zusammenfügen, damit Sie nur einmal codieren. Gleicher Look für jeden Clip einer Sequenz, es sei denn, ein Wechsel ist eine Story-Beat (z. B. ruhig warm A → chaotisch kalt B).
2. Gedankenmodell: ASC CDL
Pro Kanal: out = (in × Slope + Offset) ^ Power, dann Sättigung.
- Slope → Lichter/Verstärkung, Offset → Schatten/Anhebung, Power → Mitten/Gamma.
- Warme Lichter: R-Slope erhöhen, B-Slope leicht senken. Teal-Schatten: Offset von B und G nach oben, R nach unten.
- ffmpeg-Äquivalente:
colorbalance(Schatten/Mitten/Lichter pro RGB),colorlevels,curves,eq(Kontrast/Helligkeit/Sättigung/Gamma),colortemperature,lut3d,colorchannelmixer.
3. Looks (Startpunkte – auf Frames beurteilen, dann anpassen)
| Look | Gefühl | Schlüsselbewegungen |
|---|---|---|
neutral-punch | sauber, social-media-tauglich | kleine S-Kurve, +8 % Sättigung, keine Farbtonverschiebung |
teal-orange | Blockbuster, Reise | Teal-Schatten, warme Lichter, Haut schützen (Orange ist der Hautton) |
warm-golden | nostalgisch, Essen, Lifestyle | WB +300-600 K, angehobene warme Schatten, weicher Kontrast |
cool-moody | Technik, Nacht, Drama | kühlerer WB, entsättigte Mitten, tiefe, aber nicht zerquetschte Schwarztöne |
film-kodak | 2383/Portra-artiger Print | abgerollte Lichter, leichte Grün-Cyan-Schatten, warme Mitten, Korn 4-8 % |
bleach-bypass | gritty, Krieg, Sport | hoher Kontrast, -40 % Sättigung, silbrige Lichter |
pastel-matte | ästhetisch, minimal, Mode | angehobene Schwarztöne (matt), niedrigerer Kontrast, -15 % Sättigung, Pink/Pfirsich-Höhen |
day-for-night | künstliche Nacht aus Tagaufnahmen | -1,5 bis -2 Blendenstufen, Blaustich, Sättigung 0,3-0,5, Himmel unterdrücken, praktische Lichter warm halten |
vintage-faded | Heimvideo, 90er | ausgeblasene Schwarztöne, Gelb-Grün-Höhen, Chromarauschen, Weichheit |
bw-contrast | zeitlos, dokumentarisch | Luminanzmischung (R stark für Haut), starke S-Kurve, Korn |
cyberpunk-neon | Nachtstadt, Gaming | Magenta-Cyan-Split, hohe Sättigung in Lichtern, Bloom auf Lichtern |
Day-for-Night-Referenz: DaVinci Resolves „LMT Day for Night“ arbeitet in ACES AP1 linear als power 0.5 → slope (0.3, 0.5, 0.8) → power 2.2 → saturation 0.3. Um es auf Rec.709-Material anzuwenden, konvertieren Sie Rec.709 → linear AP1, wenden es an, konvertieren zurück und brennen es in einen 33-Punkt-.cube. Heben Sie sehr dunkle Quellen vor der LUT leicht an.
4. LUTs
- Anwenden mit
lut3d=datei.cube:interp=tetrahedral. Mit reduzierter Stärke durch Überblendung:split[a][b];[b]lut3d=x.cube[g];[a][g]blend=all_expr='A*(1-0.7)+B*0.7'. - Technische LUTs (log→709) sind exakt, 100 % verwenden. Kreative LUTs sind Würze, normalerweise 40-80 %.
- Niemals eine
.cube-Datei in den Kontext einlesen (Zehntausende von Zahlen). Betrachten Sie deren Wirkung auf einem Frame. - Benutzerdefinierte LUTs in Python generieren: ein 33³-Gitter aufbauen, Ihre Farbfunktion mit numpy anwenden,
LUT_3D_SIZE 33+ Zeilen (R am schnellsten) schreiben.
5. Hauttöne
- Haut liegt auf der Hautton-Linie (~123° im Vektorskop, I-Linie) unabhängig von der Ethnie; nur Luminanz und Sättigung ändern sich.
- Bei Teal/Cool-Looks Haut isolieren (HSL-Key Farbton 0-50°, mittlere Sättigung) und halten, sonst wird das Gesicht grau/grün.
- Jedes Gesichtshot im Grading in voller Größe prüfen.
6. Shot Matching
- Zuerst Belichtung abgleichen (Wellenform/durchschnittliche Luma), dann WB (neutrales Objekt oder Weiß), dann Sättigung.
- Schneller numerischer Abgleich: Mittelwert und Standardabweichung eines neutralen Bereichs zwischen Shots pro Kanal vergleichen; Slope/Offset anpassen, bis sie innerhalb von ~2-3 % liegen.
- Gemischte Kameras (Handy + Action-Cam + DSLR): Alle zuerst nach Rec.709 konvertieren, dann an die Hauptkamera anpassen.
7. Letzte Handgriffe
- Korn:
noise=alls=6:allf=t(temporal). Nach dem Skalieren auf die endgültige Größe hinzufügen. 4K-Clips: Korn überlebt Kompression bei etwas stärkeren Werten besser. - Vignette:
vignette=PI/5subtil. Vermeiden bei Inhalten mit Text in der Nähe der Ränder. - Halation / Bloom: Eine lichterbetonte Kopie weichzeichnen (Schwellwert, gblur 20-40), rot-orange einfärben, mit 15-30 % überblenden.
- Schärfen:
unsharp=5:5:0.6einmal, am Ende, in endgültiger Größe. - HDR nach SDR: Siehe
ffmpeg-pipelineTonemapping.
8. In DaVinci Resolve
Node-Tree-Baseline: CST in → WB/Belichtung → Kontrast/Sättigung → sekundär (Haut) → Look/LUT → CST out → Korn/Vignette. Color Space Transform mit Eingang = Kameralog (z. B. Apple Log) und Ausgang = Rec.709 Gamma 2.4 verwenden. Grades mit Standbildern oder Color Groups (vor/nach Clip) kopieren. Siehe davinci-resolve.
9. Überprüfung
Vorher/Nachher-Standbilder von 3+ Shots (hellster, dunkelster, ein Gesicht) nebeneinander. Prüfen: keine übersteuerten Lichter auf Haut, Schwarztöne nicht zerquetscht, wo Details wichtig sind, Texteinblendungen noch lesbar, einheitlicher Look über Schnitte hinweg.