4. 黑电平校正(BLC):原理、高通平台BLC参数配置、实战调优

黑电平校正,圈内人常叫它BLC。这玩意儿看着简单,但调不好,整条ISP链路都会出问题。我刚开始接触高通平台时,就因为在BLC上偷了个懒,结果后面降噪模块怎么调都调不干净,折腾了两周才发现是黑电平没校好。

说白了,黑电平校正就是告诉芯片:“纯黑场景下,像素应该输出什么值”。理想情况下,没光的时候像素输出应该是0。但现实是,传感器本身有暗电流,读出电路也有偏置,导致纯黑画面下像素值不是0,而是某个正数。这个正数,就是黑电平。

核心公式:

校正后像素值 = 原始像素值 - 黑电平值

就这么简单。但参数怎么取、取多少、不同增益下怎么变,才是实战中的坑。

4.1 黑电平产生的物理根源

为什么会有黑电平?我简单梳理一下:

  • 暗电流:半导体材料热激发产生的电子,温度越高越明显。夏天户外拍摄和冬天室内拍摄,黑电平是不一样的。
  • 读出电路偏置:ADC转换、放大器都有固定偏置电压,这部分是相对稳定的。
  • 像素结构差异:R、Gr、Gb、B四个通道的暗电流特性不同,需要分别校正。

嗯,这里要注意:黑电平不是固定值。它会随增益、温度、曝光时间变化。高通平台的做法是提供一个基础值,再配合增益补偿曲线。

4.2 高通平台BLC参数体系

高通平台的BLC参数,主要分布在两个地方:sensor驱动层和ISP tuning工具层。我习惯把参数分成三类:

参数类别 参数名 说明
静态基础值 black_level 传感器在最低增益下的黑电平值,通常由模组厂提供
通道差异 black_level_r/gr/gb/b 四个通道各自的黑电平偏移量
增益补偿 blc_gain_comp 随模拟增益变化的补偿系数,曲线形式

在高通tuning工具中,BLC参数通常在sensor.xml或chromatix配置里。我贴一段实际项目中用过的配置:

<!-- 高通平台BLC配置示例 -->
<black_level_correction>
    <black_level>64</black_level>
    <channel_offset>
        <r>2</r>
        <gr>0</gr>
        <gb>-1</gb>
        <b>3</b>
    </channel_offset>
    <gain_compensation>
        <gain>1.0</gain>  <offset>0</offset>
        <gain>2.0</gain>  <offset>4</offset>
        <gain>4.0</gain>  <offset>12</offset>
        <gain>8.0</gain>  <offset>28</offset>
    </gain_compensation>
</black_level_correction>

我的经验:通道偏移量不要超过±5,否则容易引入色偏。增益补偿的offset值,我一般用线性拟合,但高增益段(8x以上)会偏离线性,需要实测修正。

4.3 BLC参数标定流程

标定BLC,说白了就是拍一张全黑图,然后看像素值分布。我通常按下面几步走:

  1. 准备环境:镜头盖盖死,或者用遮光布完全挡住镜头。环境温度控制在25°C±2°C。
  2. 采集原始数据:用高通QPST工具或直接抓raw图,至少采集3组不同增益下的全黑图。
  3. 统计像素均值:分别统计R、Gr、Gb、B四个通道的均值。注意避开坏点和边缘区域。
  4. 计算基础黑电平:取最低增益下四个通道均值的平均值,作为black_level。
  5. 计算通道偏移:各通道均值减去black_level,得到channel_offset。
  6. 拟合增益补偿:不同增益下的黑电平增量,用线性或二次曲线拟合。

为什么会这样?因为不同增益下,暗电流被放大的程度不同。你想想看,增益从1x升到8x,暗电流噪声也被放大了8倍,黑电平自然跟着涨。

我曾经踩过的坑:有一次标定时,发现Gr和Gb通道的偏移量差异很大,怎么调都调不平。后来排查发现,是模组厂在封装时,Gr和Gb的微透镜位置有偏差。这种情况,单纯调BLC是没用的,得找模组厂改硬件。

4.4 实战调优:从raw图到效果验证

调优BLC,不能只看参数,得看最终效果。我一般用三个指标来验证:

  • 暗场均匀性:全黑raw图经过BLC后,四个通道的均值应接近0,且标准差越小越好。
  • 暗部色偏:在极暗场景下(0.1 lux以下),画面不应出现明显色偏。如果偏绿或偏紫,通常是BLC通道偏移没调准。
  • 增益连续性:从低增益切换到高增益时,黑电平不应出现跳变。否则在视频录制中会看到亮度闪烁。

我个人的调优习惯是:先用工具自动标定,然后手动微调通道偏移,最后在真实暗光场景下拍几组照片验证。自动标定只能解决80%的问题,剩下20%得靠人眼判断。

4.5 BLC与后续模块的联动

BLC做不好,后面的模块全得跟着遭殃。我列几个典型问题:

BLC问题 影响模块 表现
黑电平偏高 降噪模块 暗部噪声被放大,降噪后出现“假细节”
通道偏移不准 AWB 暗部白平衡偏色,尤其低色温场景
增益补偿不匹配 HDR合成 长短帧亮度不连续,合成后出现亮度跳变

嗯,这里要特别提醒:HDR合成对BLC的精度要求更高。因为长帧和短帧的增益不同,如果BLC的增益补偿不准,两帧的黑电平不一致,合成后就会出现“鬼影”或亮度断层。我在一个项目中就遇到过,HDR合成后暗部区域忽明忽暗,排查到最后发现是BLC的增益补偿曲线少了一个点。

4.6 BLC调优的SVG流程图

下面这张图,是我自己总结的BLC调优全流程,从标定到验证,每一步都标清楚了:

黑电平校正(BLC)调优流程图 黑电平校正(BLC)调优流程图 ① 准备暗场环境 ② 采集多增益raw图 ③ 统计R/Gr/Gb/B通道均值 ④ 计算black_level & offset ⑤ 拟合增益补偿曲线 ⑥ 暗场均匀性 & 色偏验证 不合格则返回步骤③ 关键指标 • 通道均值差 < 3 DN • 增益补偿R² > 0.98 • 暗场色差ΔE < 2 常用工具 • QPST / QACT • Imatest / IE • Python + rawpy

4.7 常见问题与避坑指南

最后,我把自己这些年遇到的BLC问题整理一下,希望能帮你少走弯路:

  • 问题1:暗场偏绿——通常是Gr通道的offset偏大,或者G通道的增益补偿曲线斜率不对。我一般先检查通道偏移,再检查增益补偿。
  • 问题2:高增益下暗部发紫——B通道的增益补偿不足,导致高增益下B通道黑电平偏低。可以适当增加B通道的补偿系数。
  • 问题3:视频录制中亮度闪烁——增益切换时黑电平跳变。需要确保增益补偿曲线在切换点连续,且斜率一致。

我的小技巧:调完BLC后,用高通tuning工具里的“暗场预览”功能,把增益从1x拉到16x,观察画面亮度是否平滑变化。如果看到某个增益点画面突然变亮或变暗,那就是BLC的增益补偿没调好。

BLC这个模块,说难不难,说简单也不简单。关键是理解它的物理本质,以及它和后续模块的联动关系。调好了,后面降噪、AWB、HDR都会顺很多。调不好,你后面花再多精力也是白搭。