4. 镜头阴影校正(LSC)

镜头阴影,说白了就是画面四周比中间暗。你拿手机对着白墙拍一张,如果四角发暗、中间发亮,那就是典型的镜头阴影。我刚开始做安防摄像头调试时,第一版样机拍出来的画面,四角暗得跟加了暗角滤镜似的——客户直接说“你们这镜头是不是坏了?”

其实这不是镜头坏了,是物理规律。所有镜头都有这个问题,只是程度不同。安防监控对均匀性要求很高,因为监控画面经常要跨区域分析,四角太暗会漏掉关键信息。所以,LSC(Lens Shading Correction)是ISP pipeline里必须做的一步。

4.1 镜头阴影现象

镜头阴影分两种:亮度阴影和颜色阴影。

类型 表现 根本原因
亮度阴影(Luma Shading) 画面四周亮度下降,中间亮、四角暗 镜头光学设计导致边缘进光量少于中心
颜色阴影(Color Shading) 画面四周偏色,比如偏绿或偏红 不同波长光线通过镜头边缘时折射率不同,导致RGB通道衰减不一致

为什么会这样?你想想看,镜头中心的光线几乎是直射到sensor上的,而边缘的光线要斜着穿过去。斜穿意味着光路更长,而且镜头镜筒本身会遮挡一部分光线——这就是“余弦四次方定律”在起作用。

我在项目中遇到过一款广角镜头,FOV做到120度,四角亮度只有中心的40%。如果不做LSC,画面根本没法看。更麻烦的是颜色阴影——四角偏紫,中间正常,这种偏色用白平衡还调不回来,必须靠LSC单独处理每个通道。

关键指标:安防监控行业通常要求画面四角亮度不低于中心的70%。低于这个值,夜间监控画面四角基本就是黑的。

4.2 LSC校正原理

LSC的原理很简单:给每个像素乘一个增益系数。中心区域增益小,边缘区域增益大,把暗的地方拉亮。

但这里有个坑——你不能只对亮度做增益。因为颜色阴影的存在,R、G、B三个通道的衰减曲线不一样。如果统一乘同一个增益,四角颜色会偏得更厉害。

所以,实际做法是:每个通道单独算增益。R通道一个Gain Table,Gr通道一个,Gb通道一个,B通道一个。四个表,各自校正各自的衰减。

数学表达就是:

LSC校正后的像素值 = 原始像素值 × Gain(x, y, channel)

其中Gain(x, y, channel)就是查表得到的增益系数。这个表通常是一个二维网格,每个网格点对应一个增益值,网格之间的像素用插值算出来。

我习惯用9×7的网格——水平9个点,垂直7个点。为什么是这个数?因为很多ISP硬件对9×7有优化,计算效率高。当然,也有用17×13的,精度更高但占内存也大。安防监控我建议从9×7起步,精度不够再往上加。

个人经验:调试时先做亮度阴影,再做颜色阴影。顺序搞反了,你会发现颜色怎么调都调不准——因为亮度增益会放大颜色偏差。

4.3 LSC Gain Table生成

生成Gain Table,核心就两步:拍一张均匀的灰卡,然后算增益。

具体流程:

  1. 准备灰卡——用18%中性灰卡,保证整个画面亮度均匀。灰卡要平整,不能有褶皱。
  2. 拍摄raw图——关闭所有ISP校正(AWB、AEC、Gamma、CCM全关),只输出raw数据。曝光要适中,不能过曝也不能欠曝。
  3. 分通道统计——把raw图分成R、Gr、Gb、B四个通道,每个通道单独统计。
  4. 计算增益——以画面中心区域的平均值为基准,其他区域的增益 = 中心值 / 该区域值。
  5. 生成Table——把增益值填入网格,保存成ISP能识别的格式。

举个例子:

假设中心区域R通道平均值为200
左上角区域R通道平均值为150
那么左上角的R增益 = 200 / 150 = 1.333

这个1.333就是Gain Table里左上角那个格子的值。其他格子同理。

注意:增益不能太大。我见过有人把边缘增益设到4.0,结果边缘噪点爆炸,画面全是雪花。安防监控一般建议增益上限不超过2.5。如果超过2.5还拉不回来,说明镜头本身太差了,换镜头比调ISP更划算。

下面这张图展示了LSC Gain Table的生成流程:

LSC Gain Table 生成流程 拍摄均匀灰卡 关闭所有ISP校正 分通道统计raw值 计算各区域增益 生成R/Gr/Gb/B四个Gain Table 验证:重新拍摄,检查均匀性 注意:增益上限建议不超过2.5,否则噪点会严重恶化

4.4 LSC调试流程

调试LSC,我有一套固定的流程。这套流程踩过很多坑才总结出来,分享给你:

第一步:准备工作

  • 选一个均匀光源——积分球最好,没有的话用柔光箱加扩散板
  • 灰卡要干净,不能有指纹、灰尘
  • 镜头光圈开到最大,因为安防监控常用大光圈

第二步:粗调

  • 用工具自动生成Gain Table
  • 烧录到ISP,拍一张图看看效果
  • 如果四角还是暗,整体提高边缘增益
  • 如果出现网格状条纹,说明网格太粗,需要增加网格点数

第三步:精调

  • 用专业分析软件(比如Imatest或自家工具)测量四角亮度
  • 目标:四角亮度 ≥ 中心亮度的70%
  • 检查颜色阴影:四角和中心的色差 ΔE < 3
  • 逐通道微调,直到满足指标

第四步:验证

  • 换不同色温的光源(D65、A光源、TL84)再测一遍
  • 因为不同色温下颜色阴影表现不同
  • 我遇到过D65下LSC完美,换成A光源四角全偏红——后来发现是B通道增益没调好

调试指标参考:

指标 消费级 安防监控级
四角亮度均匀性 ≥ 60% ≥ 70%
颜色阴影 ΔE < 5 < 3
增益上限 3.0 2.5

避坑指南:我曾经在调试一款4K摄像头时,LSC在实验室测出来完美,一到户外就翻车。后来发现是实验室光源色温太单一,户外复杂光照下颜色阴影全暴露了。从那以后,我坚持至少用三种色温光源做验证——D65(6500K)、A光源(2856K)、TL84(4000K)。

最后说一句:LSC不是一劳永逸的。镜头批次不同、模组组装公差不同,Gain Table都要重新标定。量产时一定要做产线标定,每颗摄像头单独生成LSC参数。别想着一个Table打天下——我见过有人这么干,结果同一批货,有的四角暗有的四角亮,被客户退货退到怀疑人生。