3. 镜头阴影校正(LSC):成因分析、校正原理、网格标定与参数调试
镜头阴影校正,简称 LSC。说白了,就是解决画面四周偏暗、偏色的问题。
你想想看,一颗镜头装上去,中心亮度 100%,到了边角可能只剩 60%。更麻烦的是,不同颜色衰减还不一样——红色掉得少,蓝色掉得多,结果边角就发绿发暗。这就是典型的镜头阴影。
我刚开始做 ISP 调优时,接过一个项目,镜头选型没做好,边角亮度掉了 40%。客户拿样品去演示,对方直接说“你们这摄像头是不是坏了?”嗯,从那以后,我再也不敢小看 LSC 了。
3.1 阴影成因:为什么边角会暗?
镜头阴影的成因,主要有三个物理因素:
- 余弦四次方定律:光线斜着进入镜头,到达 sensor 的光强与入射角余弦的四次方成正比。角度越大,光越弱。
- 镜头遮挡(Vignetting):镜头镜筒、光圈叶片等机械结构,在边角处会物理遮挡一部分光线。
- 微透镜阵列匹配:sensor 每个像素上方都有微透镜,边角入射光与微透镜的光轴不匹配,导致感光效率下降。
关键认知:LSC 校正的不是“坏像素”,而是光学系统的固有衰减。这是物理规律,不是故障。
我遇到过一种情况:换了 sensor 但没换镜头,结果边角偏色更严重了。为什么?因为新 sensor 的微透镜阵列角度和旧镜头不匹配。所以 LSC 参数必须跟着镜头+sensor 组合走,不能复用。
3.2 校正原理:乘回去就对了
校正思路其实很简单——既然边角信号弱了,那我就给它乘一个增益,把亮度补回来。
数学表达就是:
I_corrected(x, y) = I_raw(x, y) × Gain(x, y)
其中 Gain(x, y) 是一个二维增益矩阵。中心区域增益接近 1.0,边角增益大于 1.0。
但这里有个坑:增益不能无限大。边角增益太大,会把 sensor 的暗电流噪声也一起放大,画面噪点爆炸。我见过有人把边角增益拉到 2.5 倍,结果暗部全是彩噪,还不如不校。
警告:LSC 增益上限建议控制在 2.0 倍以内。超过这个值,请优先考虑换镜头,而不是靠算法硬补。
另外,不同通道的衰减曲线不一样。所以 LSC 通常是 R、Gr、Gb、B 四个通道独立校正。这就是为什么边角偏色问题必须靠 LSC 解决,光调亮度不行。
3.3 网格标定:怎么拿到增益矩阵?
增益矩阵不是拍脑袋写的,而是通过标定得到的。标定流程如下:
- 准备均匀光源:用积分球或均匀面光源,保证整个画面亮度一致。
- 拍摄 flat field 图像:sensor 对着均匀光源拍一张 raw 图。
- 分网格统计:把图像分成 M×N 个网格(常见 9×7、17×13),统计每个网格的平均亮度。
- 计算增益:以中心网格亮度为基准,其他网格的增益 = 中心亮度 / 本网格亮度。
- 插值平滑:对增益矩阵做平滑处理,避免网格边界出现跳变。
我习惯用 17×13 的网格,因为大部分 sensor 的分辨率比例接近 4:3,这个网格密度能兼顾精度和计算量。
| 网格规格 | 适用分辨率 | 精度 | 计算开销 |
|---|---|---|---|
| 9×7 | 2MP 以下 | 中等 | 低 |
| 17×13 | 2MP ~ 8MP | 高 | 中等 |
| 33×25 | 8MP 以上 | 极高 | 高 |
实战技巧:标定时一定要关掉自动曝光和自动白平衡。否则 flat field 图像会被算法“修正”,标出来的增益矩阵全是错的。
3.4 参数调试:从标定到落地
拿到增益矩阵后,还要做几件事才能落地到产品里。
第一步:检查增益曲线是否平滑
把增益矩阵画成 3D 曲面图,看有没有突兀的尖峰或凹陷。如果有,说明标定过程有问题——可能是光源不均匀,也可能是 sensor 本身有坏像素。
第二步:确认校正后的均匀性
用校正后的图像重新统计各网格亮度,计算最大偏差。我一般要求偏差在 3% 以内。超过 5% 就要重新标定。
第三步:验证不同色温下的表现
同一个镜头+sensor 组合,在 D65(6500K)和 A 光源(2856K)下的阴影曲线可能不一样。因为不同波长的光衰减特性不同。所以 LSC 参数通常要分色温段保存。
我曾经踩过一个坑:只在 D65 下标定,结果到了室内暖光灯下,边角偏红得一塌糊涂。后来我改成至少标三个色温点——D65、A 光源、CWF(冷白荧光灯),然后做线性插值。
推荐做法:LSC 参数表至少包含 3 组色温标定数据,ISP 根据当前色温自动切换或插值。
3.5 LSC 知识体系总览
下面这张图把 LSC 的完整链路串起来了。从物理成因到标定流程,再到参数落地,你可以对照着看。
3.6 常见问题与避坑
最后,我把这些年遇到的 LSC 问题整理成一张表,你调试时可以直接对照排查。
| 现象 | 可能原因 | 解决方法 |
|---|---|---|
| 边角偏绿/偏紫 | R/G/B 通道增益不匹配 | 分通道重新标定,检查各通道衰减曲线 |
| 校正后出现网格纹 | 增益矩阵未平滑或网格太粗 | 增加网格密度,做双线性插值平滑 |
| 边角噪点严重 | 增益过大(>2.0x) | 换镜头或降低增益上限,配合 2D NR |
| 不同色温下效果不一致 | 只标了一个色温点 | 至少标 D65/A/CWF 三组参数 |
| 校正后中心变暗 | 基准网格选错了位置 | 确认中心网格坐标,用图像中心区域统计 |
我的习惯:每次换镜头或换 sensor 后,第一件事就是跑一遍 LSC 标定。哪怕只是换了同一型号的不同批次,我也会抽检几颗。因为镜头的镀膜一致性,有时候比你想的差。
LSC 调好了,画面均匀性就有了基础。后面再做 AWB、CCM 这些,才不会出现“左边调好了右边又偏了”的尴尬局面。嗯,这一步值得花时间做扎实。