2. 黑电平校正原理

好,咱们进入正题。黑电平校正,说白了就是告诉相机:「你看到的零,不一定是真的零。」

我刚开始接触ISP流水线时,总觉得这步可有可无。直到有一次,我在暗光下拍了一张纯黑卡片,结果发现像素值不是0,而是跳到了50多。嗯,从那以后我再也不敢跳过黑电平校正了。

2.1 黑电平的定义

黑电平,英文叫Black Level。它指的是:在完全没有光入射的情况下,传感器像素输出的数字值。

理想情况下,没光就应该输出0。但现实世界没这么完美。你想想看,传感器是一个电子器件,它有自己的「底噪」。这个底噪会让像素在暗场下输出一个非零的偏移量。

这个偏移量,就是黑电平。

关键理解:黑电平不是噪声,它是一个固定的直流偏移。噪声是叠加在这个偏移之上的随机波动。

不同传感器、不同增益、不同温度下,黑电平的值都不一样。我见过最夸张的一次,某款CMOS在高温下黑电平漂了30多个DN(Digital Number)。如果不校正,整张画面都会偏灰,暗部细节直接废掉。

2.2 暗电流与噪声来源

为什么会存在黑电平?这就要聊到暗电流了。

暗电流,是传感器在没有光照时,由于热激发产生的电子-空穴对。温度越高,暗电流越大。这就是为什么手机拍夜景时,画面噪点特别多——传感器发热了。

暗电流的来源主要有三个:

  • 扩散暗电流:少数载流子在耗尽区外扩散产生的。这个跟掺杂浓度有关,工艺定了就基本定了。
  • 耗尽区产生暗电流:耗尽区内的缺陷能级充当了产生中心。这个跟工艺质量强相关。
  • 表面暗电流:硅-二氧化硅界面处的表面态引起的。嗯,这个最麻烦,跟工艺和老化都有关。

除了暗电流,还有几个噪声源也在贡献黑电平偏移:

噪声类型 来源 特性
复位噪声(KTC噪声) 像素复位开关的热噪声 与温度、电容相关,低频为主
读出噪声 模拟前端(AFE)电路 与读出速率相关,高速时更明显
1/f噪声 MOS管沟道载流子俘获/释放 低频段显著,工艺越老越明显
散粒噪声 暗电流本身的量子特性 服从泊松分布,均方根等于均值平方根

这些噪声叠加在一起,就形成了我们看到的黑电平偏移。注意,噪声是随机的,但黑电平偏移是相对固定的——这就是我们能校正它的前提。

2.3 校正的数学原理

好,现在讲核心。黑电平校正的数学原理,简单到令人发指:

减去一个固定的偏移量。

公式长这样:

I_corrected(x, y) = I_raw(x, y) - black_level

其中:

  • I_raw(x, y) 是原始像素值
  • black_level 是黑电平偏移量
  • I_corrected(x, y) 是校正后的像素值

就这么简单?对,就这么简单。但坑都在细节里。

注意:校正后的值可能变成负数。比如原始值是50,黑电平是64,减完就是-14。负数不能直接存成无符号整数,所以一般会做截断或加一个偏置。

实际工程中,黑电平的获取方式有两种:

  1. OB(Optical Black)像素法:传感器边缘有一圈被金属遮挡的像素,它们永远收不到光。这些像素的输出平均值,就是当前帧的黑电平。
  2. 暗场标定法:在完全无光的环境下,拍一张全黑图,统计全图或分区的平均值,写入传感器寄存器或校准表。

我个人习惯用OB像素法。为什么?因为它能实时跟踪温度和增益变化。暗场标定法虽然精度高,但标定一次管一天——温度一变,黑电平就漂了。

我曾经在一个项目中吃过这个亏。当时用了暗场标定法,白天拍没问题。到了晚上,传感器温度升了15度,黑电平漂了20个DN,整张画面灰蒙蒙的。后来改成OB像素法,每帧都动态更新黑电平,问题就解决了。

2.4 黑电平校正的完整流程

下面这张图,是我画的黑电平校正知识结构。你看一眼就能明白整体逻辑:

黑电平校正知识结构图 黑电平校正知识结构 黑电平校正 黑电平定义 噪声来源 校正原理 无光输出值 直流偏移量 暗电流 读出噪声 减去偏移量 截断处理 工程实现方式 注意事项 OB像素法 暗场标定法 负值截断 温度漂移 核心思想:黑电平是固定偏移,减去它就能恢复真实的暗部信息 但噪声是随机的,校正后仍需做降噪处理

2.5 工程中的坑与对策

讲几个我踩过的坑,希望对你有帮助。

避坑1:OB像素数量不够

我曾经在一个项目中,OB像素只有4行。结果每帧算出来的黑电平波动很大,校正后反而引入了行噪声。后来我把OB像素扩展到16行,取中值而不是均值,波动就压下去了。

避坑2:黑电平随增益变化

模拟增益每增加一倍,黑电平也会跟着放大。所以校正时,黑电平要乘以当前增益倍数。公式变成:I_corrected = I_raw - black_level * gain。这个坑我栽过两次,记住了。

避坑3:Bayer阵列不同通道的黑电平可能不同

R、Gr、Gb、B四个通道,由于工艺微差和电路布局不同,黑电平可能不一样。我建议每个通道单独统计OB像素,分别校正。否则会出现色偏,尤其是暗部偏绿或偏紫。

好了,黑电平校正的原理就这些。说白了就是「找到那个偏移量,然后减掉它」。但工程实现时,温度、增益、通道差异、OB像素设计,每一个细节都可能翻车。多留个心眼,总没错。