RAW域处理:黑电平校正、镜头阴影校正、坏点校正

各位好,欢迎来到第二章。今天咱们聊聊RAW域的前三个基础模块——黑电平校正(BLC)、镜头阴影校正(LSC)和坏点校正(DPC)。

这三个模块,说白了就是给RAW数据“打扫卫生”。传感器出来的原始数据,就像刚挖出来的矿石,杂质多、不均匀、还有瑕疵。不处理干净,后面的活儿根本没法干。

我个人习惯,调ISP流水线时,一定先把这三步调稳。为什么?因为它们直接影响信噪比和均匀性,是后续所有处理的基础。

2.1 黑电平校正(BLC)

先说说黑电平。你想想看,传感器在完全无光的情况下,输出值应该是0对吧?但实际不是。因为电路本身有暗电流、有偏置电压,所以输出会有一个固定的偏移量。这个偏移量,就是黑电平。

校正原理很简单: 把每个像素的值减去这个偏移量。

核心公式:

P_out = P_raw - BLC_offset

其中 BLC_offset 通常由传感器厂商提供,或者通过盖住镜头(全黑场景)统计得到。

我在项目中遇到过一个问题:某款传感器在不同增益下,黑电平居然会漂移。低增益时是64,高增益时变成了68。如果不做增益相关的BLC补偿,暗部就会出现偏色。

实战建议:

  • BLC值最好分通道统计(R/Gr/Gb/B),因为不同通道的暗电流可能不同
  • 如果传感器支持,建议做温度补偿——温度每升高10°C,暗电流大约翻倍
  • 校正后的值如果小于0,需要截断到0,否则会出现负值噪声

注意: 有些ISP芯片会把BLC放在数字增益之后,这会导致暗部噪声被放大。我建议BLC一定要放在RAW域的最前面,越早越好。

2.2 镜头阴影校正(LSC)

镜头阴影,也叫亮度衰减。说白了就是镜头中心亮、四周暗。这是因为镜头的光学特性决定的——边缘光线入射角度大,到达传感器的光量少。

校正方法:给每个像素乘一个增益系数,中心区域增益小,边缘区域增益大。

区域 衰减程度 所需增益
中心 0% 1.0x
中间 10-20% 1.1-1.25x
边缘 30-50% 1.4-2.0x

嗯,这里要注意:LSC增益不能太大。我曾经调一个广角镜头,边缘增益设到了2.5倍,结果边缘噪声爆炸了。为什么?因为增益放大了信号,也放大了噪声。

调优技巧:

  • LSC系数通常用网格形式存储(比如16x16网格),每个网格点对应一个增益值
  • 网格之间的像素用双线性插值计算
  • 建议分R/G/B三个通道分别做LSC,因为不同波长的光衰减程度不同

我记得有一次,客户反馈拍出来的照片左上角偏绿。排查了半天,发现是LSC的R通道网格系数在左上角偏小,导致R通道增益不足。重新标定后问题解决。

2.3 坏点校正(DPC)

坏点,就是传感器上那些“不听话”的像素。要么一直亮(亮点),要么一直暗(暗点),要么响应异常。

坏点分两种:

  • 静态坏点: 出厂就有,位置固定。可以通过坏点表(Defect Table)记录并校正。
  • 动态坏点: 使用过程中新产生的,或者只在特定条件下出现。需要实时检测。

校正方法:用周围正常像素的值来替换坏点。常见算法有中值滤波、均值滤波、梯度方向插值。

动态坏点检测流程:

1. 计算当前像素与周围8邻域像素的差值
2. 如果差值超过阈值,标记为候选坏点
3. 检查候选坏点是否在边缘区域(边缘区域容易误判)
4. 确认是坏点后,用邻域中值替换

我曾经踩过一个坑:动态坏点检测的阈值设得太低,结果把星空照片里的星星全当坏点给抹掉了。后来加了亮度自适应阈值——暗区阈值低一些,亮区阈值高一些,才解决。

避坑指南:

  • 坏点校正不要做得太激进,否则会损失细节
  • 建议保留坏点表,每次开机加载,避免重复检测
  • 对于Bayer格式,坏点校正要注意同色通道——只能用同色通道的像素来替换

2.4 三个模块的流水线关系

这三个模块在流水线中的顺序是固定的:BLC → LSC → DPC。为什么是这个顺序?

我解释一下:

  1. 先做BLC: 把黑电平偏移去掉,让数据归零。否则后面的LSC增益会把黑电平偏移也放大。
  2. 再做LSC: 校正亮度不均匀。这时候数据已经干净了,增益不会放大黑电平噪声。
  3. 最后做DPC: 因为LSC可能会改变坏点的表现(增益后坏点更明显),所以DPC放在LSC之后效果更好。

下面这张图展示了三个模块的流水线关系:

RAW域预处理流水线 RAW输入 BLC LSC DPC 校正后RAW 顺序固定:先减偏移 → 再校均匀 → 最后修坏点 顺序错了,效果会大打折扣

2.4 参数调优实战要点

最后,我总结一下这三个模块的调优要点:

模块 关键参数 调优方法 常见问题
BLC 偏移量、通道差异 全黑场景统计,分通道取均值 增益变化导致偏移漂移
LSC 网格增益、插值方式 均匀光源下拍摄灰卡,计算增益 边缘噪声放大、偏色
DPC 检测阈值、替换算法 坏点表+动态检测结合 误检(星星、纹理)、漏检

我的调优顺序:

先调BLC,确保黑电平准确 → 再调LSC,保证亮度均匀 → 最后调DPC,修掉坏点。每一步调好后再往下走,不要跳步。