1. BLC基础概念:黑电平的来龙去脉
大家好,我是老张。做图像传感器调试这行十几年了,每次带新人,第一个要讲的就是黑电平。为什么?因为这是ISP Pipeline的基石,基础不牢,后面全是白搭。
今天咱们就聊聊黑电平到底是什么,它从哪来,在ISP里又站在什么位置。
1.1 什么是黑电平
黑电平,英文叫Black Level,简称BLC。说白了,就是传感器在完全无光环境下,输出的像素值。
你想想看,理想情况下,没有光进来,像素应该输出0,对吧?但现实不是这样的。传感器在暗场下,依然会输出一个非零的数值。这个数值,就是黑电平。
我习惯把黑电平理解成一个「基准线」。所有真实的图像信号,都是在这个基准线上叠加出来的。如果基准线没找准,整个画面的亮度、色彩都会出问题。
核心要点:黑电平不是噪声,而是一个固定的偏移量。它决定了图像暗部的起点。
1.2 黑电平产生的物理原因
为什么会有一个非零的基准线?这里有两个主要推手。
1.2.1 暗电流
暗电流,是半导体器件本身的物理特性。即使没有光照,像素里的光电二极管也会因为热激发产生少量电子。温度越高,暗电流越大。
我记得有一次在户外做调试,大夏天,传感器温度飙到60多度,暗电流直接翻了一倍。当时黑电平跑飞了,整个画面偏紫,排查了好久才找到原因。
暗电流的特点是:
- 与温度强相关,温度每升高10度,暗电流大约翻倍
- 与曝光时间成正比,曝光越长,积累的暗电荷越多
- 不同像素的暗电流有差异,这就形成了固定模式噪声
1.2.2 像素复位噪声
另一个来源是像素的复位噪声。每次曝光开始前,我们需要把像素复位到一个已知电压。但这个复位过程不是完美的,会引入一个随机的电压波动。
说白了,就是每次复位,像素的起始点都不一样。这个差异,最终也会体现在黑电平上。
我刚开始做这行时,总觉得复位噪声是个小问题。直到有一次做低光照度测试,发现画面有奇怪的条纹,查了三天,最后定位到是复位时序没调好。嗯,从那以后我再也不敢小看它了。
1.3 BLC在ISP Pipeline中的位置
BLC是ISP处理的第一步,没有之一。它位于RAW域处理的最前端。
下面这张图,是我自己画的ISP Pipeline简化版,你看看BLC站在哪:
看到没?BLC是第一个处理模块。为什么?因为后面的LSC(镜头阴影校正)、AWB(自动白平衡)、去马赛克等等,它们都假设输入的数据已经减掉了黑电平。
如果BLC没做好,后面的模块全都会算错。我见过一个案例,有人把BLC跳过了,结果AWB算出来的色温完全不对,画面偏得一塌糊涂。
1.4 BLC的数学表达
简单来说,BLC就是做减法:
// 伪代码示例
output_pixel = input_pixel - black_level;
// 实际项目中,黑电平可能是一个值,也可能是每个通道不同
// 比如RGGB的Bayer格式:
output_R = input_R - black_level_R;
output_Gr = input_Gr - black_level_Gr;
output_Gb = input_Gb - black_level_Gb;
output_B = input_B - black_level_B;
这里要注意,黑电平不一定是整数。很多高精度传感器,黑电平是带小数的。我习惯用16位精度来存,避免截断误差。
小技巧:调试时,先拍一张全黑图(盖上镜头盖),然后统计所有像素的均值。这个均值,就是当前条件下的黑电平参考值。
1.5 黑电平校准的必要性
黑电平不是一成不变的。它会随着温度、增益、曝光时间变化。所以我们需要动态校准。
我见过一些低端方案,直接写死一个固定值。结果夏天和冬天拍出来的暗部完全不一样。这就是偷懒的代价。
正确的做法是:
- 在传感器周围留一些光学黑像素(OPB),实时监测黑电平
- 或者定期做暗场校准,更新黑电平表
- 温度变化时,及时调整校准参数
避坑指南:我曾经遇到过一个项目,OPB区域被灰尘挡住了,导致黑电平校准值偏大,画面暗部被裁切。排查了整整两天。所以,一定要确认OPB区域是干净的、不受光的。
1.6 小结
黑电平,说白了就是传感器的「零点」。它由暗电流和复位噪声共同决定,在ISP Pipeline中处于最前端的位置。
校准黑电平,就是找到这个零点,然后把它减掉。听起来简单,但实际调试中坑很多。温度、增益、曝光时间,每一个变量都会影响它。
下一章,我会详细讲黑电平的校准方法,包括硬件校准和软件校准的区别,以及我踩过的那些坑。咱们到时候接着聊。
公众号:蓝海资料掘金营,微信deep3321