4、镜头阴影校正(LSC):镜头阴影现象、校正原理、网格参数调试

镜头阴影校正,圈内人常叫它 LSC。说实话,这玩意儿是 ISP 调试里最磨人的活之一。你想想看,明明镜头中心拍出来挺通透的,一到四角就暗下去了,或者偏色了。这就是典型的镜头阴影。

我刚开始调 LSC 那会儿,总觉得不就是个亮度补偿嘛,拉一拉增益就完事了。后来发现,事情远没那么简单。你增益拉多了,暗角是没了,但噪声也跟着放大了,四角全是彩噪,那画面简直没法看。

4.1 镜头阴影现象

镜头阴影,说白了就是镜头的光学特性导致的亮度不均匀。主要有两种表现:

  • 亮度阴影(Luma Shading):画面中心亮,四周暗。这个最常见,尤其是大光圈镜头。
  • 颜色阴影(Color Shading):画面中心和四周颜色不一致。比如中心偏暖,四周偏冷。这个更头疼,因为人眼对颜色不均匀特别敏感。

为什么会这样?我简单解释一下。光线从镜头中心通过时,路径短,能量损失小。从边缘通过时,路径长,而且镜头本身会有遮挡,能量自然就弱了。再加上不同波长的光在镜头里的折射率不一样,RGB 三个通道的衰减程度也不同,这就导致了颜色阴影。

关键点:亮度阴影和颜色阴影往往同时存在。调试时不能只盯着亮度看,颜色均匀性同样重要。

我记得有一次,客户拿了一颗新镜头过来,说中心到边缘的亮度差了 30% 以上。我一看,这镜头的光学设计就有问题,但没办法,硬件已经定了,只能靠 LSC 硬扛。那一次我调了整整三天,才把阴影压到 5% 以内。

4.2 校正原理

LSC 的校正原理其实不复杂。说白了就是:给暗的地方补光,亮的地方不动

具体怎么做呢?ISP 内部会维护一张增益网格表。这张表把画面分成 M×N 个网格,每个网格对应一个增益值。校正时,ISP 根据像素所在的网格位置,查表得到增益,然后乘到像素值上。

数学表达很简单:

I_out(x, y) = I_in(x, y) × Gain(x, y)

其中 Gain(x, y) 就是网格插值后的增益值。

这里有个坑,我必须要说。增益不能无限大。你想想看,如果四角需要 2 倍的增益,那意味着原本 100 的像素值要变成 200。但噪声也被放大了 2 倍。所以 LSC 的极限,取决于你的 sensor 信噪比和镜头本身的阴影程度。

注意:增益过大时,暗区的噪声会非常明显。我建议最大增益不要超过 2.5 倍,否则画质会严重劣化。

另外,颜色阴影的校正需要分通道处理。R、G、B 三个通道各自独立计算增益。这样就能解决偏色问题。我习惯先调亮度阴影,再调颜色阴影。因为亮度调好了,颜色阴影的偏差会更容易看出来。

4.3 网格参数调试

网格参数调试,是 LSC 里最需要耐心的部分。网格分得越细,校正精度越高,但计算量也越大。网格太粗,又会出现块状效应。

常见的网格配置是这样的:

分辨率 推荐网格数 说明
2MP (1920×1080) 9×7 或 11×9 网格间距约 200 像素
5MP (2592×1944) 13×11 或 15×13 网格间距约 150 像素
8MP (3264×2448) 17×13 或 19×15 网格间距约 160 像素
13MP (4208×3120) 21×17 或 25×19 网格间距约 160 像素

我个人习惯,网格间距控制在 150~200 像素之间。太密了,调试工作量翻倍,而且容易过拟合。太疏了,校正效果不够精细,边缘会有明显的亮度跳变。

4.3.1 调试步骤

我一般按这个流程走:

  1. 拍摄均匀光源:用 DNP 灯箱或者积分球,拍一张均匀的灰卡。注意,光源要均匀,否则你调出来的 LSC 参数会带偏。
  2. 提取阴影曲线:从中心到四角,提取 R、G、B 三个通道的亮度曲线。这个可以用工具自动做,但我建议你肉眼也看一下,有时候工具会骗人。
  3. 计算增益:以中心亮度为基准,计算每个网格需要的增益值。公式很简单:Gain = 中心亮度 / 当前网格亮度。
  4. 写入参数:把增益值写入 ISP 的寄存器或者 tuning 文件。
  5. 验证效果:重新拍一张均匀光源,检查亮度和颜色均匀性。我一般要求亮度偏差 < 5%,色差 ΔE < 3。

小技巧:调试时,可以用伪彩色显示来辅助判断。把亮度偏差映射成颜色,一眼就能看出哪里暗哪里亮。比看数值快多了。

4.3.2 避坑指南

我曾经踩过一个坑,说出来给大家提个醒。有一次我调完 LSC,在实验室里看效果很好,均匀性 3% 以内。结果一到户外,拍蓝天的时候,四角出现了明显的偏紫。我排查了半天,才发现问题出在光源上。实验室用的是 D65 光源,而户外是自然光,光谱不一样,镜头的阴影特性也跟着变了。

所以,我建议:

  • 至少用两种不同色温的光源来调试(比如 D65 和 A 光源)。
  • 调试完成后,一定要在真实场景下验证。
  • 如果镜头批次之间有差异,建议每颗镜头单独标定。

嗯,这里还要注意一点。LSC 参数和镜头模组的组装精度有很大关系。如果镜头装歪了,或者 sensor 和镜头的光轴不重合,你调出来的 LSC 参数就会不对称。遇到这种情况,先别急着调 LSC,先把模组组装问题解决了再说。

最后说一句,LSC 调试没有捷径。你调得越多,手感越好。我刚开始调的时候,一个镜头要折腾一周。现在熟练了,半天就能搞定。但每次遇到新镜头,我还是会老老实实走一遍流程,不敢偷懒。