3、Sensor模组标定基础:黑电平校正(BLC)、线性度标定、增益一致性
模组标定,说白了就是给Sensor“量体裁衣”。
每一颗Sensor,甚至同一批次的模组,光电响应特性都有细微差异。如果不做标定,你拍出来的画面要么偏色、要么暗部细节全丢、要么亮部一片死白。我入行那会儿,就吃过没做标定的亏——整批模组出图,暗场全是紫红色,后来才发现是黑电平没对准。
这一章,我们聚焦三个最基础的标定项:黑电平校正(BLC)、线性度标定、增益一致性。它们是3A算法的地基,地基不稳,后面调啥都白搭。
核心观点:标定不是“做完一次就完事”。温度、曝光时间、增益都会影响这些参数。好的标定流程,必须覆盖全工作范围。
3.1 黑电平校正(BLC)
黑电平,就是Sensor在完全无光输入时,依然输出的信号值。
为什么会这样?因为Sensor的每个像素都有暗电流,温度越高、曝光时间越长,暗电流越大。如果不减掉这个偏移量,暗部就会发灰、发紫。我见过有人把BLC当成固定值写死在代码里,结果夏天和冬天出图颜色完全不一样。
标定方法
- 全暗环境采集:盖上镜头盖,确保无任何漏光。我个人习惯采集至少100帧,取平均。
- 多曝光时间扫描:从最短曝光到最长曝光,记录每个曝光下的黑电平值。
- 多增益扫描:模拟增益从1x到16x,记录黑电平随增益的变化。
- 拟合曲线:通常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以上时,暗部直接变成绿色,就是因为绿色通道的增益响应比其他通道快。
标定方法
- 固定光源:使用D65或D50标准光源,照度稳定在1000 lux左右。
- 增益扫描:从1x到最大增益,每档采集一帧。
- 计算各通道均值:分别统计R、Gr、Gb、B四个通道的均值。
- 计算增益比:以绿色通道为基准,计算R/G、B/G的比值。
- 生成增益校正表:将比值做成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的时候,会少踩很多坑。