返回文章列表

为什么底片反转后人脸会发青?C-41 橙色色罩消除原理与着色器实现

所有让人脸发青的反转工具都犯了同一个错:把密度空间的问题当成线性问题来解。这里给出推导和着色器代码。

发布于 2026年8月26日更新于 2026年9月2日阅读约 2 分钟·Yichen Lab

把翻拍图丢进通用修图软件或常见的底片扫描 App,点一下「反相」,人脸就会发青。常见诊断是「白平衡不对」——这是错的,所以你拉色温滑块永远调不准。这层色偏是厂商故意做进胶片里的,而清除它需要的是除法,不是减法。

一、片基为什么是橙色的

彩色负片的青、品红染料在光谱上并不纯净,会吸收本不该吸收的波段(副吸收)。放任不管,从负片还原出的所有颜色都会被污染。C-41 通用的解法是彩色偶合剂:未参与反应的偶合剂保持黄橙色,形成一层与被补偿的副吸收形状完全一致的正性色罩。那层橙色是内建的校正滤镜,不是缺陷。

由此得到的结论

冲洗完成的 C-41 负片是被刻意做成非中性的。任何假设片基中性的反转算法,从第一步就在解另一道题。

C-41彩色负片整体反转前后对比:左侧为带有浓重橙红色片基的原始翻拍负片,右侧为经对数消除色罩、S曲线拉伸与伽马校正后的标准正片成像。
C-41 原始负片(左)与经过完整去色罩算法处理后的正片(右)。必须先在光学密度域消除内建滤镜,后续的色彩平衡才有物理意义。

二、线性反相「1 − RGB」的陷阱

胶片对光的响应是指数型的。光学密度定义为 D = log₁₀(1 / T)(T 为透过率),而乳剂对曝光呈线性的是密度而非透过率。用 255 - x 反转 8 位 sRGB 值等于反转透过率:橙色分量被反转成青色留在画面里,处于透过率压缩端的暗部则被压成一块死板的藏蓝。

柯达彩色负片人像反转对比:左侧采用朴素线性反相(1 - RGB),导致肤色严重泛青发灰、暗部死黑;右侧采用密度空间对数去色罩着色器,还原出红润通透的正常肤色与自然阴影。
线性 1 − RGB 反相(左)会将橙色片基直接反转成一层糊在人脸上的青色色罩;密度空间对数除法(右)则能精确剥离偶合剂,保留真实的胶片发色。

三、在密度空间里减掉色罩

在密度空间里,去掉片基就是一次普通减法:D_image = D_pixel − D_base。两边取指数后,减法变成除法 T_image = T_pixel / T_base——这正是着色器要「除以」取样片基色而不是减去它的原因。之后一次幂运算再把乳剂的非线性响应还回来。

src/lib/film-inverter/shaders.ts — 核心几行
vec3 inverted = pow(max(vec3(0.0), 1.0 - (pixel / mask)), vec3(u_filmCurve));
inverted = clamp((inverted - u_black) / (u_white - u_black), 0.0, 1.0);
inverted = pow(inverted, vec3(1.0 / u_gamma));
  • pixel / mask——密度空间中对橙色片基的减法。
  • u_filmCurve(约 1.45–1.60)——还原 S 形乳剂响应,而非平直斜坡。
  • u_black / u_white——色阶拉伸,让直方图铺满又不截断。
  • u_gamma(1.8)——补偿显示传递函数;缺了它中间调会偏暗发闷。

四、把 `mask` 取准:40×40 加离群点剔除

整套校正只依赖每个通道一个数值,因此一颗灰尘就能毁掉一整帧。正如我们在在家反转底片操作指南中所介绍的,选准未曝光片基是决定整张成片色彩基调的关键步骤。NegaScan 会在未曝光片基(齿孔间隙或帧间空隙)取 40×40 区域求均值,并在求均值前剔除超过 1.5 倍标准差的样本,无需手工蒙版即可排除颗粒、灰尘与划痕。

五、自己跑一遍

实时反转 — 拖动对比FUJIFILM SUPERIA 200 // 35MM
负片正片
在完整工作台中打开

与工作台完全相同的着色器,运行在你自己的 GPU 上。拖动分隔条,或把自己的负片拖进来看看你那卷的表现。

如果一个反转工具说不出它把哪些像素当作片基,那它就是在猜——而这份猜测的后果,要你每一帧亲手去修。

常见技术问题

为什么胶片负片反相后人脸总是发青或发灰?
C-41 彩色负片乳剂中含有用于校正染料副吸收的「彩色偶合剂」,使片基呈现天然的橙黄色。如果只用通用软件做简单的线性反相(255 - RGB),这层橙色片基就会被翻转成它的互补色——青蓝色,从而死死附着在原本红润的肤色上。
能不能在 Lightroom 里面直接拉白平衡吸管吸片基来去色罩?
不能彻底解决。白平衡工具调整的是线性色彩增益比,而片基色罩在感光特性曲线上表现为光学密度的整体平移(指数域关系)。单靠白平衡往往会导致高光泛黄、暗部发青,色彩出现严重的交叉色污染(Cross-over)。
一次性相机(如富士一次性/写ルンです)的底片也有橙色色罩吗?
有的。绝大多数一次性胶卷相机内部装载的都是标准的 ISO 400 彩色负片(走 C-41 冲洗工艺),同样具有鲜明的橙色片基。手机翻拍或数码相机扫描后,必须经过专用的对数去色罩算法才能还原正常色彩。
去色罩时应该在底片的哪个位置取样片基颜色?
必须在完全没有曝光的纯净片基处取样,最理想的位置是相邻底片画幅之间的黑边(即未感光的片基间隔)或 135 底片的齿孔边缘。切忌在画面边缘漏光处或背光板光晕严重的区域取样。

继续阅读