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,核心就两步:拍一张均匀的灰卡,然后算增益。
具体流程:
- 准备灰卡——用18%中性灰卡,保证整个画面亮度均匀。灰卡要平整,不能有褶皱。
- 拍摄raw图——关闭所有ISP校正(AWB、AEC、Gamma、CCM全关),只输出raw数据。曝光要适中,不能过曝也不能欠曝。
- 分通道统计——把raw图分成R、Gr、Gb、B四个通道,每个通道单独统计。
- 计算增益——以画面中心区域的平均值为基准,其他区域的增益 = 中心值 / 该区域值。
- 生成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的生成流程:
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打天下——我见过有人这么干,结果同一批货,有的四角暗有的四角亮,被客户退货退到怀疑人生。