4. 黑电平校正与镜头阴影补偿

黑电平校正(BLC)与镜头阴影补偿(LSC)是ISP前端最靠近Sensor的两级校正,它们处理的是两类不同来源的“非理想偏移”:一类是暗电流与读出电路引入的加性偏置,另一类是镜头与CRA失配引入的乘性空间衰减。理解这两级的关键,是先分清“加性”与“乘性”在数学上的差别,再理解它们在Bosch ISP流水线中的位置与参数形态。

黑电平漂移的机理

CMOS像素在无光条件下输出的并非0,而是由暗电流、复位噪声、源跟随器失调和列读出电路共同形成的基底电平。这个基底电平随温度、曝光时间和模拟增益变化:温度每升高约6~8℃,暗电流大致翻倍;模拟增益提高时,黑电平也会被同步放大。因此黑电平不是固定常数,而是一个随工况漂移的偏置量。若不做校正,暗部会被整体抬高,导致暗部对比度下降、暗部噪声被“垫高”,并在后续白平衡与色彩矩阵中被放大成偏色。

黑电平校正的数学形式是减性操作:P_out = P_in - BL。关键在于BL的取值必须与当前增益、温度、曝光时间匹配。工程上通常按“模拟增益档位”建立黑电平查找表,而不是用单一常数。

OB区统计与校正算法

Sensor通常会在有效像素区外围设置光学黑(Optical Black,OB)区,这些像素被遮光但保留同样的读出电路,因此其输出直接反映当前工况下的黑电平。Bosch ISP的BLC模块会读取OB区统计值,常用做法是:对OB区像素做均值统计,同时剔除异常点(如坏点、列固定噪声),再按行/列方向做一维平滑,得到逐行或逐列的黑电平估计。

校正算法一般分三步:

  1. OB统计:对OB区按行、按列分别求均值,得到行黑电平向量与列黑电平向量。
  2. 平滑与限幅:对行/列向量做滑动平均,抑制随机噪声;同时设置上下限,防止坏行坏列把估计值拉偏。
  3. 逐像素减除:对有效像素按所在行、列减去对应黑电平,并做下限钳位(通常钳到0或一个很小的正数),避免出现负值。

需要特别注意的是,OB区统计必须在模拟增益切换后重新收敛,否则会出现“增益切换瞬间暗部跳变”的现象。调试时可在增益切换后观察若干帧的OB均值曲线,确认其稳定时间。

BLC 与 LSC 在 ISP 前端流水线中的位置与数据形态 Sensor 输出 有效像素 + OB区 含暗电流偏置 BLC 黑电平校正 OB区行/列统计 平滑 + 限幅 逐像素减除 + 钳位 LSC 镜头阴影补偿 网格增益表 双线性插值 R/Gr/Gb/B 分通道 后续处理 AWB / CCM Gamma / NR OB区统计与黑电平估计 OB行均值 → 行黑电平向量 OB列均值 → 列黑电平向量 滑动平均 + 上下限钳位 LSC 网格增益与插值 G11 G12 G13 G21 G22 G23 ← 网格节点 ← 双线性插值

LSC网格标定与插值

镜头阴影表现为画面四角亮度低于中心,且R/G/B三通道衰减比例不同。LSC的校正模型是乘性增益:P_out = P_in × G(x,y),其中G(x,y)是位置相关的增益,中心接近1,四角大于1。工程实现上不会存储逐像素增益,而是把画面划分为M×N个网格(常见如17×13、33×25),每个网格节点存储一个增益值,像素位置通过双线性插值得到实际增益。

标定流程通常为:在均匀面光源下拍摄一张平场图,对每个颜色通道分别计算“目标亮度/实际亮度”得到增益图,再降采样到网格节点。标定时要注意:平场图本身要先经过BLC,否则暗部偏置会污染增益计算;光源色温应接近模组常用场景;镜头对焦位置应与实际使用一致,因为对焦会改变阴影分布。

插值环节需要关注边界处理:画面边缘的像素可能落在网格外,此时应使用边缘节点增益做外推或钳位,避免出现增益突变。Bosch ISP的LSC模块通常支持网格分辨率、插值方式(双线性/双三次)和增益上限配置,增益上限用于防止四角过度放大噪声。

色差阴影处理

由于镜头对不同波长的折射率不同,R/G/B三通道的阴影形状并不一致,通常蓝通道四角衰减最严重,红通道次之,绿通道相对较轻。如果只用一个亮度增益表,校正后四角会出现偏色(常见为偏蓝或偏紫)。因此LSC必须分通道标定:R、Gr、Gb、B各自拥有独立的网格增益表。Gr与Gb虽然同为绿色,但由于Bayer阵列中位置不同,其阴影也可能存在细微差异,高端方案会分别处理。

色差阴影的验证方法是:校正后拍摄均匀灰卡,检查四角与中心的R/G/B比值是否一致。若四角偏蓝,说明蓝通道增益不足;若四角偏黄,说明蓝通道增益过大。调整时应以绿通道为基准,微调R/B通道增益,而不是整体抬高亮度。

Bosch ISP中BLC与LSC参数调试与效果验证

在Bosch ISP的调试工具中,BLC模块通常暴露以下参数:OB区起止行列、统计模式(均值/中值)、行/列平滑窗口、黑电平偏移量、钳位下限。LSC模块则暴露:网格行列数、各通道增益表、插值模式、增益上限、是否使能色差补偿。

调试顺序建议为:先关LSC、开BLC,在暗场下确认黑电平收敛;再开LSC,在均匀光源下确认四角亮度与色比;最后两者同时开启,检查暗部与四角是否出现异常。验证时可用以下检查表:

检查项观察对象合格判据(示例)
黑电平收敛暗场OB均值增益切换后3帧内波动<1LSB
暗部钳位暗场有效像素最小值无大面积0值或负值截断
亮度均匀性平场图四角/中心亮度比校正后≥90%(示例目标)
色比一致性四角与中心R/G、B/G比值偏差<3%(示例目标)
噪声放大四角暗部噪声不明显高于中心,无彩色噪点
调试提示:BLC与LSC的先后顺序不能颠倒。若先做LSC再做BLC,四角被放大后的黑电平会被错误减除,导致四角偏暗或偏色。Bosch ISP流水线中BLC固定在LSC之前,参数调试时应遵循这一顺序。

最后需要强调的是,BLC与LSC的调试不是一次性的,而是随模组、镜头、温度、增益档位变化的。建议为每个增益档位建立独立的BLC黑电平表,并为每个镜头型号建立独立的LSC网格表,在产线标定时写入OTP或配置文件,运行时由ISP按当前工况加载。