1. 黑电平校正概述
各位同学,咱们今天聊聊黑电平校正。这名字听起来挺学术,说白了就是搞清楚「什么是真正的黑」。
我刚开始做图像传感器那会儿,总觉得黑电平是个小问题。后来被坑过几次才明白——黑电平没搞对,后面所有图像处理都是白搭。你想想看,连黑色都定义不准,还谈什么色彩还原?
什么是黑电平
黑电平,就是传感器在完全无光照条件下输出的数字信号值。
理想情况下,没光就应该输出 0。但现实世界没那么完美。传感器即使在全黑环境里,也会读出一些信号。这个非零的基准值,就是黑电平。
关键概念:黑电平 ≠ 噪声。噪声是随机的,黑电平是固定的偏移量。你可以把它理解成「零点的漂移」。
举个例子。一个 10-bit 的传感器,理想黑电平是 0。但实际读出来可能是 64、128,甚至更高。这个偏移量如果不处理,整幅图像就像蒙了一层灰雾。
黑电平产生的物理机理
为什么会读出非零值?这里有几个核心原因。
| 物理机制 | 产生原因 | 影响特征 |
|---|---|---|
| 暗电流 | 硅基热激发产生的电子-空穴对 | 随温度升高呈指数增长 |
| 像素复位噪声 | 复位晶体管沟道电荷注入 | 固定模式噪声,行间差异 |
| 读出电路偏移 | 列放大器、CDS 电路的直流偏置 | 列方向固定偏移 |
| ADC 偏移 | 模数转换器的参考电压偏差 | 全局固定偏移 |
这里面最头疼的是暗电流。我记得有一次做车载摄像头项目,夏天车内温度能到 85°C。暗电流直接飙到正常值的 10 倍以上。黑电平如果不做温度补偿,画面直接废掉。
我的经验:暗电流和曝光时间也是线性关系。长曝光场景(比如天文摄影、安防夜视)黑电平校正必须考虑曝光时间因子。我曾经见过一个团队用固定黑电平校正长曝光图像,结果暗角区域全是偏色。
黑电平对图像质量的影响
黑电平没校好,影响是全方位的。我列几个典型问题。
- 动态范围压缩:黑电平偏移占用了 ADC 的量化范围。本来 0-1023 的码值,现在 0-64 全浪费了。有效动态范围直接缩水。
- 对比度下降:暗区细节被黑电平淹没。你拍一张夜景,本该是纯黑的地方变成深灰,整个画面发雾。
- 色彩偏色:不同通道的黑电平不一致,暗部就会出现色偏。尤其是 R、G、B 三个通道各自偏移量不同,暗区偏绿或偏紫是常见问题。
- 固定模式噪声(FPN):列与列之间的黑电平差异,会在图像上形成竖条纹。这种噪声人眼特别敏感。
避坑指南:我曾经调试过一个手机摄像头模组,暗部总是偏绿。查了三天,最后发现是 G 通道的黑电平比 R、B 低了 8 个码值。8 个码值,在亮部根本看不出来,暗部就是一片绿。所以黑电平校正的精度,至少要做到 1 个码值以内。
校正的必要性
说白了,黑电平校正就是给图像「归零」。没有这一步,后续的白平衡、伽马校正、色彩矩阵全都会算错。
我画了一张图,帮你理清黑电平校正在整个 ISP 流水线中的位置。
你看这个流程。黑电平校正紧接在传感器原始数据之后,是所有 ISP 处理的第一步。我习惯把它叫做「守门员」——先把基准搞对,后面的事才好办。
校正的基本思路
校正方法说起来不复杂:
- 采集黑帧:盖上镜头盖,或者用传感器内部的黑像素(OB 像素),采集一帧全黑图像。
- 计算偏移量:对黑帧求均值,得到每个通道、每列甚至每个像素的偏移值。
- 减去偏移:正常图像减去这个偏移量,完成校正。
但实际工程里,坑很多。比如 OB 像素和有效像素的暗电流特性不一样,直接减会引入新的误差。再比如黑电平会随温度、增益、曝光时间变化,需要做多维查表补偿。
我建议:刚入门的时候,先别急着搞复杂的自适应算法。先把静态黑电平校正做扎实——采集多帧黑帧取平均,逐列计算偏移,减完之后检查暗区是否还有残留的竖条纹。这一步做稳了,再考虑温度补偿和动态校正。