3. 镜头与光源工程:从理论到实战的视觉基石
做工业视觉这么多年,我越来越觉得一个道理:算法决定了上限,但光学系统决定了你能不能摸到这个上限。镜头和光源选错了,后面调再好的模型也是白搭。今天咱们就把这块硬骨头啃下来。
3.1 镜头焦距与视野计算
先说焦距。说白了,焦距决定了你的相机能看多宽、看多远。公式很简单:
焦距 f = (工作距离 WD × 传感器尺寸) / 视野 FOV
举个例子。我做过一个PCB板检测项目,板子长50mm,相机传感器是1/1.8英寸(对角线约8.9mm,宽7.2mm)。工作距离定在200mm。那么:
f = (200 × 7.2) / 50 ≈ 28.8mm
所以我选了25mm或35mm的镜头,最后用35mm的,因为视野稍微小一点,但分辨率更高。
这里有个坑——传感器尺寸。很多人只看像素数,不看传感器大小。同样1200万像素,1/1.7英寸和1/2.3英寸的传感器,配同样焦距的镜头,视野能差出30%。
| 传感器尺寸 | 宽 (mm) | 高 (mm) | 对角线 (mm) |
|---|---|---|---|
| 1/1.8" | 7.2 | 5.4 | 8.9 |
| 1/2.3" | 6.2 | 4.6 | 7.7 |
| 2/3" | 8.8 | 6.6 | 11.0 |
| 1" | 12.8 | 9.6 | 16.0 |
3.2 光圈与景深
光圈控制进光量,也控制景深。景深就是图像中清晰的范围。光圈越大(F值越小),景深越浅。
我记得有个项目检测手机中框的划痕。中框有高低落差,大概2mm。一开始用F2.8的光圈,结果边缘清晰了,中间就糊了。后来收到F8,景深够了,但曝光时间得加长,又引入了运动模糊。
最后怎么解决的?加了两个条形光,提高亮度,然后光圈收到F5.6。景深和亮度都平衡了。
- 检测平面物体:用大光圈(F2.8-F4),进光多,快门快
- 检测有高度差的物体:用小光圈(F8-F11),景深够用
- 微距检测:光圈收到F8以上,不然景深太浅
你想想看,景深公式其实挺复杂的,但实战中记住一句话就行:每收一档光圈,景深大约翻一倍。F4到F5.6是一档,景深变两倍;F5.6到F8又是一档,再翻一倍。
3.3 光源类型:选对光,事半功倍
光源这块,我踩过的坑比镜头还多。工业视觉常用的光源就几种,但每种都有它的脾气。
3.3.1 环形光
环形光是最常见的。它从四周打光,中间留空给镜头。适合检测字符、划痕、边缘。
我曾经做过一个项目,检测金属表面的二维码。用环形光打上去,反光太强,二维码根本读不出来。后来换成低角度环形光,光线几乎平行于表面,反光被压下去了,二维码清晰可见。
3.3.2 背光
背光就是把光源放在被测物体的背面。说白了,就是拍剪影。适合检测外形尺寸、孔位、边缘轮廓。
我做过一个轴承检测项目,要测外径和内径。用前向光打,边缘有反光,测量误差很大。换成背光后,边缘锐利得像刀切一样,测量精度从±0.1mm提升到±0.02mm。
3.3.3 同轴光
同轴光通过半透半反镜,让光线沿着镜头的光轴方向照射。说白了,就是光从镜头里打出去。适合检测高反光表面,比如镜面、晶圆、玻璃。
我记得有个项目检测手机玻璃盖板的划痕。用环形光打,反光太强,划痕被淹没了。用同轴光,光线垂直照射,划痕的散射光被镜头捕捉,效果非常好。
| 光源类型 | 适用场景 | 不适用场景 |
|---|---|---|
| 环形光 | 字符、划痕、边缘 | 高反光表面 |
| 背光 | 外形尺寸、孔位 | 透明物体 |
| 同轴光 | 镜面、晶圆、玻璃 | 粗糙表面 |
| 条形光 | 大面积、均匀照明 | 小物体细节 |
| 点光源 | 高亮度、小区域 | 大面积均匀性差 |
3.4 打光方案设计原则
打光方案没有标准答案,但有原则可循。我总结了几条:
- 突出目标特征:你要检测什么,就让什么最亮。检测划痕,让划痕散射光;检测字符,让字符和背景有最大对比度。
- 抑制背景干扰:背景纹理、反光、污渍,能压就压。压不住就换角度、换光源类型。
- 保证均匀性:视野边缘和中心亮度差不要超过20%。不均匀的话,后面做图像预处理会很痛苦。
- 考虑安装空间:现场空间有限,光源尺寸、工作距离都要提前确认。我见过太多方案在实验室跑得好,到现场装不下的情况。
- 先用手电筒或激光笔,从各个角度照,观察目标特征变化
- 确定大致角度和光源类型
- 用实际光源试打,调整距离和角度
- 拍图,看直方图,调整亮度和均匀性
- 跑一遍检测算法,验证效果
嗯,这里要注意一点:不要迷信高亮度。亮度太高,传感器饱和了,细节全没了。我见过有人把光源调到最亮,结果图像一片白,还以为是相机坏了。
最后,我画了一张图,把镜头和光源的核心知识点串起来,方便你对照理解。
这张图把镜头参数、光源类型、打光原则串在了一起。你调试的时候,可以对照着看,缺什么补什么。