Fotografie-treue Farbkorrektur
Wann verwenden
- Der Benutzer gibt ein Referenzbild und ein zu bearbeitendes Foto und fordert: „Stell den Farbton nach diesem ein“
- Der Benutzer hat eine Serie bereits bearbeiteter Fotos und möchte deren Stil für eine neue Serie konservieren
- Der Benutzer möchte nur den Himmel abdunkeln, aber Boden und Gesichter unberührt lassen – zonale Anpassung
- Der Benutzer möchte einen Look stapelweise anwenden und verlangt: „Keine Inhalte ändern, kein Neuzeichnen“
- Der Benutzer möchte einen Stil auf Echtheit prüfen: Gibt es Banding, Farbstiche, abgesoffene Lichter oder Tiefen?
- Der Benutzer zeigt ein Bild und fragt „Ist das richtig bearbeitet? Wo sind die Probleme?“, ohne Referenzbild
- Das Material des Benutzers könnte Log / nicht farbtransformiert sein (S-Log3, V-Log, HLG Frames aus Kamera-Raw)
- Der Benutzer beklagt sich über generative Bearbeitung: „Gesichter wurden verändert“, „Auflösung verloren“ – genau diese Anforderungen adressiert dieses Skill
Nicht geeignet: Aufgaben, die Lichtrichtung ändern, Himmel ersetzen, Objekte hinzufügen oder semantisches Neumalen erfordern. Dieses Skill produziert ausschließlich Farbabbildungen, keine Inhaltsänderungen.
Kernmodell
- Ein „Stil“ = Basis
.cube+ optionale zonale.cube(einer pro Zone) + Versionshistorie + Batch-Archiv + Themen-Tags, gespeichert incolor-styles/<name>/ - Stil anwenden = Pixelweise Lookup-Table, dann semantische Masken für zonale LUTs darüberlegen. Ausgabe ist streng identisch in der Größe mit dem Original, strukturelle SSIM ist konstant 1.0
- Zwei Arten der Stilgenerierung:
fit: Lernen aus Paaren von „Original / bearbeitet“, präzise (gemessener ΔE2000 0.55–0.9), benötigt 3+ Paareref: Statistische Farbübertragung vom Referenzbild, schnell aber grob (gemessener ΔE2000 ≈ 4), ein Einzelbild reicht, gut für den Kaltstart
- Jeder
fitist ein „Commit“, der automatisch integriert wird: Bestimme Zugehörigkeit zu einem Stil → Führe alle historischen Stichproben neu zusammen → Neuberechnung der LUT → Archivierung → Themen-Tagging. Kein Training, keine GPU erforderlich
Was lösen die Zonen?
Eine globale LUT kann nur beantworten: „Wie wird diese Farbe abgebildet?“. Wenn dieselbe Farbe in verschiedenen Regionen unterschiedlich gewünscht wird – das klassische Beispiel ist ein grau-weißer Himmel soll abgedunkelt werden, während eine ebenso grau-weiße Straße erhalten bleiben soll – gibt es mathematisch keine Lösung für eine globale Abbildung. Die Methode der kleinsten Quadrate würde nur den Mittelwert nehmen, der beidem nicht gerecht wird.
Gemessen (eine bewölkte Straßenszene, nur Himmel um −28% abgedunkelt):
| Himmel ΔE2000 | Nicht-Himmel ΔE2000 | |
|---|---|---|
| Globale LUT | 11.27 | 0.322 |
| Global + Himmel-Zone | 1.50 | 0.324 |
Die Nicht-Himmel-Fehler sind identisch, was zeigt, dass die Zone keine zusätzliche Verunreinigung einführt, sondern nur den „nicht lernbaren“ Teil ergänzt.
Zonen: sky / people / veg / water / ground / arch, Standard: sky,people,veg, bereitgestellt durch ein integriertes SegFormer-B0-Modell (4,4 MB), das weiche Masken ausgibt.
Arbeitsablauf
1. Abhängigkeiten prüfen
python -c "import numpy, PIL; print('ok')"
python -c "import onnxruntime; print('seg ok')" # Für Zonen und Themen-Tagging erforderlich
python -c "import tifffile; print('tif ok')" # Für 16bit TIFF Lesen/Schreiben
python -c "import rawpy; print('raw ok')" # Für RAW-Direktlesen, optional
Fehlende Pakete: python -m pip install numpy pillow onnxruntime tifffile rawpy. Fehlendes onnxruntime verursacht keinen Absturz, es erfolgt ein Fallback auf reine globale Farbkorrektur.
2. Material kurz prüfen (empfohlen, spart unnötige Arbeit)
python <SKILL_DIR>/scripts/grade.py check --in ./photos/original --person
Kein Referenzbild nötig, beantwortet nur zwei Dinge:
- Was ist das für Material:
transfer.verdict=display/ambiguous/log. Bei Log-Material würdefitdie Log-Kurve selbst in die LUT lernen, das Bild sähe zwar vernünftig aus, wäre aber falsch.--personführt eine Segmentierung durch, damit der Hautfarbton Sinn ergibt (ohne Personen wird nicht bewertet). - Hat das Endprodukt sichtbare Mängel: Median-Helligkeit, Schwarzpunkt, Anteil abgesoffener/überbelichteter Pixel, Anzahl Farbstich-Stufen, Farbenreichtum. Werte außerhalb des Toleranzbereichs werden in
warningsaufgeführt.
apply und fit führen diese Prüfungen intern ebenfalls automatisch durch, dieser Schritt ist also vor der Batch-Auslieferung einmal ausreichend.
3. Stapel von Material einreichen (Kernaktion)
python <SKILL_DIR>/scripts/grade.py fit \
--src ./photos/original --tgt ./photos/retouched
--src/--tgtwerden nach Dateinamenstamm gepaart; alternativ kann--pair Original Bearbeitetwiederholt für Einzelpaare verwendet werden- Unterschiedliche Bildgrößen im Verzeichnis stören nicht, aber jedes Paar muss intern gleich groß sein
- Ohne
--nameist der Modus automatisch: Vergleiche mit vorhandenen Stilen, bei geringem Abstand integrieren, sonst neu anlegen --name warm_filmist explizit: Existiert der Name, wird integriert; sonst neu anlegen--regions sky,people,vegaktiviert Zonen (Standardwert). Mit--regions ""wird auf rein global zurückgegriffen--auto-threshold 1.5ist der ΔE-Grenzwert für „derselbe Stil“
4. Anwenden
python <SKILL_DIR>/scripts/grade.py apply \
--style warm_film --in ./photos/new --out ./out --strength 1.0
--style auto erkennt zuerst das Thema der Eingabebilder und wählt dann den am besten passenden Stil aus (das Ergebnis wird im Feld auto erläutert).
Vor der Auslieferung look und warnings prüfen. Wenn look.median_luma von [0.195, 0.302] auf [0.55, 0.95] steigt, bedeutet dies: Das Bild ist deutlich heller als das Material, aus dem der Stil gelernt wurde, und die Lichter werden übersteuert. In diesem Fall gibt es nur drei Optionen – --strength 0.7 reduzieren, --match-key on um die Belichtung vor dem LUT-Auftrag auf das Niveau des gelernten Stils zu bringen (nur für Serien mit gleichem Licht geeignet), oder die hellere Darstellung akzeptieren. Nicht stillschweigend für den Benutzer entscheiden.
--match-key off|on|auto (Standard off): Gleicht die Helligkeit des Bildes vor dem LUT-Auftrag an die des gelernten Stils an. Bei Gegenlichtaufnahmen kann dies das Hauptmotiv schädigen, siehe Echtheits-Regel Nr. 14.
Ausgabeformat und Bildqualität
Standardmäßig werden zwei Dateien ausgegeben, nicht nur die erste:
| Produkt | Standard | Verwendung |
|---|---|---|
<Name>__<Stil>_v<N>.jpg | q98, 4:4:4, ICC/EXIF/DPI erhalten | Auslieferung, Teilen, Social Media |
<Name>__<Stil>_v<N>__master.png | 8bit verlustfrei, mit ±0.5 LSB Dithering | Weitere Bearbeitung, Vergrößerung, Druck |
--quality 98: JPEG-Qualität. q95→q98 ergibt gemessen PSNR 48.7→50.6 dB, Dateigröße 337→512 KB. Mit q92 halbe Größe, 3 dB weniger, sichtbar in Farbverläufen (z. B. Himmel).--master png|tif|none:tifverwendet 16bit (erforderttifffile; bei fehlender Installation wird automatisch auf 8bit PNG reduziert und einmaster_notevermerkt, bestehende JPGs bleiben unberührt). Bei Batch-Verarbeitung und Platzmangel:--master none.- Ist die Quelldatei bereits
.png/.tif/.bmp, wird kein Master erstellt – das Hauptprodukt ist bereits verlustfrei. - ICC, EXIF, DPI werden aus der Quelle übertragen. Das Fehlen von ICC wirkt besonders wie „Qualitätsverlust“: Ein Bild im P3/AdobeRGB-Farbraum wird ohne ICC-Tag von jedem Betrachter als sRGB interpretiert, die Farben wirken sofort fahl und matt.
- Dithering wird nur bei verlustfreien Formaten angewendet. Bei JPEG ist der Quantisierungsfehler ohnehin um eine Größenordnung gröber als 1 LSB, Dithering wäre dort reine Bitratenverschwendung.
Wenn der Benutzer „komprimiert“ sagt, zuerst die Quelle prüfen, nicht die Parameter ändern. apply vermerkt im source_note, ob die Quelle ein JPEG mit weniger als 0.10 Bytes pro Pixel ist – ein Zeichen für eine über Chat-Dienste weitergeleitete Kopie (1080p nur etwas über 100 KB). Die Details gingen bereits vor diesem Schritt verloren, selbst eine verlustfreie Ausgabe kann das nicht rückgängig machen. Zwei weitere häufige Fehlinterpretationen: Die Bildqualität im Vorschaumodus eines Chat-Fensters beurteilen (die Plattform komprimiert erneut) oder die Bewertung anhand einer final_sheet.jpg-Montage (halbe Auflösung).
5. Verifizieren
python <SKILL_DIR>/scripts/grade.py verify \
--style warm_film --src ./photos/original/a.jpg --tgt ./photos/retouched/a.jpg \
--threshold 2.0
Mit --threshold wird der Vorgang bei Überschreitung mit Exit-Code 2 beendet – nützlich für Pipeline-Gates.
6. Für andere exportieren
python <SKILL_DIR>/scripts/grade.py export --style warm_film --out ./for_lightroom --full
--full erstellt zusätzlich eine Anschlussanleitung (Basisebene über das gesamte Bild → Zonenebenen mit weicher Maske kombinieren → 1–2% Bildschirmgröße weichzeichnen).
Zonale Stile können nicht mit nur einem .cube ausgedrückt werden: Eine einzelne 3D LUT ist eine Funktion der Pixelfarbe und kann nicht ausdrücken, dass dieselbe Farbe in verschiedenen Regionen unterschiedlich behandelt wird.
7. Rückgängig machen und Nachverfolgung
python <SKILL_DIR>/scripts/grade.py batches --style warm_film # Aus welchen Batches besteht dieser Stil?
python <SKILL_DIR>/scripts/grade.py undo --style warm_film --batch b20261108_101500
python <SKILL_DIR>/scripts/grade.py styles # Alle Stile + Tags + Kurzbeschreibung
python <SKILL_DIR>/scripts/grade.py styles --name warm_film # Vollständiges Manifest eines Stils
undo löscht keine Version: Es entfernt den entsprechenden Batch aus der Zusammensetzung, erstellt mit den verbleibenden Batches eine erneute Anpassung und generiert eine neue Version. Alte Versionen bleiben immer erhalten.
Ausgabe interpretieren
Alle Befehle geben JSON auf stdout aus.
| Feld | Bedeutung | Bewertung |
|---|---|---|
quality.dE2000_mean | Durchschnittliche Farbdifferenz auf den Trainingspaaren (mit Zonen) | < 2 nutzbar; 2–4 grenzwertig; > 4 deutet darauf hin, dass die Paare keine reine Farbbeziehung haben |
decision | Wie wurde dieser Batch verarbeitet? | create-new / merge-nearest / merge-into-named |
auto.distance | Abstand zum nächsten Stil | Deutlich kleiner als der Schwellenwert, aber neu erstellt, oder deutlich größer und trotzdem integriert? Dann Fehlentscheidung |
auto.nearest | Die drei nächsten Stile und deren Abstände | Dient zum Verständnis der Entscheidungsfindung |
learned_from | Wie viele historische Stichproben wurden beim Integrieren verwendet? | Nur new_samples ohne archived bedeutet erster Durchlauf |
diagnostics.coverage_pct | Anteil der LUT-Gitterpunkte, die von Daten abgedeckt werden | 30–50% normal (Naturbilder belegen nur einen Teil des Farbraums) |
diagnostics.lut_clipped_pct_observed | Anteil der Datenbereiche, die auf 0/1 gedrückt werden | > 2% deutet auf möglichen Verlust in Lichtern/Tiefen hin |
regions.active | Tatsächlich aktive Zonen | Leer = diese Zonen kamen im aktuellen Batch nicht vor |
region_diagnostics.<r>.skipped | Grund für Überspringen einer Zone | too few pixels normal; no residual learned = die Zone verhält sich wie global |
description.summary | Ein-Satz-Beschreibung des Stils | Für den Benutzer, direkt weitergeben |
description.region_extra | Was jede Zone im Vergleich zur globalen LUT zusätzlich macht | Nur vorhanden, wenn Zonen aktiv sind |
tags | Automatisch erkanntes Thema | portrait / landscape / street / indoor / night |
diagnostics.prior_shrink | Prior-Stärke, 1.0 = volle Übernahme | Jede Anpassung testet die beste aus 1.0 / 0.5 / 0.2 / 0.05, prior_trials gibt die jeweiligen dE an |
health.monotonic_violations | Anzahl der Verstöße gegen Monotonie | Standardmäßig auf 0 erzwungen; tritt nur bei --no-monotonic auf |
fit_quality.geometry_preserved | Geometrie erhalten? | Muss true sein |
key_match.applied | Wurde die Belichtung vor dem LUT-Auftrag an den Stil angeglichen? | Standardmäßig off; bei Aktivierung werden Stops, Gamma und angepasster Median angegeben |
transfer.verdict | Ist das Material Display-Referenz, Log oder nicht eindeutig? | log muss vor dem fit farbtransformiert werden; ambiguous erfordert Benutzerbestätigung der Quelle |
warnings[].metric / .note | Probleme der referenzlosen Selbstprüfung | Nachricht aus note direkt an Benutzer weiterleiten; leeres Array = keine Probleme gefunden |
look | [Original, Ergebnis] Median-Helligkeit / Anteil abgesoffener Pixel / Sättigung | Beantwortet die Frage „Was macht dieser Stil mit diesem Bild?“ |
input_guard | Bei fit wurde festgestellt, dass das Original nicht in Display-Encoding ist | blocking: false ist nur eine Warnung, kein Abbruch |
input_transfer | Bei apply sind Bilder gemischt, die nicht Display-Encoding haben | Pro Datei ein verdict, siehe oben |
Echtheits-Regeln
- RAW ist näherungsweise dekodiert. libraw verwendet Kamera-Weißabgleich und generische Farbmatrix, nicht das Kamera-DCP. Derselbe Stil auf unterschiedlichen Kameragehäusen führt zu Abweichungen und ist auch nicht das Rendering von Lightroom. Für präzise Auslieferung den Benutzer bitten, 16bit TIFF zu exportieren.
- LUT-Ankerraum ist sRGB gamma 2.2. Beim Export eines
.cubefür andere muss dies angegeben werden, sonst ist die Farbe bei falscher Raumzuordnung komplett falsch. - Zonale Stile können nicht mit einem einzelnen
.cubeausgedrückt werden.vN.cubeist nur die globale Basisebene; zonale Abbildungen befinden sich invN_<region>.cubeund benötigen Masken. Beim Export mitexport --fullwerden Zonenebenen und Anschlussanleitung mitgeliefert. - Overbelichtete Pixel werden unverändert durchgelassen. Am Ende der Berechnung erhalten Pixel mit dem hellsten Kanal ≥0.97 einen weichen Übergang zurück zum Original: In überbelichteten Bereichen gibt es keine Farbinformation, jede Abbildung wäre erfunden. Gemessen an einem Gegenlichtsonnenball wurde dieser durch die zonale Maske zu einem grau-blauen Fleck; mit Schutz wird er zu einem warm-weißen Licht zurückgewonnen. Der Preis ist, dass hellste, hochgesättigte Lichter nicht mehr umgerechnet werden (Farbkarten-Training ΔE 1.15→1.21). Bei Bedarf, auch Überbelichtung mit abzudunkeln,
--no-clip-guardverwenden. - Weiche Masken haben einen Übergangsbereich, der beabsichtigt ist: Ein harter Übergang zwischen zwei unterschiedlichen Abbildungen würde sichtbare Konturen erzeugen. Der Preis ist ein möglicher „Halbton“-Streifen von etwa einem Dutzend Pixeln an der Grenze zwischen Himmel und Baumwipfeln.
- Die Masken haben nur 128×128 Auflösung. Strukturen feiner als etwa 1/128 der Bildgröße (dürre Äste, Stromleitungen, dünne Stäbe) werden der umgebenden Zone zugeschlagen. Diese Strukturen sind meist Silhouetten, die nach Abdunklung unauffällig sind; für pixelgenaue Maskierung bitte externe Werkzeuge verwenden.
- Bereiche mit geringer Konfidenz werden nicht angepasst. Himmel, der durch Gegenlicht ohne Farbe überbelichtet ist, oder von Blättern zerschnittener Himmel – das Modell kann keine zuverlässige Maske liefern, dieser Teil wird auf die globale LUT zurückgesetzt. Lieber weniger anpassen als falsch.
- Tierporträts können als Menschen erkannt werden. ADE20K stuft eine Nahaufnahme einer Katze als Person ein (gemessen bei 88% des Bildes). Dieses Skill verwendet den „Anteil Hautfarbe im Person-Bereich“ als Ausweg: unter 5% wird auf Null gesetzt. Extreme helle Haustiere könnten dennoch durchrutschen.
- Der
ref-Modus sollte nicht als „präzise Kopie“ beworben werden. Er gleicht nur die Lab-Verteilung an, gemessener ΔE ca. 4; für Präzision istfiterforderlich. - Die Schieberegler der Beschreibungsebene sind Schätzwerte. Die Spalte
measuredist reproduzierbar,estimate_lightroomnicht – von LUT zu Schieberegler gibt es keine eindeutige Lösung. - Die referenzlose Selbstprüfung erkennt nur „offensichtliche Fehler“, kann nicht beurteilen, ob es „schön“ ist. Sie verwendet klassische statistische Ziele (Median-Helligkeit 0.45, Schwarzpunkt 0.02, Hautfarbton 20°), aber Nachtaufnahmen sollen einen niedrigen Median haben, Sonnenuntergänge sollen warm sein. Deshalb hat jeder Parameter einen Toleranzbereich; die Warnung bedeutet „schau mal hin“, nicht „Fehler“. Zwei harte Grenzen: Hautfarbe wird nur bewertet, wenn die Segmentierung Personen erkennt, sonst würde eine warme Straßenszene 30% des Bildes fälschlich als Haut deuten; Weißabgleich wird nur bewertet, wenn das Bild genügend neutrale Pixel enthält.
- Die Log-Erkennung basiert auf der Histogrammform, nicht auf Metadaten. Das Bild ist zu diesem Zeitpunkt meist PNG oder das Rendering von libraw, EXIF ist längst verloren. Es werden daher Schwarzpunkt-Anhebung, zurückgenommene Lichter, geringer Dynamikumfang und niedrige Sättigung gezählt; bei drei oder mehr Übereinstimmungen wird
logausgegeben, bei zweiambiguous. Ein mattschwarzer, verblasster Stil könnte fälschlich alsambiguousgemeldet werden – dies ist eine bekannte falsch-positive Richtung. - Ein Stil trägt eine Belichtungseigenschaft; eine LUT ist nur im Helligkeitsbereich vertrauenswürdig, in dem sie gelernt wurde. Ein Look, der den Median von 0,19 auf 0,28 anhebt, auf ein Bild mit Median 0,55 angewendet, treibt den Median auf 0,95 – das ist kein Bug, sondern der Look hat einfach nicht genug Lichterreserve. Gemessen: Die Anpassung beobachtete nur den Quellbereich 0~0,42, der Quell-P99 lag bei 0,42 / Ziel-P99 bei 0,56; auf ein Bild mit P99 0,72 angewendet, wird der darüber hinausgehende Teil linear extrapoliert, was die Lichter übersteuert.
- Nicht stillschweigend die Belichtung für den Benutzer angleichen.
--match-keykann zwar den Median des Bildes vor dem LUT-Auftrag auf das Niveau des gelernten Stils bringen, aber bei Gegenlichtaufnahmen kehrt es sich um: In einem realen Gegenlichtporträt (Gesicht 0,27, Hintergrund 0,62) wird das Gesicht nach Angleichung auf 0,08 gedrückt, das Motiv ist schwarz. Deshalb ist es standardmäßig deaktiviert und sollte nur bei „inkonsistenter Belichtung in Serien mit gleicher Kameraposition und gleichem Licht“ eingeschaltet werden. Die Entscheidungsgrundlage ist einfach: Steht das Verhältnis von Motivhelligkeit zu Hintergrundhelligkeit in diesem Bild im Einklang mit dem Referenzbild? - Wenn das Motiv in einem Frame dunkler ist als der Hintergrund, im Referenzframe aber das hellste Element ist, kann keine globale monotone Abbildung beiden gerecht werden. Um beides zu erreichen, sind lokale Anpassungen nötig. In diesem Fall Priorität auf das Motiv, akzeptiere dass der Hintergrund heller wird; umgekehrt würde das Gesicht abgesoffen.
- Eine vorhandene Wärme im Material kann sich mit einem warmen Look zu einem Orangerot addieren. Ein an sich um 0,46 Stufen warmes dunkles Porträt, mit warmem Look belegt: Gesicht von warmbraun zu orangerot, cast auf 0,77, Wangen bekommen fleckigen Farbton. In diesem Fall nicht zuerst den Weißabgleich neutralisieren – die einzige „neutrale“ Farbe im Bild ist oft eine Wand, die von derselben Lampe beleuchtet wird; eine Korrektur würde die Wand grün schieben und den Hautton gelb-grün (gemessen wurden zwei Versuche mit 0.5/0.75, beide schlechter). Die korrekte Reihenfolge: Zuerst
--strengthreduzieren (auf etwa 0,6), wenn das nicht zufriedenstellend ist, auf reine Helligkeitskurve oder linearen Belichtungsgain umsteigen – nur Helligkeit ändern, nicht den Farbton, die vorhandene Wärme bleibt erhalten. - Jede JPEG-Speicherung verringert die Qualität und ist irreversibel. Auslieferung in einem Durchgang mit q98; für weitere Bearbeitung die
__master.pngverwenden, nicht auf bereits gespeichertem JPEG aufbauen. Derselbe LUT dreimal mit q95 gespeichert: PSNR von 48,7 auf 48,6 dB, scheinbar gering, aber jedes Mal sammelt sich in sanften Farbverläufen (aufgehellter Himmel, Bokeh-Hintergrund) eine weitere Schicht Blockartefakte an. Bei der Fehlersuche zuerst die Quelle prüfen: War die Quelle bereits komprimiert (<0,10 Byte/Pixel)? Wenn ja, liegt der Fehler dort, nicht in den Kodierungsparametern.
Leistungs-Benchmark
| Szenario | Zeit für 10,8 MP Bild |
|---|---|
| Reine globale Berechnung | 3,6 s |
| Zonale Berechnung (2 aktive Zonen) | 6,7 s |
| Segmentierung (512px) + Hochskalierung | 0,7 s |
Ein fit (10 Paare, mit Zonen und Tagging) | ca. 12 s |
Der Engpass liegt im pixelweisen LUT-Gather (8 zufällige Lesevorgänge pro Pixel), nicht im Algorithmus. Bei Batch-Verarbeitung ist die Parallelisierung auf Bildebene über Multiprocessing am effizientesten.
Häufige Aufgaben
| Was der Benutzer sagt | Was zu tun ist |
|---|---|
| „Pass den Farbton meiner Fotoserie nach diesem Referenzbild an“ | ref Stil generieren → apply Batch |
| „Diese sind bearbeitet, ab jetzt soll alles nach diesem Stil sein“ | fit --src Original --tgt Bearbeitet → apply |
| „Ich habe eine neue Serie bearbeitet, auch nach diesem Stil“ | Bei fit mit --name auf denselben Stil verweisen, automatische Integration und Neuanpassung |
| „Nur den Himmel abdunkeln, Boden und Gesichter nicht anfassen“ | Standardmäßig sind Zonen aktiv; prüfe, ob regions.active sky enthält |
| „Der Stil ist zu stark“ | apply --strength 0.6, keine erneute Anpassung nötig |
| „Diese Version ist schlechter als die vorherige“ | apply --version <alte Versionsnummer> |
| „Der letzte Batch war falsch, rückgängig“ | batches für batch_id → undo |
| „Welcher Stil passt zu diesen Fotos?“ | apply --style auto, auto.ranking prüfen |
| „Was genau macht dieser Stil?“ | styles --name X, description.summary lesen |
| „Nach DaVinci exportieren“ | export --full; Anker sRGB gamma 2.2 erwähnen, Zonenebenen mit weicher Maske |
| „Gegenlicht / Sonnenaufgang, die Sonne soll nicht grau werden“ | Standardmäßig aktiv (Überbelichtungsschutz); falls doch grau, prüfen ob Sonne wirklich überbelichtet ist |
| „Ist das richtig bearbeitet? Wo sind die Probleme?“ | check --in X --person, die warnings einzeln weitergeben, keine eigene Beurteilung hinzufügen |
| „Ist das Log-Material?“ | check --in X, transfer.verdict und transfer.signals prüfen |
| „Verbrennt dieser Stil die Lichter?“ | apply liefert in look den Vorher-Nachher-Vergleich, warnings weist direkt darauf hin |
| „Das Bild ist viel heller als das Referenz, nach Anwendung wirkt es ausgewaschen“ | Zuerst look.median_luma auf Unterschied prüfen; --strength reduzieren; bei Serien mit gleichem Licht --match-key on testen |
| „Motiv dunkler als Hintergrund, nach Anwendung ist das Motiv schwarz“ | --match-key nicht einschalten; die Lichtverhältnisse zwischen Referenz und diesem Bild unterscheiden sich, nur lokale Anpassung hilft |
| „Das Bild ist an sich schon warm, nach Anwendung wird das Gesicht orange“ | --strength auf 0,6 reduzieren zuerst; keinen Weißabgleich neutralisieren (würde die Wand grün schieben), siehe Regel 16 |
Referenzen
references/style-schema.md: Stilverzeichnis,style.json-Felder, Versionen und Batch-Semantikreferences/color-pipeline.md: Farbmanagement, Algorithmusdetails, bekannte Einschränkungen und Parametervorschläge