4、光学实验与验证:打光实验方法、图像质量评估
光学实验,说白了就是给被测物体「找光」。
我做了这么多年视觉项目,最深的体会就是:光源选对了,项目就成功了一半。很多算法搞不定的问题,换个打光方式就迎刃而解。反过来,光源没选好,再牛的算法也白搭。
4.1 打光实验方法
打光实验不是瞎试。我习惯按下面这套流程走,效率高很多。
4.1.1 光源类型选择
先搞清楚你面对的是什么缺陷。不同缺陷,吃不同的光。
| 缺陷类型 | 推荐光源 | 我踩过的坑 |
|---|---|---|
| 划痕、凹陷 | 低角度环形光 | 角度调太高,划痕直接「隐身」 |
| 脏污、异物 | 高角度环形光 | 用漫射光,脏污和背景混在一起 |
| 字符、二维码 | 同轴光 | 反光太强,字符被「吃掉」 |
| 透明物体 | 背光 | 正面打光,透明物体直接「消失」 |
| 金属反光面 | 漫射光/穹顶光 | 直射光会产生严重反光 |
举个例子。我之前做手机中框划痕检测,一开始用高角度环形光,划痕根本看不出来。后来换成低角度环形光,划痕立马「现形」。为什么?低角度光让划痕边缘产生强烈散射,而平面区域光直接反射走了,对比度一下就拉起来了。
4.1.2 角度与距离实验
光源角度和距离,是打光实验的核心变量。
我一般会做「角度扫描」实验:
- 固定光源亮度,从10°开始,每次增加5°,拍到60°
- 每拍一张,看一眼图像质量
- 找到对比度最高的那个角度
距离也是同理。光源离物体太近,光斑不均匀;太远,光强不够。我习惯从5cm开始,每次增加1cm,拍到15cm。
4.1.3 多光源组合实验
有些复杂缺陷,单一光源搞不定。这时候就得组合打光。
我记得有个项目检测PCB焊点虚焊。单用环形光,焊点轮廓看不清。后来我加了同轴光,焊点表面的反光特征出来了,再配合环形光打轮廓,两个光源一叠加,虚焊和良品焊点的差异非常明显。
组合打光要注意:
- 两个光源不能互相干扰
- 亮度要匹配,别一个太亮一个太暗
- 最好用分时控制,或者用偏振片隔离
4.2 图像质量评估
光打好了,图像好不好,得有量化指标。不能光靠「我觉得还行」。
4.2.1 对比度
对比度,说白了就是目标和背景的「差距」有多大。
我常用的公式:
对比度 = |(目标灰度均值 - 背景灰度均值)| / (目标灰度均值 + 背景灰度均值)
这个值在0到1之间。一般要求大于0.3。如果低于0.2,算法就很难稳定分割了。
举个例子。检测黑色塑料上的白色字符,目标灰度均值200,背景灰度均值50:
对比度 = |200 - 50| / (200 + 50) = 150 / 250 = 0.6
0.6,非常好。如果目标灰度150,背景灰度120:
对比度 = |150 - 120| / (150 + 120) = 30 / 270 = 0.11
0.11,太低了。这时候就得调整打光方式。
4.2.2 均匀性
均匀性,就是图像不同区域的亮度是否一致。
我见过最坑的情况:一个项目用环形光,中心亮、边缘暗。算法在中心区域跑得好好的,一到边缘就误检。折腾了两天才发现是光源均匀性问题。
评估方法:
- 拍一张纯白参考板
- 在图像上取9个点(左上、中上、右上、左中、中心、右中、左下、中下、右下)
- 计算这9个点的灰度均值
- 均匀性 = 最小值 / 最大值
一般要求均匀性 > 0.8。低于0.7就得换光源或者调整距离了。
4.2.3 信噪比(SNR)
信噪比,衡量的是「有用信号」和「噪声」的比例。
我习惯这样算:
SNR = 20 * log10(信号均值 / 噪声标准差)
信号均值:取目标区域的灰度均值。
噪声标准差:取背景区域的灰度标准差。
举个例子。目标区域灰度均值180,背景区域灰度标准差5:
SNR = 20 * log10(180 / 5) = 20 * log10(36) ≈ 20 * 1.556 = 31.12 dB
31 dB,不错。一般要求SNR > 20 dB。低于15 dB,图像噪声会严重影响检测精度。
噪声来源有哪些?
- 传感器热噪声(曝光时间越长越明显)
- 光源频闪(用LED光源时常见)
- 环境光干扰(没做遮光处理)
4.3 最佳成像参数确定
打光实验做完了,图像质量也评估了,最后一步:确定最佳成像参数。
我一般会做一个「参数矩阵」实验:
| 参数 | 取值范围 | 步长 | 我的建议 |
|---|---|---|---|
| 光源亮度 | 0 - 255 | 10 | 先定亮度,再调其他 |
| 曝光时间 | 100 - 10000 μs | 500 μs | 别超过运动模糊的极限 |
| 光圈 | F2.8 - F16 | 1档 | 小光圈景深大,但光强弱 |
| 增益 | 0 - 24 dB | 3 dB | 尽量低,增益=噪声 |
具体步骤:
- 固定曝光时间和光圈,调光源亮度,直到目标区域灰度在200左右
- 固定亮度和光圈,调曝光时间,确保运动物体不模糊
- 固定亮度和曝光时间,调光圈,找到对比度和景深的平衡点
- 最后调增益,能不加就不加
嗯,这里要注意:增益是最后的手段。我见过有人一上来就加增益,结果图像噪声大得离谱。其实调调光源亮度或者曝光时间,效果更好。
4.4 知识体系总览
下面这张图,是我自己总结的光学实验与验证的完整流程。你可以把它当成一个检查清单,做项目时对着走一遍,基本不会漏。
这张图的核心逻辑:先做打光实验,再评估图像质量,最后确定最佳参数。三个步骤环环相扣,缺一不可。
我见过不少工程师,打光实验做得马马虎虎,图像质量也不评估,直接调参数。结果项目上线后问题不断,返工成本高得吓人。所以,别嫌麻烦,每一步都走扎实了,后面才能省心。
公众号:蓝海资料掘金营,微信deep3321