4. 黑电平校正(BLC):BLC原理、RK平台BLC参数配置与效果验证

4.1 黑电平校正原理

图像传感器在无光照(全黑)条件下,像素单元仍会输出一个非零的电压信号,这个信号称为暗电流或黑电平。暗电流主要由传感器半导体材料的热激发产生,其大小受温度、曝光时间、增益等因素影响。黑电平校正(Black Level Correction, BLC)的目的就是从原始RAW数据中减去这个固定的偏移量,使黑色区域真正归零,为后续的增益、白平衡等处理提供正确的起点。

核心公式:
Pout = max( Praw - OB_value, 0 )
其中 Praw 为原始像素值,OB_value 为黑电平偏移量,Pout 为校正后的像素值。

如果不进行BLC校正,暗电流偏移会导致:

  • 黑色不纯:画面暗部发灰、发雾,对比度下降。
  • 颜色偏色:暗电流在R、Gr、Gb、B四个通道上的偏移量不一致,导致暗部出现色偏。
  • 动态范围损失:偏移量占用了ADC的量化范围,减少了有效信号位宽。
黑电平校正(BLC)原理示意图 原始RAW像素 P_raw = 信号 + 暗电流 (含OB偏移) BLC校正 P_out = P_raw - OB_value (含OB_clip限幅) 校正后RAW P_out = 真实信号 (黑色归零) 关键说明 OB_value 通常从传感器暗行(Optical Black)像素统计得到, 不同通道(R/Gr/Gb/B)可配置独立的OB_value以消除暗部色偏。

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 参数配置流程

  1. 获取暗行统计值:通过传感器驱动读取 Optical Black 像素区域的均值,或在全黑环境下抓图统计。
  2. 设置ob_value:将统计值写入对应通道,注意区分 R/Gr/Gb/B 四通道的差异。
  3. 设置ob_clip:固定为0,防止负值出现。
  4. 使能BLC模块:将 enable 置1,确认BLC生效。
  5. 验证效果:抓取全黑图和灰阶图,检查黑色是否归零、暗部色偏是否消除。
RK平台BLC参数配置流程图 1. 获取暗行统计值 2. 设置 ob_value[4] 3. 设置 ob_clip = 0 4. 使能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为步进微调,观察暗部噪声和细节的平衡。
BLC效果验证:全黑画面直方图对比 BLC关闭(旁路) 像素值分布偏右,黑色不归零 暗部发灰,动态范围损失 BLC开启(校正后) 像素值分布左移,黑色归零 暗部纯净,动态范围恢复

4.4 本章小结

  • BLC原理:通过减去暗电流偏移量(OB_value),使RAW数据中的黑色区域归零,消除暗部发灰和色偏。
  • RK平台参数:ob_value[4] 支持四通道独立配置,ob_clip 固定为0防止负值溢出。
  • 验证方法:全黑画面统计、灰阶卡线性度分析、主观暗部效果对比,确保BLC参数准确。
  • 调优要点:ob_value 需精确匹配传感器实际暗电流,过大导致死黑,过小导致发灰,需在噪声和细节间平衡。