2. 黑电平校正(BLC)调优:从暗电流到暗部细节
黑电平校正,圈里人常叫 BLC。说白了,就是告诉相机“什么是真正的黑色”。
你想想看,传感器在完全没光的时候,输出值不应该是 0。为什么?因为有暗电流。暗电流就像水管没开龙头但一直在渗水,虽然量小,但会抬高整个画面的底噪。BLC 要做的,就是把这块“渗水”减掉,让黑色回归黑色。
2.1 BLC 原理:为什么黑色不是 0?
理想传感器,遮光时输出为 0。但现实世界没这么完美。
暗电流是半导体热激发产生的电子。温度每升高 6-8°C,暗电流翻一倍。我做过一个极端测试:把 sensor 加热到 60°C,黑电平直接漂了 30 多个 DN(数字码值)。如果不做 BLC,整个画面会发灰,暗部细节全被埋掉。
校正后像素值 = 原始像素值 - 黑电平基准值注意:减完后要做 clamp(钳位),防止出现负值。
黑电平基准值怎么来?sensor 内部有光学黑区(OB,Optical Black)。这些像素被金属层遮挡,收不到光,只反映暗电流水平。ISP 会采样这些 OB 像素,取平均或中位数,作为当前帧的黑电平参考。
2.2 暗电流补偿:温度与增益的博弈
暗电流不是固定的。它随温度、曝光时间、模拟增益变化。我见过不少工程师只做静态 BLC,结果夏天户外画面暗部发紫,冬天室内又偏绿。这就是没做动态补偿。
| 影响因素 | 变化趋势 | 补偿策略 |
|---|---|---|
| 温度升高 | 暗电流指数上升 | 查温度-偏移 LUT,实时调整 |
| 曝光时间变长 | 暗电流累积增加 | 按曝光时间线性缩放补偿量 |
| 模拟增益增大 | 暗电流被同步放大 | 补偿量乘以当前增益系数 |
2.3 BLC 校准流程:从 OB 采样到参数固化
校准流程不复杂,但细节决定成败。我把它拆成 5 步:
- 遮光采集:盖上镜头盖,确保完全遮光。最好在暗室进行,避免漏光。
- 多帧平均:采集 16~32 帧,逐像素取平均,消除随机噪声。
- OB 区域统计:提取 sensor 指定的 OB 行/列,计算均值 μ 和标准差 σ。
- 异常剔除:剔除 |x - μ| > 3σ 的坏像素,防止缺陷点污染基准值。
- 参数写入:将校准后的黑电平值写入 sensor 寄存器或 ISP 参数表。
下面这张图展示了 BLC 校准的完整数据流:
2.4 BLC 对暗部细节的影响:过犹不及
BLC 做过头了,暗部细节会丢失。减得太多,原本微弱的信号被当成暗电流砍掉,暗部变成死黑。减得太少,黑电平抬升,暗部发灰,对比度下降。
我调过一款 8K 安防相机,客户投诉夜间画面“黑成一团”。查 log 发现 BLC 补偿量偏大了 8 个 DN。暗部原本只有 20~30 DN 的信号,被减到 12~22 DN,再经过 gamma 和 LUT 映射,10 DN 以下的细节全丢了。
- 用示波器或直方图工具观察暗部区域(如 0~64 DN)的分布。如果直方图在 0 处出现“削顶”,说明 BLC 过冲。
- HDR 多帧合成场景下,长帧(Long exposure)的 BLC 要单独标定。短帧暗电流小,长帧暗电流大,共用一套参数会出问题。
- 保留 2~3 个 DN 的“安全余量”。宁可让黑电平略高一点(画面微灰),也不要砍掉暗部纹理。
嗯,这里要注意:BLC 不是一锤子买卖。Sensor 老化后暗电流会变化。我建议产线每 3 个月做一次 BLC 复校,或者加入开机自校准流程——遮光 1 秒,自动更新 OB 基准值。
最后说一句:BLC 调得好,暗部细节就保住了。调不好,后面所有模块都在“垃圾数据”上做文章,效果不可能好。这是 ISP 调优的基石,值得花时间打磨。