3、镜头阴影校正(LSC):成因分析、增益映射表生成、调试策略

镜头阴影校正,圈里人常叫 LSC。说白了,就是解决照片四周发暗、发偏色的问题。你拿手机对着白墙拍一张,如果中间亮、四角暗,那就是典型的亮度阴影(Luma Shading)。如果四角还带点绿或者带点红,那就是颜色阴影(Color Shading)。

我刚开始调 ISP 时,觉得 LSC 不就是乘个增益嘛,简单。后来发现,增益映射表怎么生成、怎么平滑过渡、怎么跟 sensor 的响应曲线配合,全是坑。今天咱们就把这块掰开揉碎讲清楚。

3.1 阴影成因:为什么四角会变暗?

原因其实就两个:光学原因和 sensor 原因。

  • 光学原因(Lens Roll-off):镜头本身是个凸透镜,光线从中心到边缘的路径长度不一样。边缘光线到达 sensor 的角度更斜,能量自然就弱了。这符合余弦四次方定律(Cos⁴ Law)。说白了,边缘收到的光只有中心的 30%~60%。
  • Sensor 原因(Pixel Angle Response):sensor 每个像素上面有个微透镜,微透镜把光汇聚到光电二极管。边缘光线入射角太大,微透镜聚光效率下降,甚至光线会打到隔壁像素的电路区,造成串扰。这就是颜色阴影的根源——不同颜色的像素对入射角敏感度不同。

关键指标:阴影通常用中心亮度与四角亮度的比值(Shading Ratio)来衡量。比如中心亮度 200,四角亮度 120,比值就是 200/120 ≈ 1.67。一般要求这个比值在 1.2 以内,高端模组能做到 1.1 以内。

我在项目中遇到过一款广角镜头,Shading Ratio 到了 2.3。四角暗得跟戴了墨镜一样。后来发现是镜头跟 sensor 的 CRA(主光线角)不匹配。嗯,这里要注意:LSC 不是万能的,增益太大(超过 2.5 倍)会放大噪声,四角噪点会非常明显。

3.2 增益映射表生成:从标定到插值

LSC 的核心是一张增益映射表(Gain Map)。这张表记录了每个像素位置需要乘多少增益。生成过程分三步:

  1. 采集 raw 图:用均匀光源(积分球或灯箱)拍一张灰卡或白板。注意光源要均匀,不均匀的话 LSC 会把光源不均匀也校正掉,那就错了。
  2. 计算增益:以图像中心为参考点,计算每个像素的增益值。公式很简单:Gain(x,y) = CenterValue / PixelValue(x,y)。中心值一般取中心区域的平均值。
  3. 生成网格表:全分辨率下每个像素都存增益,数据量太大。实际做法是分成网格(比如 16x16 或 32x32 的网格),每个网格存一个增益值。ISP 运行时通过双线性插值算出每个像素的增益。

我个人习惯:网格密度不要小于 16x16。太稀疏的话,插值出来的增益曲线会有阶梯感,尤其在阴影变化剧烈的区域。我见过有人用 8x8 网格,结果画面出现一圈一圈的亮纹,那就是插值精度不够。

下面这张图展示了增益映射表的生成流程:

LSC 增益映射表生成流程 均匀光源拍摄 采集 raw 图 计算增益值 网格化存储 关键说明: 1. 光源均匀性直接影响标定精度,建议使用积分球 2. 中心参考区域建议取图像中心 10% 区域的均值 3. 网格密度建议 16x16 以上,避免插值阶梯 4. 增益上限建议限制在 2.5 倍以内,防止噪声放大

3.3 调试策略:从粗调到精调

LSC 调试不是一锤子买卖。我一般分四步走:

3.3.1 粗调:确定整体趋势

先用自动标定工具生成一张基础增益表。然后拍一张灰卡,看四角亮度是否均匀。如果四角还是暗,就整体提高边缘增益。如果中心过曝,就降低中心增益。这一步目标是让亮度阴影控制在 5% 以内。

3.3.2 精调:处理颜色阴影

亮度均匀了,颜色可能还不均匀。比如四角偏绿,说明 G 通道增益不够,或者 R/B 通道增益过高。需要分别调整 R、G、B 三个通道的增益表。我习惯用色温计配合灰卡,在 D65 和 A 光下分别验证。

我曾经踩过的坑:有一次在 D65 下调好了 LSC,换到 A 光下四角全红了。原因是 sensor 的 R 通道在低色温下响应变弱,而 LSC 增益表是固定的。后来我改用多色温标定,生成多组增益表,根据色温切换。嗯,这个坑希望大家别重复踩。

3.3.3 边界处理:防止过校正

图像边缘的增益往往最大。如果增益超过 2.5 倍,边缘噪声会非常明显。我建议设置一个增益上限(Gain Clamp),比如最大 2.0 倍。超出部分不做校正,宁可边缘暗一点,也不能让噪点炸裂。

3.3.4 验证:多场景测试

LSC 调完不能只在实验室看。要拿到户外、室内、夜景下验证。尤其要注意:

  • 天空场景:均匀的蓝天最容易看出颜色阴影
  • 白墙场景:最容易看出亮度阴影
  • 夜景场景:检查边缘噪声是否被放大

3.4 参数配置参考

下面是我常用的 LSC 参数配置表,供你参考:

参数项 推荐值 说明
网格密度 16x16 ~ 32x32 根据 sensor 分辨率调整,越高越精细
增益上限 2.0x ~ 2.5x 超过此值不做校正,防止噪声
插值方式 双线性插值 兼顾平滑与性能
标定光源 D65 + A 光 至少两种色温,覆盖日常场景
中心参考区 图像中心 10% 取均值作为参考亮度

小技巧:如果你发现 LSC 调完后画面边缘有轻微的偏色,可以试试在增益表上做高斯平滑。平滑半径 1~2 个网格点,能有效消除增益突变带来的色差。我一般会在生成增益表后加一步平滑滤波。

3.5 避坑指南

最后总结几个我踩过的坑,你遇到了可以直接绕开:

  • 坑一:光源不均匀——标定用的光源本身就不均匀,LSC 会把光源不均匀当成镜头阴影校正掉。结果换到自然光下,画面反而出现反向阴影。解决办法:用积分球,或者用多张图平均。
  • 坑二:增益表不更新——有些模组在变焦或切换镜头时,阴影特性会变。如果增益表还是用原来的,画面会出问题。记得在变焦后重新加载对应的增益表。
  • 坑三:忽略温度影响——sensor 在高温下暗电流增加,会影响阴影标定。我建议在常温下标定一次,再在高温(60°C)下验证一次,看阴影是否有偏移。

LSC 调好了,画面质感能提升一大截。但记住:LSC 是锦上添花,不是雪中送炭。如果镜头和 sensor 本身匹配就有问题,LSC 只能补救,不能根治。选型阶段就要把 CRA 匹配做好,后面调起来才轻松。