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,说白了就是拍一张全黑图,然后看像素值分布。我通常按下面几步走:
- 准备环境:镜头盖盖死,或者用遮光布完全挡住镜头。环境温度控制在25°C±2°C。
- 采集原始数据:用高通QPST工具或直接抓raw图,至少采集3组不同增益下的全黑图。
- 统计像素均值:分别统计R、Gr、Gb、B四个通道的均值。注意避开坏点和边缘区域。
- 计算基础黑电平:取最低增益下四个通道均值的平均值,作为black_level。
- 计算通道偏移:各通道均值减去black_level,得到channel_offset。
- 拟合增益补偿:不同增益下的黑电平增量,用线性或二次曲线拟合。
为什么会这样?因为不同增益下,暗电流被放大的程度不同。你想想看,增益从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调优全流程,从标定到验证,每一步都标清楚了:
4.7 常见问题与避坑指南
最后,我把自己这些年遇到的BLC问题整理一下,希望能帮你少走弯路:
- 问题1:暗场偏绿——通常是Gr通道的offset偏大,或者G通道的增益补偿曲线斜率不对。我一般先检查通道偏移,再检查增益补偿。
- 问题2:高增益下暗部发紫——B通道的增益补偿不足,导致高增益下B通道黑电平偏低。可以适当增加B通道的补偿系数。
- 问题3:视频录制中亮度闪烁——增益切换时黑电平跳变。需要确保增益补偿曲线在切换点连续,且斜率一致。
我的小技巧:调完BLC后,用高通tuning工具里的“暗场预览”功能,把增益从1x拉到16x,观察画面亮度是否平滑变化。如果看到某个增益点画面突然变亮或变暗,那就是BLC的增益补偿没调好。
BLC这个模块,说难不难,说简单也不简单。关键是理解它的物理本质,以及它和后续模块的联动关系。调好了,后面降噪、AWB、HDR都会顺很多。调不好,你后面花再多精力也是白搭。