3. 黑电平校正(BLC)基础概念:BLC与镜头阴影校正(LSC)的协同关系

黑电平校正和镜头阴影校正,这两个模块在ISP pipeline里挨得很近。很多刚入行的工程师容易把它们当成两个独立模块来处理——先做BLC,再做LSC,完事。但实际项目里,它们之间的耦合比你想象的要深得多。

我个人习惯把BLC和LSC看作一对“搭档”。BLC负责把底层的暗电流噪声清掉,LSC负责把镜头带来的亮度不均拉平。如果BLC没做好,LSC校正出来的结果就会带着偏色;反过来,如果LSC的增益拉得太狠,BLC残留的噪声也会被放大。嗯,这里面的门道,我们一个一个说。

3.1 为什么BLC是LSC的前提条件

先看一个最简单的模型。传感器在没有光照的时候,理论上输出应该是0。但实际因为暗电流的存在,输出会有一个偏移量——这就是黑电平。BLC要做的,就是把每个像素减去这个偏移量,让“纯黑”回到0附近。

那LSC呢?镜头阴影校正本质上是对每个像素乘一个增益系数。中心区域增益接近1,边缘区域增益可能到1.5甚至更高。你想想看,如果BLC没做干净,边缘像素的暗电流偏移量被乘上1.5倍,会是什么结果?

核心结论:BLC的残留误差会被LSC的增益放大。边缘区域增益越大,误差放大越明显。这就是为什么BLC必须做在LSC前面,而且BLC的精度直接影响LSC的校正效果。

我在项目中遇到过一台IPC,晚上画面边缘总是偏紫。排查了很久,最后发现是BLC的暗电流补偿值偏了2个LSB。白天看不出来,因为信号强。但到了晚上,LSC把边缘增益拉到1.8倍,这2个LSB的误差就变成了3.6个LSB,偏色就出来了。

3.2 协同工作的两种典型模式

实际工程里,BLC和LSC的协同方式主要有两种。我整理了一个对比表,方便你理解差异。

模式 处理顺序 适用场景 优点 缺点
串行模式 BLC → LSC 大多数安防监控场景 实现简单,硬件资源少 BLC误差会被LSC放大
反馈模式 BLC → LSC → 反馈调整BLC 高精度、低照度场景 能补偿BLC残留误差 需要额外统计和反馈通路

串行模式是主流。大多数IPC和枪机都用这个方案。但如果你在做高端球机或者低照度相机,我建议你考虑反馈模式。

我的经验:反馈模式里,我通常会在LSC之后加一个暗区统计模块。统计画面中暗区的平均亮度,如果发现暗区亮度偏离0,就反向调整BLC的补偿值。这样形成一个闭环,能有效抑制低照度下的偏色问题。

3.3 协同工作的关键参数

做BLC和LSC协同调试时,有几个参数需要特别关注。我列出来,你调试的时候可以对照着看。

  • BLC精度:至少要做到0.5个LSB以内。低于这个精度,LSC放大后误差会肉眼可见。
  • LSC最大增益:建议控制在2.0倍以内。增益超过2.0,BLC残留噪声会被放大到不可接受的程度。
  • 暗区统计窗口:反馈模式下,统计窗口要避开画面中的亮区和纹理区,只选纯黑区域。
  • 温度补偿系数:暗电流随温度变化,BLC的补偿值也需要跟着变。这个系数要和LSC的增益曲线联动。

说白了,这些参数不是孤立的。你调BLC的时候要想着LSC,调LSC的时候也要回头看看BLC。我曾经在一个项目里,把LSC的增益从1.6倍改到1.8倍,结果边缘的暗电流噪声就冒出来了。最后不得不把BLC的精度从1个LSB提升到0.5个LSB才搞定。

3.4 协同工作的流程图

下面这张图展示了BLC和LSC在ISP pipeline中的协同关系。我画的是反馈模式,串行模式可以去掉反馈回路来看。

BLC与LSC协同工作流程图(反馈模式) 传感器原始数据 黑电平校正 (BLC) 镜头阴影校正 (LSC) 暗区统计 校正后数据 反馈调整BLC 串行模式 BLC → LSC → 输出 无反馈回路 实现简单 反馈模式 BLC → LSC → 暗区统计 → 反馈调整BLC 精度更高,适合低照度

从图上可以看得很清楚。串行模式就是一条直线走到底。反馈模式多了一条从暗区统计回到BLC的虚线回路。这条回路,就是解决低照度偏色的关键。

3.5 避坑指南:我踩过的三个坑

做BLC和LSC协同调试,有几个坑我替你们踩过了。写出来,你们遇到类似问题可以少走弯路。

坑一:BLC和LSC的校准环境不一致

我曾经在实验室用25°C环境校准BLC,然后去户外-10°C场景测试LSC。结果画面边缘全是偏色。后来才发现,暗电流随温度变化,BLC的补偿值在低温下完全不对。解决方案:BLC校准要和LSC校准在同一个温度环境下做,或者加入温度传感器做动态补偿。

坑二:LSC增益曲线和BLC补偿曲线不匹配

有一次我换了镜头,LSC增益曲线变了,但BLC的补偿值还是用原来的。结果画面中心正常,边缘偏绿。排查了两天才发现,新镜头的边缘增益比旧镜头高了0.3倍,把BLC的残留误差放大了。从那以后,我每次换镜头都会重新标定BLC和LSC的联合参数。

坑三:反馈模式下的震荡问题

反馈模式虽然精度高,但调不好会震荡。我遇到过暗区统计值在正负之间来回跳,导致BLC补偿值也跟着来回变,画面出现闪烁。解决方案:给反馈回路加一个低通滤波器,或者设置一个死区——暗区统计值在±1个LSB以内不做调整。

3.6 调试建议

最后给几条调试建议,都是实战中总结出来的。

  • 先做BLC,再做LSC。顺序不能乱。BLC没调好之前,不要碰LSC的参数。
  • 用暗场图验证BLC效果。盖上镜头盖,拍一张全黑图。BLC做完之后,全图的均值应该在0附近,标准差越小越好。
  • 用均匀光源验证LSC效果。用积分球或者均匀光源拍一张灰卡图。LSC做完之后,四角和中中心的亮度差应该在5%以内。
  • 联合验证用低照度场景。在0.1 lux以下的场景拍一张图,检查边缘有没有偏色。这是最敏感的测试方法。

嗯,BLC和LSC的协同关系,说白了就是一句话:BLC是地基,LSC是上层建筑。地基没打好,上面盖得再漂亮也会歪。反过来,地基打好了,上层建筑的设计也要合理,不能把地基的微小误差放大到不可接受的程度。这两个模块,必须放在一起调,不能分开看。