4. RAW图采集与校验:Bayer Pattern配置错误导致偏色,RAW图黑电平校准,坏点校正初始化
RAW图采集,说白了就是ISP流水线的第一道关卡。这一步要是出了岔子,后面再怎么调参数都是白搭。我见过不少团队,花了几周调3A、调颜色,最后发现偏色问题根源竟然是Bayer Pattern配错了——你说冤不冤?
这一章,咱们就把RAW图采集和校验的三大核心问题讲透:Bayer Pattern配置、黑电平校准、坏点校正初始化。每个点我都会结合实战中的坑来讲。
4.1 Bayer Pattern配置:配错了整个画面都是花的
先问个问题:你拿到一颗sensor,怎么知道它的Bayer Pattern是RGGB还是BGGR?
很多人觉得这很简单,看datasheet就行了。但实际项目中,sensor的Bayer输出格式可能和ISP期望的不一致。我遇到过一款OV的sensor,datasheet上写的是RGGB,但实际输出是GBRG。结果呢?整个画面偏紫红色,怎么调白平衡都调不回来。
核心要点:Bayer Pattern必须与ISP硬件配置严格一致。常见的四种Pattern:RGGB、BGGR、GRBG、GBRG。高通平台通过cam_sensor_init中的position字段配置。
怎么确认当前Pattern对不对?我的习惯是拍一张纯灰卡或者均匀光照的白墙,然后看RAW图的R、G、B通道直方图。如果Pattern正确,G通道应该有两个峰(因为Bayer中G像素占一半),R和B各一个峰。如果Pattern错了,直方图会乱掉。
实战技巧:在调试阶段,我会在驱动层加一个Pattern翻转的开关。这样不用重新编译整个镜像,直接通过adb命令切换Pattern,快速定位问题。
4.2 RAW图黑电平校准:暗部细节的命门
黑电平校准,英文叫Black Level Correction,简称BLC。它的作用是把sensor在无光照情况下的输出值归零。你想想看,如果黑电平没校准好,暗部区域会偏色,或者出现灰蒙蒙的一片。
高通平台的黑电平校准通常在IFE模块中完成。校准参数包括:
- 黑电平值:每个通道的暗电流偏移量,通常从sensor的OB(Optical Black)区域读取
- 黑电平锁定:是否动态更新黑电平值
我记得有一次调试一个夜视项目,发现暗部区域R通道明显偏红。查了半天,发现是黑电平校准的R通道偏移量设成了0,而实际sensor的R通道黑电平有12个LSB的偏移。校准之后,暗部颜色就正常了。
注意:黑电平校准必须在坏点校正之前做。因为坏点校正会改变像素值,如果先做坏点校正再做BLC,黑电平的偏移量会被坏点校正算法干扰,导致校准不准确。
黑电平校准的典型流程如下:
- 从sensor的OB区域读取黑电平值(通常取多行平均)
- 将黑电平值写入ISP的BLC寄存器
- 使能BLC模块
- 验证:拍一张全黑图,检查R、G、B通道均值是否接近0
下面这张图展示了黑电平校准在ISP流水线中的位置:
4.3 坏点校正初始化:别让坏点毁了你的图像
坏点,就是sensor上那些永远输出固定值或者异常值的像素。每个sensor都有坏点,只是多少的问题。坏点校正的目的就是把这些异常像素替换成周围像素的插值。
高通平台的坏点校正分为两种:
| 类型 | 说明 | 适用场景 |
|---|---|---|
| 静态坏点校正 | 基于sensor出厂时的坏点表,在驱动初始化时加载 | 固定坏点,数量少 |
| 动态坏点校正 | 实时检测并校正坏点,基于像素值与邻域的差异 | 热像素、随机坏点 |
初始化坏点校正时,有几个关键参数需要配置:
- 坏点阈值:像素值与邻域均值的差异超过多少被认为是坏点。阈值设得太低,会把正常像素误判为坏点;设得太高,坏点漏检。
- 校正窗口大小:通常用3x3或5x5窗口。窗口越大,校正越平滑,但细节损失也越大。
- 静态坏点表:从sensor的OTP或EEPROM中读取的坏点坐标列表。
我的经验:动态坏点校正的阈值建议先设一个保守值(比如50个LSB),然后通过抓取RAW图分析坏点分布来微调。我曾经在一个项目中,把阈值从默认的30调到80,才解决了暗光下画面出现“雪花点”的问题。
4.4 实战:Bayer Pattern配置错误的排查流程
如果你发现画面偏色,而且白平衡怎么调都调不回来,很可能是Bayer Pattern配错了。下面是我常用的排查流程:
- 抓一张RAW图:用高通工具抓取sensor输出的原始RAW数据
- 查看RAW头信息:确认sensor输出的Bayer格式(RGGB/BGGR/GRBG/GBRG)
- 检查ISP配置:对比驱动中配置的Pattern与实际输出是否一致
- 切换Pattern测试:依次尝试四种Pattern,看哪种能恢复正确颜色
- 验证:拍灰卡,检查R/G/B通道直方图是否正常
我曾经踩过的坑:有一次调试双摄项目,主摄和副摄的sensor型号不同,Bayer Pattern也不同。我忘了在切换摄像头时更新Pattern配置,结果副摄的画面一直是偏色的。这个问题花了我两天才定位到。所以,多摄像头项目一定要在切换逻辑中检查Pattern配置。
4.5 本章小结
RAW图采集与校验是ISP调试的基础。Bayer Pattern配错会导致偏色,黑电平校准不准会影响暗部细节,坏点校正初始化不当会引入噪声。这三个问题在项目初期就要搞定,不然后面返工的成本很高。
嗯,这一章的内容就到这里。记住:拿到新sensor的第一件事,就是验证Bayer Pattern和黑电平。这两步走稳了,后面的调试才能顺利。