第四章 镜头阴影校正(LSC):让画面从中心到边缘都均匀
镜头阴影校正,英文叫 Lens Shading Correction,简称 LSC。说白了,就是解决照片或者视频里「中间亮、四周暗」这个老大难问题。你想想看,用手机拍一张白墙,如果中心发白、四角发黄或者发暗,那就是典型的镜头阴影。
我在联咏平台上调过不下五十款摄像头模组,从 5 块钱的 VGA 到几百块的 4K 模组都碰过。LSC 这个模块,说简单也简单,说复杂能让你调一星期。今天我就把实战中积累的经验掰开揉碎讲给你听。
4.1 暗角与色偏是怎么来的?
先搞清楚根源,调试才有方向。镜头阴影分两种:亮度阴影(Luma Shading)和颜色阴影(Color Shading)。
| 类型 | 成因 | 表现 |
|---|---|---|
| 亮度阴影(暗角) | 镜头光学设计限制,边缘光线入射角大,CMOS 感光效率下降 | 画面中心亮、四角暗,亮度从中心到边缘逐渐衰减 |
| 颜色阴影(色偏) | 不同波长光线通过镜头时折射率不同,导致 R/G/B 通道衰减不一致 | 边缘偏红、偏绿或偏蓝,常见的是四角偏绿或偏紫 |
我遇到过最夸张的一次,某款广角模组在边缘处 R 通道衰减了 40%,B 通道只衰减了 15%。结果拍出来的天空,中心是蓝色,到了边缘直接变成紫色。这就是典型的色偏问题。
核心结论:LSC 的本质就是给每个像素位置乘上一个增益系数,让边缘的亮度补回来,同时让 R/G/B 三个通道的响应重新平衡。
4.2 LSC 增益表是怎么生成的?
联咏平台用的是网格式增益表。什么意思呢?就是把画面分成 M×N 个网格,每个网格顶点存一个增益值。调试时,ISP 会根据像素位置插值计算出每个像素的增益。
增益表的生成流程,我画了张图帮你理解:
4.3 联咏平台 LSC 调试实战技巧
好了,理论讲完了,咱们直接上手。联咏平台的 LSC 调试,我习惯按下面几个步骤来:
4.3.1 准备工作:拍一张好灰卡
这一步做不好,后面全白费。我见过太多人随便拿张白纸就拍,结果调出来的 LSC 全是错的。
- 灰卡选择:用 DNP 或者 X-Rite 的标准灰卡,反射率 18% 或 50% 都行
- 照明条件:D65 光源,均匀度要控制在 5% 以内。我习惯用积分球或者灯箱
- 拍摄参数:关闭 AEC/AWB,固定曝光时间和增益,让 RAW 图的中心亮度在 70-80% 左右
- 注意:不要过曝!过曝区域的增益计算会完全错误
我曾经踩过的坑:有一次在产线上用手机闪光灯当光源拍灰卡,结果 LSC 调出来全是斑马纹。后来才发现闪光灯本身就有严重的中心亮边缘暗,等于把光源的阴影也校正进去了。记住:光源均匀性比灰卡本身还重要。
4.3.2 计算增益表
联咏的调试工具(比如 NVT_Tuning_Tool)里有自动计算 LSC 增益的功能。原理很简单:
// 伪代码:计算每个网格点的增益
for each grid point (x, y):
// 取该点周围像素的平均值
center_value = average(R_center, Gr_center, Gb_center, B_center)
local_value = average(R_local, Gr_local, Gb_local, B_local)
// 增益 = 中心值 / 局部值
gain = center_value / local_value
// 限制增益范围,防止噪声放大
if gain > 4.0: gain = 4.0
if gain < 1.0: gain = 1.0
但自动计算出来的结果往往不够完美。我一般会做两件事:
- 平滑处理:相邻网格的增益不能跳变太大,否则画面会出现「水波纹」
- 分通道独立调整:R 和 B 通道的增益曲线通常不一样,要分别看
4.3.3 验证与微调
增益表写进去之后,拍一张灰卡看看效果。我常用的验证方法:
| 验证项目 | 方法 | 合格标准 |
|---|---|---|
| 亮度均匀性 | 取画面四角与中心的 Y 值对比 | 四角亮度 ≥ 中心亮度的 95% |
| 色偏均匀性 | 取四角与中心的 R/G、B/G 比值 | 偏差 ≤ 2% |
| 网格连续性 | 用伪彩色图显示增益分布 | 无突变、无条纹 |
我的个人习惯:验证时不要只看灰卡。我会拍一张蓝天照片,看看天空从中心到边缘的颜色过渡是否自然。如果边缘偏紫或者偏绿,说明色偏校正还没到位。
4.4 常见问题与避坑指南
调试 LSC 的过程中,有几个问题几乎每个人都会碰到。我直接给你列出来:
- 问题一:校正后边缘噪声变大
原因:边缘增益太大,把噪声也放大了
解决:限制最大增益值,一般不超过 4.0。如果镜头暗角太严重,先换镜头 - 问题二:画面出现网格状条纹
原因:网格太稀疏,或者相邻网格增益跳变太大
解决:增加网格密度,或者对增益表做平滑滤波 - 问题三:不同色温下色偏不一致
原因:LSC 是跟色温相关的,不同光源下镜头阴影不一样
解决:联咏平台支持多组 LSC 表,D65、A 光、TL84 各做一组,根据 AWB 结果切换
核心经验:LSC 不是一劳永逸的。换一颗镜头、改一次模组结构,甚至换一家传感器,LSC 都要重新调。我在项目中养成的习惯是:每次打样都重新拍灰卡、重新算增益,绝不复用旧数据。
4.5 联咏平台 LSC 参数速查
最后给你一张速查表,调试时可以直接参考:
| 参数名称 | 寄存器/工具路径 | 典型值 | 说明 |
|---|---|---|---|
| 网格行数 | LSC_GRID_ROW | 17 | 行方向网格数,奇数 |
| 网格列数 | LSC_GRID_COL | 13 | 列方向网格数,奇数 |
| R 通道增益表 | LSC_GAIN_R | 1.0 ~ 4.0 | 每个网格点一个值 |
| Gr 通道增益表 | LSC_GAIN_GR | 1.0 ~ 4.0 | 绿色通道,Gr 和 Gb 分开 |
| Gb 通道增益表 | LSC_GAIN_GB | 1.0 ~ 4.0 | 绿色通道,Gr 和 Gb 分开 |
| B 通道增益表 | LSC_GAIN_B | 1.0 ~ 4.0 | 每个网格点一个值 |
| 插值模式 | LSC_INTERP_MODE | BILINEAR | 双线性插值,也可选 BICUBIC |
嗯,LSC 这块内容差不多就这些。你调试的时候如果遇到奇怪的现象,比如校正后画面出现彩色条纹或者局部过亮,别慌。先检查灰卡照片拍得对不对,再检查增益表有没有平滑。大部分问题都出在这两个环节上。