4、BLC软件校准流程:采集暗场数据、计算均值/中位数、写入寄存器、验证校准效果
好,咱们直接进入正题。BLC校准,说白了就是让传感器在「看不见东西」的时候,输出值归零。你想想看,如果暗场下像素值还飘着几十个DN,那拍出来的夜景全是灰蒙蒙的,根本没法看。
我个人习惯把BLC校准分成四步走:采数据 → 算统计 → 写寄存器 → 验效果。每一步都有坑,我踩过的坑比你们走过的路还多(笑)。下面咱们一个一个拆开讲。
4.1 采集暗场数据:盖好镜头盖,别漏光
这一步看起来简单,但最容易翻车。我见过有人拿手捂着镜头就开搞,结果手指缝漏光,校准出来全是错的。
正确做法:
- 用不透光的镜头盖,或者把相机放在暗箱里
- 环境温度要稳定,温差超过5°C就得重采
- 曝光时间用你产品最常用的那几档
- 增益也要覆盖常用范围,比如0dB、6dB、12dB
采集张数呢?我个人建议至少拍16帧,然后取平均。单帧噪声太大,算出来的均值不靠谱。你想想看,如果只拍一帧,刚好有个热像素跳了100DN,那这帧数据就废了。
4.2 计算均值/中位数:选哪个?看场景
数据采回来了,接下来就是算统计量。这里有两个选择:均值和中位数。
| 方法 | 优点 | 缺点 | 适用场景 |
|---|---|---|---|
| 均值 | 计算快,对高斯噪声抑制好 | 容易被异常像素(坏点)拉偏 | 传感器品质好,坏点少 |
| 中位数 | 抗干扰强,坏点不影响 | 计算慢,对均匀噪声不敏感 | 传感器有坏点,或暗场不均匀 |
嗯,这里要注意:千万别对整个画面算一个均值。为什么?因为暗场响应不是均匀的——边缘暗、中间亮,这是光学系统的通病。我建议把画面分成16×16或32×32的块,每个块单独算。
核心公式(以均值为例):
// 对每个颜色通道(R/Gr/Gb/B)分别计算
for each block (i, j):
sum = 0
for each pixel in block:
sum += pixel_value
block_mean[i][j] = sum / (block_width * block_height)
// 最终BLC值 = 所有块均值的平均值
blc_value = average(block_mean)
我个人习惯用中位数。原因很简单:传感器总有那么几个坏点,均值会被它们带偏。中位数就不怕,哪怕一个块里有10%的坏点,中位数依然稳如老狗。
4.3 写入寄存器:注意位宽和符号
算出来的BLC值,最终要写进传感器的寄存器。这里有两个坑:
- 位宽匹配: 寄存器是10位还是12位?BLC值不能超过寄存器最大值。比如10位寄存器最大1023,你算出来1050,那就得截断或缩放。
- 符号处理: 有些传感器支持负BLC(用于校正过曝),但大部分只支持正数。如果算出来是负数,要么取0,要么做偏移。
💡 小技巧: 我一般会在寄存器写入前,先读一遍当前值,做个对比。如果写入值和预期值差太多,说明I2C通信有问题,或者寄存器地址搞错了。这招帮我抓过好几次bug。
写入方式有两种:
- 全局写入: 所有像素共用一个BLC值。简单,但精度低。
- 逐行/逐列写入: 每行或每列单独校准。精度高,但寄存器多,配置复杂。
我建议:先用全局方式快速验证,再根据效果决定要不要细化。别一上来就搞逐行校准,万一算法有bug,调试起来能让你怀疑人生。
4.4 验证校准效果:别只看中心点
寄存器写完了,怎么知道校准有没有生效?
验证步骤:
- 看直方图: 暗场下,直方图应该集中在0附近,峰值在0-2 DN之间。如果峰值在10以上,说明校准不到位。
- 看均匀性: 用伪彩色显示暗场图像,检查有没有明显的亮斑或暗斑。如果有,说明分块校准没做好。
- 看不同增益: 把增益调到最大,再拍一张暗场。如果BLC校准正确,增益变化不应该引入额外的偏移。
⚠️ 我曾经踩过的坑: 有一次校准后,中心区域看起来完美,但边缘偏绿。查了半天,发现是分块校准的块大小设成了64×64,边缘区域太小,统计量不稳定。后来改成32×32,问题就解决了。
还有一个容易被忽略的点:验证时要用不同的曝光时间。有些传感器的暗电流随曝光时间非线性变化,短曝光校准好了,长曝光又飘了。我一般会测三个点:最短曝光、最长曝光、中间值。
4.5 核心流程总结
来,我把整个流程画成一张图,方便你对照着做:
嗯,整个流程走下来,其实核心就一句话:暗场数据要干净,统计方法要稳健,寄存器写入要准确,验证要全面。少一步,校准效果就打折扣。
💡 我的个人习惯: 每次做完BLC校准,我都会把暗场数据存一份,标上温度、增益、曝光时间。万一后续发现图像有问题,可以回头查是不是校准参数变了。这习惯帮我省了不少排查时间。
好了,这一节的内容就这些。记住,BLC校准是图像质量的基石,基础打牢了,后面的AWB、CCM才能发挥效果。别嫌麻烦,每一步都做到位,你的图像质量自然就上去了。
公众号:蓝海资料掘金营,微信deep3321