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。为什么是这个顺序?
我解释一下:
- 先做BLC: 把黑电平偏移去掉,让数据归零。否则后面的LSC增益会把黑电平偏移也放大。
- 再做LSC: 校正亮度不均匀。这时候数据已经干净了,增益不会放大黑电平噪声。
- 最后做DPC: 因为LSC可能会改变坏点的表现(增益后坏点更明显),所以DPC放在LSC之后效果更好。
下面这张图展示了三个模块的流水线关系:
2.4 参数调优实战要点
最后,我总结一下这三个模块的调优要点:
| 模块 | 关键参数 | 调优方法 | 常见问题 |
|---|---|---|---|
| BLC | 偏移量、通道差异 | 全黑场景统计,分通道取均值 | 增益变化导致偏移漂移 |
| LSC | 网格增益、插值方式 | 均匀光源下拍摄灰卡,计算增益 | 边缘噪声放大、偏色 |
| DPC | 检测阈值、替换算法 | 坏点表+动态检测结合 | 误检(星星、纹理)、漏检 |
我的调优顺序:
先调BLC,确保黑电平准确 → 再调LSC,保证亮度均匀 → 最后调DPC,修掉坏点。每一步调好后再往下走,不要跳步。