031、镀膜的色彩指纹——同一颗sensor配不同IR截止膜肤色偏青偏黄差多少——增透膜/蓝玻璃/镀膜曲线的级联影响与色彩标定策略
上个月在产线上碰到一个怪事,同一批IMX766 sensor,一半装进A项目用蓝玻璃IR cut,一半装进B项目用镀膜IR cut,白平衡校准后肤色一个偏青一个偏黄,Delta E差了快6个点。产线工程师拿着色卡对着测,怎么调AWB都拉不回来,最后把问题甩到我桌上。我一看数据就明白了,这根本不是AWB的锅,是镀膜曲线在作祟。
先说说这个偏色的量级。我们用X-Rite ColorChecker Classic 24色卡,在D65光源下,同一颗sensor分别配两种IR cut膜,测出来的肤色块(第10号色块)a值差了约4.5,b值差了约3.8。换算成RGB的话,R通道差了约12个DN值(8bit),B通道差了约8个DN值。这个差异在肤色上表现就是:蓝玻璃那边偏青(B通道响应偏高),镀膜那边偏黄(R通道响应偏高)。别小看这几个DN值,在暗部肤色上会被放大到肉眼可辨的程度,尤其是侧光场景下,脸颊和额头的过渡区会明显发绿。
根因在哪儿?IR截止膜的截止波长和陡度决定了sensor在红光和蓝光波段的响应平衡。蓝玻璃的截止曲线比较平缓,从600nm到700nm是逐渐衰减的,而镀膜(比如常见的SP0140)在650nm附近有个陡峭的截止沿,但它在580nm到620nm这个区间会有个小的透射峰凹陷。这个凹陷正好落在肤色反射率较高的黄橙波段,导致R通道的量子效率被压低了。但问题来了,sensor本身的R像素响应峰值在610nm左右,镀膜凹陷刚好卡在这个位置,所以R通道信号衰减比B通道更明显。AWB算法一看R通道偏弱,就自动拉高R增益,结果把本来正常的B通道也带偏了,肤色就发黄了。
这里有个关键点很多人忽略:增透膜和IR截止膜是叠在一起的。镜头组里通常有3-4片镜片,每片都镀了增透膜,这些膜的剩余反射率在可见光波段虽然只有0.5%以下,但在近红外波段(700-900nm)反射率会飙升到5%以上。这些反射光在镜片之间多次反射后,会以杂散光的形式重新进入sensor,等效于在R通道上叠加了一个偏红的背景光。这个背景光在蓝玻璃方案里被吸收掉了,但在镀膜方案里,因为镀膜对近红外的截止不如蓝玻璃彻底,所以杂散光的影响被放大了。实测下来,镀膜方案的R通道暗电流噪声比蓝玻璃方案高了约15%,这就是肤色偏黄的另一个推手。
再说说级联影响。sensor本身的micro lens和color filter也有自己的光谱响应,这三层叠加起来才是最终的光谱灵敏度。我们做过一个实验,把同一颗sensor的color filter换成不同批次的(同型号但镀膜厚度有微小差异),配合同一款IR cut膜,肤色a*值能差出2个点。这说明什么?说明镀膜曲线的容差和color filter的容差是相互耦合的,单独控制任何一项都压不住偏色。产线上经常遇到的情况是:IR cut膜换了批次,color filter没换,结果偏色就冒出来了。因为IR cut膜的批次间差异(截止波长±5nm)和color filter的批次间差异(峰值波长±3nm)叠加后,R通道的响应波动能达到±8%,这个量级足以让肤色从正常变成偏青或偏黄。
那怎么标定?常规做法是重新做AWB的golden sample校准,但这治标不治本。因为AWB只能补偿白平衡增益,补偿不了光谱响应形状的改变。你拉高了R增益,肤色是回来了,但红色物体的饱和度会过冲,绿色物体的色相会偏移。我见过一个项目为了压肤色偏黄,把R增益拉高了8%,结果拍红色汽车时,车漆变成了荧光橙。
我的做法是分三步走。第一步,在产线端建立镀膜曲线的SPC监控,每批次IR cut膜来料时用光谱仪测三条曲线:透射率曲线、截止波长、截止陡度(10%-90%的波长跨度)。把这三条曲线和sensor的光谱响应做卷积,算出等效的R/B响应比,这个比值直接作为AWB的初始增益参考。如果比值超出±3%,就判定该批次镀膜需要单独做色彩标定。第二步,在实验室端建立"镀膜-色彩"映射表,用10种不同截止波长的IR cut膜(从630nm到680nm,每5nm一档)配合同一颗sensor,拍100个场景,记录每个场景下ColorChecker的ab偏移量,拟合出偏移量和截止波长的线性关系。这个关系式可以直接写进产线校准工具里,输入镀膜的实测截止波长,就能预测出需要补偿的ab偏移量。第三步,在ISP端做动态白平衡补偿,不是简单调增益,而是在AWB的色温估计模块里加一个镀膜补偿项。具体做法是:在AWB的统计窗口里,把R/B通道的响应比值乘上一个修正系数,这个系数由镀膜的实测截止波长查表得到。这样AWB在估计色温时,就不会被镀膜的偏色误导。
这里有个坑必须提醒:别在产线上用灰卡做白平衡校准来替代镀膜标定。灰卡只能校准中性色,校准不了光谱形状。你拿灰卡校准完,肤色还是偏的,因为灰卡的反射率是平坦的,它反映不出镀膜在肤色波段的凹陷。我见过有工程师用灰卡校准后,肤色偏黄问题依旧,然后怀疑是sensor坏了,换了一颗sensor还是偏黄,最后才发现是镀膜批次的问题。
再说说增透膜的影响。很多人以为增透膜只影响透过率,不影响色彩,其实不然。增透膜的剩余反射率在可见光波段虽然低,但在蓝紫波段(400-450nm)和红橙波段(600-650nm)会有微小的波动,这个波动会改变镜头的有效光谱透过率。我们实测过一款三片式镜头,增透膜在620nm处的剩余反射率比580nm处高了0.3%,这个差异在普通场景下看不出来,但在低照度下(比如10lux以下),因为信号量小,这个0.3%的差异会被放大到R通道噪声的5%左右,导致暗部肤色发红。所以增透膜的设计也要纳入色彩标定的范畴,不能只看透过率指标。
实际操作中,我建议在产线校准流程里加一个"镀膜指纹"采集步骤。每批次镜头和IR cut膜组装完成后,用积分球光源(D65模拟)照射一个标准肤色卡,拍一张RAW图,提取R/B通道的比值,和基准值对比。如果偏差超过阈值,就触发重新标定。这个步骤只要30秒,但能省掉后面大量的返工。我们现在的产线就是这么干的,镀膜批次切换时,自动触发一次指纹采集,AWB参数自动更新,肤色偏色问题从原来的每月3-4起降到了几乎为零。
最后说点个人经验。镀膜偏色问题最麻烦的不是偏色本身,而是它的隐蔽性——它不会让画面明显偏色,只是让肤色看起来"不够通透"或者"有点闷"。这种主观感受很难用客观指标量化,但消费者能感知到。所以我的建议是:在项目定义阶段,就把镀膜曲线和sensor光谱响应一起做仿真,算出预期的肤色偏移量,提前决定是调整镀膜设计还是调整ISP参数。别等到量产了才发现偏色,那时候改镀膜要重新开模,改ISP要重新调参,都是伤筋动骨的事。另外,别迷信"蓝玻璃一定比镀膜好",蓝玻璃在近红外截止上确实更彻底,但它的透过率在可见光波段比镀膜低3-5%,这意味着低照度下噪点会更多。镀膜方案只要把截止波长和陡度控制好,配合ISP补偿,完全能做到和蓝玻璃一样的色彩表现,而且成本更低、透过率更高。关键是要建立"镀膜-色彩"的量化关系,而不是靠感觉调。