3、传感器RAW数据预处理:黑电平校正与去噪前置
各位同学,欢迎来到第三章。上一章我们聊了RAW数据的基本格式和Bayer阵列。今天要讲的内容,是ISP流水线上真正意义上的第一步——黑电平校正(BLC)和去噪前置。
为什么要把这两个放在一起讲?因为在实际项目中,它们往往是“连体婴”。黑电平没校好,噪声模型就全是错的;噪声没压住,后面的白平衡和去马赛克都会出问题。我见过不少团队,花大价钱调AI降噪模型,结果效果不好,最后发现是黑电平校正的精度差了2个DN——嗯,这种坑,踩过一次就忘不了。
3.1 黑电平校正:把“零”找回来
先说黑电平。传感器在完全无光的情况下,输出的像素值并不是0。为什么?因为传感器本身有暗电流,读出电路也有偏置。这个偏置值,就是黑电平(Black Level)。
你想想看,如果黑电平是64,那么一个真实亮度为0的像素,读出来是64。如果不做校正,后面的所有处理都会带着这个64的偏移。暗部细节直接丢失,颜色也会偏。
校正公式很简单:
I_corrected = I_raw - black_level
但问题在于——black_level怎么取?
传感器厂商通常会提供OB(Optical Black)像素区域。这些像素被物理遮挡,不感光。它们的平均值,就是当前帧的黑电平参考值。
我个人习惯的做法是:
- 从RAW数据中提取OB区域的像素(通常是传感器边缘的几行/几列)
- 计算OB像素的均值,作为black_level
- 如果传感器支持行级OB,每行单独计算,避免行噪声影响
- 对全图减去black_level,并做clamp到0
这里有个细节:OB像素本身也有噪声。直接用单帧的OB均值,可能会引入帧间抖动。我建议做时域滤波——用过去N帧的OB均值做指数平滑。我在一个手机项目里试过,帧间亮度抖动从±3DN降到了±0.5DN以下。
关键指标:黑电平校正精度应控制在±1DN以内。超过这个范围,暗部信噪比会明显恶化。
3.2 黑电平校正的“坑”
讲几个我踩过的坑。
坑一:OB区域被污染。 有一次,我调试的模组在边缘出现了漏光。OB像素区域被杂散光照到,黑电平算出来偏高,导致暗部被过度减除,出现负值clamp后的“死黑”。后来加了OB区域的异常像素检测,超过3σ的像素直接剔除。
坑二:温度漂移。 传感器温度升高,暗电流增大,黑电平会漂。我见过一个极端案例,手机在夏天户外拍视频,黑电平从64漂到了78。如果不做温度补偿,画面会越来越暗。解决方案是查传感器datasheet的温度系数,或者用片上温度传感器做实时补偿。
坑三:不同增益下的黑电平不一致。 模拟增益和数字增益对黑电平的影响不同。我建议在增益切换时,重新采样OB区域,而不是用固定值。
注意: 黑电平校正必须在去噪之前做。如果先降噪再减黑电平,噪声模型会被破坏,降噪效果会打折扣。
3.3 去噪前置:为什么要在RAW域做降噪?
好,黑电平校正完了,接下来就是去噪。但为什么要在RAW域做?为什么不等去马赛克之后再做?
原因有三:
- 噪声模型最简单。 RAW域的噪声主要是光子散粒噪声(泊松分布)和读出噪声(高斯分布)。模型清晰,好处理。
- 避免噪声被放大。 去马赛克和颜色校正会放大噪声。先降噪,后面的处理会更干净。
- 保留细节。 RAW域每个像素只对应一个颜色通道,降噪时不会引入颜色伪影。
我在一个暗光视频项目中做过对比:RAW域降噪后,PSNR比RGB域降噪高2.3dB,而且运动区域的拖影明显更少。
3.4 传统去噪 vs AI去噪前置
传统ISP里,RAW域去噪通常用BM3D或者双边滤波。但BM3D计算量大,在手机上跑不动。双边滤波虽然快,但容易把纹理磨平。
AI来了之后,情况变了。我个人更倾向于在RAW域用轻量级CNN做前置降噪。网络结构不用太深,3-5层卷积就够了。输入是4通道(R、Gr、Gb、B分别处理),输出是降噪后的RAW数据。
这里给一个参考结构:
Input: 4-channel RAW patch (32x32x4)
↓
Conv3x3 + ReLU (32 filters)
↓
Conv3x3 + ReLU (32 filters)
↓
Conv3x3 + ReLU (32 filters)
↓
Conv3x3 (4 filters) → Residual connection
↓
Output: 4-channel denoised RAW patch
这个结构在算力和效果之间比较平衡。我在一个骁龙8 Gen2平台上测过,处理1080p RAW图只需要8ms。
技巧: 训练时用噪声仿真数据比用真实数据更可控。我常用的方法是:干净RAW + 泊松-高斯噪声模型 + 黑电平偏移 + 行噪声。这样训练出来的模型,泛化能力很强。
3.5 去噪前置的避坑指南
再分享几个实战经验。
避坑一:不要过度降噪。 我曾经在一个项目中,把降噪强度拉得太高,结果暗部细节全没了,看起来像塑料。后来我加了边缘保护loss,在训练时约束纹理区域的降噪强度。
避坑二:注意噪声的非均匀性。 传感器不同区域的噪声水平不一样,尤其是边缘区域。我建议在降噪前,先做一个噪声水平估计图,让网络知道每个像素的噪声方差。
避坑三:AI降噪和传统降噪可以结合。 不是非此即彼。我现在的方案是:AI做低频大噪声的去除,传统滤波做高频小噪声的平滑。两者互补,效果比单一方案好。
3.6 本章知识体系
下面这张图,把本章的核心逻辑串起来了。从RAW输入开始,经过黑电平校正,再到去噪前置,每一步都有对应的技术和注意事项。
3.7 本章小结
黑电平校正和去噪前置,是RAW数据预处理的两个核心步骤。它们看似基础,但直接影响整个ISP流水线的质量。
我个人的经验是:预处理阶段多花一分功夫,后面少踩十分坑。尤其是暗光场景,噪声大、黑电平漂移严重,预处理做不好,AI模型再强也救不回来。