4. 镜头阴影校正(LSC):从现象到实战
镜头阴影,说白了就是画面四周比中心暗。你想想看,一个镜头模组,光线从中心直直打进去,和从边缘斜着打进去,路径长度、入射角度都不一样,感光元件收到的光能量自然有差异。这个现象在安防监控里特别要命——晚上看监控,四周黑乎乎的,中心亮得刺眼,那还看个啥?
我刚开始做ISP调优那会儿,接过一个项目,客户投诉说“你们摄像头中间亮四周暗,是不是偷工减料了?”嗯,其实就是镜头阴影没校正好。从那以后,我对LSC这块就特别上心。
4.1 镜头阴影现象的本质
镜头阴影分两种:亮度阴影和颜色阴影。
- 亮度阴影(Luma Shading):中心亮,四周暗。主要原因是光学余弦四次方定律(cos⁴θ)和镜头机械遮挡。
- 颜色阴影(Color Shading):中心偏色和四周偏色不一样。因为不同波长的光在镜头里折射率不同,到达感光面的位置有偏移。
我见过一个极端案例:某款广角镜头,边缘亮度只有中心的35%。这种镜头如果不做LSC,画面根本没法看。
关键指标:安防监控行业一般要求LSC校正后,四角亮度不低于中心的85%。高端产品要求90%以上。
4.2 LSC校正算法原理
校正思路其实很简单:给暗的地方补增益,亮的地方不动。但怎么补、补多少,这里头有讲究。
主流算法分三类:
| 算法类型 | 原理 | 优缺点 |
|---|---|---|
| 多项式拟合 | 用二阶或四阶多项式拟合阴影曲线 | 计算量小,但精度有限,适合低端芯片 |
| 网格插值 | 将图像分成网格,每个网格存一个增益值 | 精度高,但需要标定数据量大 |
| 查表法(LUT) | 预存每个像素位置的增益系数 | 最精确,但占用存储空间大 |
我个人习惯用网格插值法。为什么呢?因为安防监控的分辨率越来越高,4K、8K都常见了,查表法太占内存,多项式拟合又不够准。网格插值是个折中——把画面分成17×13或者33×25的网格,每个网格存一个R、G、B三通道的增益值,中间的点用双线性插值算出来。
小技巧:网格密度不是越密越好。我试过65×49的网格,校正效果和33×25几乎没区别,但标定时间多了3倍。一般建议:分辨率在200万以下用17×13,500万以上用33×25。
4.3 LSC标定流程
标定是LSC最关键的环节。标定做不好,算法再牛也白搭。
标准流程如下:
- 准备均匀光源:用积分球或者均匀面光源,保证整个画面亮度均匀度在98%以上。
- 拍摄灰卡:在标准色温下(D65、D50、A光源等),拍摄一张18%灰卡。
- 采集原始数据:从sensor直接拿RAW数据,不要经过任何ISP处理。
- 计算增益矩阵:以画面中心为基准,计算每个像素位置需要的增益值。
- 生成LSC参数:把增益矩阵转换成芯片能识别的格式(网格系数或LUT)。
- 验证:重新拍摄灰卡,检查校正后的均匀度。
避坑指南:我曾经犯过一个低级错误——标定时用了自动曝光。结果曝光参数一变,LSC参数全废了。标定一定要锁定曝光、增益、帧率,最好连sensor的模拟增益也固定住。
4.4 调优实战要点
标定完了,不代表就完事了。实际调优中,有几个坑必须注意:
- 多色温标定:不同色温下,镜头阴影表现不一样。我一般至少标定D65(6500K)、D50(5000K)、A光源(2856K)三组参数,运行时根据色温自动切换。
- 温度补偿:sensor温度升高,暗电流会变化,阴影也会漂移。高端安防芯片会内置温度传感器,实时调整LSC参数。
- 变焦镜头适配:变焦镜头在不同焦距下,阴影特性完全不同。我做过一个项目,镜头从广角端变到长焦端,阴影中心位置都偏移了。这种情况必须做多焦距标定。
嗯,这里要特别说一下颜色阴影的校正。很多工程师只校正亮度,忽略了颜色。结果画面四周虽然亮了,但偏紫或者偏绿。校正颜色阴影时,R、G、B三个通道要分别做LSC,而且增益比例要匹配。
经验值:R通道的阴影通常最严重,G通道最轻。校正后,R/G和B/G的比值在全画面应该保持一致,偏差不超过2%。
4.5 LSC知识体系总览
下面这张图,是我自己总结的LSC知识框架。从现象到算法,再到标定和调优,一条线串起来。
4.6 常见问题与排查
最后,分享几个我实际项目中踩过的坑:
- 校正后出现网格纹:网格密度不够,或者插值算法精度不够。试试增加网格数,或者改用双三次插值。
- 画面中心过亮:增益基准点选错了。应该以画面中心为1.0倍增益,四周大于1.0,而不是以四周为基准压低中心。
- 颜色阴影校正后偏色:R、G、B三通道的增益比例没对齐。检查一下标定时用的灰卡是不是真的中性灰。
我的习惯:每次标定完,我都会拍一张全白画面,用Imatest或者自己写的脚本扫一遍四角亮度。如果四角亮度偏差超过5%,我会重新标定,绝不凑合。
镜头阴影校正,说难不难,说简单也不简单。关键是把原理吃透,标定做扎实,调优时多留个心眼。做到这三点,LSC这块基本不会出大问题。