4. 黑电平校正(BLC):BLC原理、RK平台BLC参数配置与效果验证
4.1 黑电平校正原理
图像传感器在无光照(全黑)条件下,像素单元仍会输出一个非零的电压信号,这个信号称为暗电流或黑电平。暗电流主要由传感器半导体材料的热激发产生,其大小受温度、曝光时间、增益等因素影响。黑电平校正(Black Level Correction, BLC)的目的就是从原始RAW数据中减去这个固定的偏移量,使黑色区域真正归零,为后续的增益、白平衡等处理提供正确的起点。
核心公式:
Pout = max( Praw - OB_value, 0 )
其中 Praw 为原始像素值,OB_value 为黑电平偏移量,Pout 为校正后的像素值。
Pout = max( Praw - OB_value, 0 )
其中 Praw 为原始像素值,OB_value 为黑电平偏移量,Pout 为校正后的像素值。
如果不进行BLC校正,暗电流偏移会导致:
- 黑色不纯:画面暗部发灰、发雾,对比度下降。
- 颜色偏色:暗电流在R、Gr、Gb、B四个通道上的偏移量不一致,导致暗部出现色偏。
- 动态范围损失:偏移量占用了ADC的量化范围,减少了有效信号位宽。
4.2 RK平台BLC参数配置
在RK平台的ISP驱动中,BLC模块位于RAW域处理的最前端,通常在DPCC(坏点校正)之前。RK3588/RK356X等平台的BLC参数主要通过以下两个关键字段控制:
| 参数名称 | 数据类型 | 作用范围 | 说明 |
|---|---|---|---|
| ob_value | uint16_t[4] | R, Gr, Gb, B 四通道 | 每个通道的黑电平偏移量,单位:ADC LSB。典型值范围 64~256(10-bit RAW)。 |
| ob_clip | uint16_t | 全局 | 校正后的像素最小值限幅。通常设为0,防止减法后出现负值导致数据溢出。 |
调优经验:在RK平台上,ob_value 的初始值可以通过读取传感器驱动中的暗行统计值获得。如果传感器驱动未提供,可以在全黑遮光条件下抓取RAW图,统计R/Gr/Gb/B四个通道的平均值作为初始ob_value。
4.2.1 参数配置示例(RKISP3.x)
以下是在RK平台ISP配置文件中设置BLC参数的典型代码片段:
// RKISP3.x BLC 参数配置示例
// 文件路径:rkisp3-config.h 或 sensor tuning xml
struct rkisp_blc_cfg {
uint16_t ob_value[4]; // [0]=R, [1]=Gr, [2]=Gb, [3]=B
uint16_t ob_clip; // 限幅值,通常为0
uint8_t enable; // 使能位:1 开启,0 旁路
};
// 示例:10-bit RAW 传感器,暗电平约64 LSB
struct rkisp_blc_cfg blc_config = {
.ob_value = {64, 66, 68, 70}, // 各通道独立补偿
.ob_clip = 0, // 限幅到0
.enable = 1 // 开启BLC
};
4.2.2 参数配置流程
- 获取暗行统计值:通过传感器驱动读取 Optical Black 像素区域的均值,或在全黑环境下抓图统计。
- 设置ob_value:将统计值写入对应通道,注意区分 R/Gr/Gb/B 四通道的差异。
- 设置ob_clip:固定为0,防止负值出现。
- 使能BLC模块:将 enable 置1,确认BLC生效。
- 验证效果:抓取全黑图和灰阶图,检查黑色是否归零、暗部色偏是否消除。
4.3 暗电流补偿效果验证
BLC参数配置是否正确,需要通过客观指标和主观图像进行双重验证。以下是RK平台上常用的验证方法:
4.3.1 客观指标验证
| 验证项目 | 测试条件 | 合格标准 | 验证工具 |
|---|---|---|---|
| 黑色电平归零 | 全黑遮光,抓取RAW图 | R/Gr/Gb/B四通道均值 < 1 LSB | RAW分析工具(如Imatest、Python+NumPy) |
| 暗部色偏消除 | 全黑遮光,统计各通道均值 | 四通道均值差异 < 2 LSB | RAW分析工具 |
| 线性度保持 | 拍摄灰阶卡(如X-Rite ColorChecker) | 暗部区域响应曲线通过原点 | Imatest 线性度分析 |
| 动态范围恢复 | 对比BLC开启前后的RAW直方图 | BLC后直方图左端无截断,有效位宽增加 | 直方图分析工具 |
4.3.2 主观效果对比
在RK平台调试工具(如RKISP Tuning Tool)中,可以通过以下步骤进行主观验证:
- 步骤1:将BLC模块旁路(enable=0),抓取全黑画面,观察暗部是否发灰、发雾。
- 步骤2:开启BLC并设置正确的ob_value,再次抓取全黑画面,暗部应变为纯黑。
- 步骤3:拍摄低照度场景(如室内暗光),对比BLC开启前后的暗部细节和颜色还原。
- 步骤4:检查暗部区域是否有异常色斑或条纹,确认ob_clip设置正确。
常见问题:如果ob_value设置过大(超过实际暗电流),会导致暗部细节丢失,画面出现“死黑”;如果ob_value设置过小,暗部仍然发灰,BLC效果不足。建议在调试时以0.5 LSB为步进微调,观察暗部噪声和细节的平衡。
4.4 本章小结
- BLC原理:通过减去暗电流偏移量(OB_value),使RAW数据中的黑色区域归零,消除暗部发灰和色偏。
- RK平台参数:ob_value[4] 支持四通道独立配置,ob_clip 固定为0防止负值溢出。
- 验证方法:全黑画面统计、灰阶卡线性度分析、主观暗部效果对比,确保BLC参数准确。
- 调优要点:ob_value 需精确匹配传感器实际暗电流,过大导致死黑,过小导致发灰,需在噪声和细节间平衡。