3、Sensor模组标定基础:黑电平校正(BLC)、线性度标定、增益一致性

模组标定,说白了就是给Sensor“量体裁衣”。

每一颗Sensor,甚至同一批次的模组,光电响应特性都有细微差异。如果不做标定,你拍出来的画面要么偏色、要么暗部细节全丢、要么亮部一片死白。我入行那会儿,就吃过没做标定的亏——整批模组出图,暗场全是紫红色,后来才发现是黑电平没对准。

这一章,我们聚焦三个最基础的标定项:黑电平校正(BLC)、线性度标定、增益一致性。它们是3A算法的地基,地基不稳,后面调啥都白搭。

核心观点:标定不是“做完一次就完事”。温度、曝光时间、增益都会影响这些参数。好的标定流程,必须覆盖全工作范围。
Sensor 模组标定基础 — 三大支柱 Sensor 标定 黑电平校正 (BLC) 消除暗电流偏移 线性度标定 校正光电响应曲线 增益一致性 R/G/B 通道增益对齐 标定流程要点 • 必须在全暗环境(0 lux)下采集BLC数据 • 线性度标定需要至少10个灰阶亮度点 • 增益一致性需覆盖模拟增益和数字增益全范围

3.1 黑电平校正(BLC)

黑电平,就是Sensor在完全无光输入时,依然输出的信号值。

为什么会这样?因为Sensor的每个像素都有暗电流,温度越高、曝光时间越长,暗电流越大。如果不减掉这个偏移量,暗部就会发灰、发紫。我见过有人把BLC当成固定值写死在代码里,结果夏天和冬天出图颜色完全不一样。

标定方法

  1. 全暗环境采集:盖上镜头盖,确保无任何漏光。我个人习惯采集至少100帧,取平均。
  2. 多曝光时间扫描:从最短曝光到最长曝光,记录每个曝光下的黑电平值。
  3. 多增益扫描:模拟增益从1x到16x,记录黑电平随增益的变化。
  4. 拟合曲线:通常BLC与曝光时间呈线性关系,与增益也近似线性。
小技巧:高通平台支持“动态BLC”,即根据当前曝光和增益实时查表校正。建议标定数据做成LUT(查找表),而不是简单的一次函数。

典型参数表

曝光时间 (ms) 增益 1x 增益 4x 增益 16x
1 64 68 80
10 66 72 96
100 72 88 144
1000 88 128 256
避坑指南:我曾经遇到过一批模组,BLC标定数据在实验室正常,但产线上批量测试时暗部偏色。查了两天才发现,产线环境有微弱红外光漏进镜头盖。所以,标定环境必须用红外截止滤镜+物理遮光双重保障。

3.2 线性度标定

理想情况下,Sensor的光电转换是线性的:光强增加一倍,输出值也增加一倍。

但现实是,Sensor在低亮区和高亮区都会偏离线性。低亮区有噪声和暗电流干扰,高亮区则接近饱和,响应开始压缩。线性度标定的目的,就是找到这个“线性区间”,并建立校正曲线。

标定流程

  • 均匀光源:使用积分球或均匀面光源,保证整个Sensor靶面照度一致。
  • 灰阶采集:从暗到亮,采集至少10个灰阶点。我建议用20个点,精度更高。
  • 拟合响应曲线:以参考光强为X轴,Sensor输出为Y轴,拟合多项式或分段线性函数。
  • 计算线性度误差:通常用“最大偏差/满量程”来表示,要求<1%。
关键指标:线性度误差 = max(|实际值 - 理想值|) / 满量程 × 100%。消费类Sensor要求<1%,车载要求<0.5%。

代码示例:线性度校正LUT生成

// 伪代码:生成线性度校正LUT
uint16_t linearity_lut[4096]; // 12-bit Sensor

for (int i = 0; i < 4096; i++) {
    // 根据标定曲线,将原始值映射到线性值
    float raw = (float)i;
    float corrected = poly3_fit(raw, coeff); // 三次多项式拟合
    linearity_lut[i] = (uint16_t)CLAMP(corrected, 0, 4095);
}

// 使用时直接查表
uint16_t pixel_out = linearity_lut[pixel_raw];

3.3 增益一致性

增益一致性,说白了就是R、G、B三个通道对增益的响应是否同步。

你想想看,如果红色通道增益高了10%,蓝色通道增益低了5%,那么画面整体就会偏青。这种偏色在低增益下不明显,但增益一高,偏色就暴露无遗。我调试过一款Sensor,增益到8x以上时,暗部直接变成绿色,就是因为绿色通道的增益响应比其他通道快。

标定方法

  1. 固定光源:使用D65或D50标准光源,照度稳定在1000 lux左右。
  2. 增益扫描:从1x到最大增益,每档采集一帧。
  3. 计算各通道均值:分别统计R、Gr、Gb、B四个通道的均值。
  4. 计算增益比:以绿色通道为基准,计算R/G、B/G的比值。
  5. 生成增益校正表:将比值做成LUT,在ISP中实时校正。

增益一致性数据示例

模拟增益 R/G 比值 B/G 比值 校正系数 (R) 校正系数 (B)
1x 1.02 0.98 0.980 1.020
2x 1.03 0.97 0.971 1.031
4x 1.05 0.95 0.952 1.053
8x 1.08 0.92 0.926 1.087
16x 1.12 0.88 0.893 1.136
注意:增益一致性校正必须在BLC之后、AWB之前进行。顺序错了,校正效果会互相干扰。

3.4 三个标定的联动关系

这三个标定不是孤立的。我举个例子你就明白了:

  • BLC没做准,线性度标定就会引入额外误差,因为暗电流偏移被当成了信号。
  • 线性度不准,增益一致性校正表也会跟着偏,因为不同亮度下的增益响应不同。
  • 增益一致性没做好,AWB(自动白平衡)会误判光源色温,导致整个画面偏色。
推荐流程:先做BLC → 再做线性度 → 最后做增益一致性。每一步的标定结果都要验证,不要跳步。

嗯,这一章的内容就到这里。标定是苦活、细活,但也是ISP调试中最值得投入精力的部分。你把这些基础打牢了,后面调AEC、AWB、AF的时候,会少踩很多坑。