色彩調光
腳本:scripts/grade.py IN OUT --look NAME [--strength 0.8] [--lut file.cube] [--compare grid.png]
使用 --list 列出可用風格。透過 ffmpeg 濾鏡鏈套用風格;--compare 會渲染多種風格的 Before/After 靜止畫面,讓你和使用者能直觀選擇。
1. 操作順序(始終遵守)
- 輸入轉換:旋轉/HDR/Log → Rec.709(在 Resolve 中使用 Color Space Transform,在 ffmpeg 中使用 LUT 或 tonemap)。切勿直接在 Log 素材上以肉眼調光。
- 校正(使其中性且一致):白平衡 → 曝光 → 對比 → 飽和度。目標:白色是白色,黑色是黑色,膚色自然,每個鏡頭匹配。
- 調光 / 創意色調:色相偏移、分色調色、曲線、低強度 LUT。
- 後製:暗角、顆粒、光暈、銳化放在最後。
請在每個片分段連合前完成調光,這樣只需編碼一次。除非劇情需要改變(例如平靜暖色 A → 混亂冷色 B),否則序列中的每個片段應使用相同風格。
2. 思維模型:ASC CDL
每個通道:out = (in × slope + offset) ^ power,然後飽和度。
- slope → 高光/增益,offset → 陰影/抬升,power → 中間調/伽瑪。
- 暖色高光:調高 R slope,稍微調低 B slope。青色陰影:偏移 B 和 G 向上,R 向下。
- ffmpeg 等效濾鏡:
colorbalance(分別調整陰影/中間調/高光的 RGB)、colorlevels、curves、eq(對比/亮度/飽和度/伽瑪)、colortemperature、lut3d、colorchannelmixer。
3. 風格色調(作為起點——在影格上判斷後再調整)
| 風格 | 感覺 | 關鍵操作 |
|---|---|---|
neutral-punch | 乾淨、適合社群媒體 | 小 S 曲線,+8% 飽和度,無色相偏移 |
teal-orange | 大片感、旅行感 | 青色陰影、暖色高光,保護膚色(橙色是膚色的色相) |
warm-golden | 懷舊、食物、生活類 | WB +300-600 K,抬升暖色陰影,柔和對比 |
cool-moody | 科技、夜晚、戲劇 | 調低色溫,降低中間調飽和度,深色但不要完全暗黑 |
film-kodak | 電影感 2383/Portra 風格 | 高光滾落,輕微綠-青陰影,暖色中間調,顆粒 4-8% |
bleach-bypass | 粗獷、戰爭、運動 | 高對比,-40% 飽和度,銀色高光 |
pastel-matte | 美學、簡約、時尚 | 抬升黑色(霧面),降低對比,-15% 飽和度,粉/桃色高光 |
day-for-night | 利用白天素材假裝夜晚 | 下調 1.5-2 檔曝光,藍色調,飽和度 0.3-0.5,壓暗天空,保留實用光源的暖色 |
vintage-faded | 家庭錄影、90 年代 | 褪色黑色,黃綠色高光,色度雜訊,柔化 |
bw-contrast | 永恆、紀錄片 | 亮度混合(R 權重大以保護膚色),強 S 曲線,顆粒 |
cyberpunk-neon | 夜城、遊戲 | 洋紅-青光分色,高光處高飽和度,光源光暈 |
日轉夜參考:DaVinci Resolve 的 "LMT Day for Night" 在 ACES AP1 線性空間中運行:power 0.5 → slope (0.3, 0.5, 0.8) → power 2.2 → saturation 0.3。要在 Rec.709 素材上使用,需先將 Rec.709 轉換為線性 AP1,套用後再轉回,並烘焙成 33 點 .cube。在 LUT 前,先稍微提亮非常暗的來源。
4. LUT
- 使用
lut3d=file.cube:interp=tetrahedral套用。透過混合降低強度:split[a][b];[b]lut3d=x.cube[g];[a][g]blend=all_expr='A*(1-0.7)+B*0.7'。 - 技術性 LUT(Log→709)為精確轉換,使用 100%。創意 LUT 是調味料,通常為 40-80%。
- 絕對不要將
.cube檔案內容讀入上下文(數萬個數字)。應透過其對影格的效果來判斷。 - 用 Python 自訂 LUT:建立 33³ 網格,使用 numpy 套用你的色彩函數,寫出
LUT_3D_SIZE 33+ 行(R 變化最快)。
5. 膚色
- 膚色位於膚色線上(向量示波器上約 123°,I-line),與種族無關;只有亮度和飽和度會變化。
- 當套用冷色/青色調光時,請隔離膚色(HSL 關鍵色相 0-50°,中等飽和度)並保持其自然,否則臉部會變成灰色/綠色。
- 調光時,一定要以全尺寸檢查每個有臉的鏡頭。
6. 鏡頭匹配
- 先匹配曝光(波紋/平均亮度),然後白平衡(中性物體或白色),最後飽和度。
- 快速數值匹配:比較鏡頭之間中性區域的每個通道平均值和標準差;調整 slope/offset 直到差異在 ~2-3% 以內。
- 混合攝影機(手機 + 運動相機 + 單眼):先全部轉換為 Rec.709,再匹配到主要攝影機。
7. 後製修飾
- 顆粒:
noise=alls=6:allf=t(時間性)。在縮放到最終尺寸後添加。4K 影片:稍微強一點的顆粒在壓縮後仍能保留。 - 暗角:
vignette=PI/5輕柔。避免用於邊緣有文字的內容。 - 光暈 / 輝光:模糊僅包含高光的複本(門檻值,gblur 20-40),染成紅橙色,以 15-30% 疊加。
- 銳化:
unsharp=5:5:0.6一次,在最後,於最終尺寸進行。 - HDR 轉 SDR:請參考
ffmpeg-pipeline的色調映射。
8. DaVinci Resolve 中
節點樹基準:CST in → WB/曝光 → 對比/飽和 → 二級(膚色) → 調光/LUT → CST out → 顆粒/暗角。使用 Color Space Transform,輸入設為攝影機 Log(例如 Apple Log),輸出設為 Rec.709 Gamma 2.4。使用靜止畫面或色彩群組(前/後片段)複製調光。請參考 davinci-resolve。
9. 驗證
比較 3 個以上鏡頭的 Before/After 靜止畫面(最亮、最暗、含臉部)並排放置。檢查:皮膚上無高光被裁切、細節處的黑色未被壓死、文字疊加仍可讀、過場時色調一致。