第四章:光学系统设计实战
打光方案设计、消除反光与阴影、多角度成像方案、我踩过的打光坑。
做机器视觉这么多年,我越来越觉得一个真理:打光打好了,项目就成功了一半。反过来,打光没搞定,算法再牛也白搭。今天咱们就聊聊光学系统设计里那些实打实的经验。
4.1 打光方案设计:从原理到实战
打光方案说白了就三件事:用什么光、怎么打、打多亮。我习惯先问自己三个问题:
- 缺陷是什么类型的?划痕、脏污、凹凸?
- 背景和缺陷的对比度够不够?
- 现场环境光干扰大不大?
举个例子。我做过一个金属表面划痕检测的项目。一开始用环形光,结果划痕根本看不出来。为什么?因为环形光均匀照亮,划痕和背景的反射差异太小。后来换成低角度条形光,划痕立马显现。你想想看,低角度光打在金属表面,划痕处会形成明显的散射,而平整区域是镜面反射,对比度一下就拉满了。
核心原则:打光不是为了「照亮」,而是为了「制造对比」。
常用的打光方式我整理了一下:
| 打光方式 | 适用场景 | 典型缺陷 |
|---|---|---|
| 环形光 | PCB焊点、字符检测 | 缺焊、偏移 |
| 条形光(低角度) | 金属表面、玻璃划痕 | 划痕、凹凸 |
| 同轴光 | 高反光表面、镜面物体 | 脏污、指纹 |
| 背光 | 透明物体、尺寸测量 | 气泡、异物 |
| 穹顶光 | 曲面、球面物体 | 表面缺陷 |
我个人习惯是:先试背光和低角度条形光。这两种方式能解决80%的常见问题。如果不行,再考虑同轴光或穹顶光。
4.2 消除反光与阴影:那些年我踩过的坑
反光和阴影是打光里最让人头疼的问题。我记得有一次做手机玻璃盖板检测,环形光一打,中间亮得刺眼,边缘却黑乎乎的。算法根本没法跑。
为什么会这样?因为玻璃是镜面反射,环形光的光线直接反射进镜头,形成高光区域。而边缘部分光线被遮挡,形成阴影。
解决办法其实不复杂:
- 用偏振片:在光源和镜头前各加一个偏振片,旋转角度可以消除大部分镜面反射。我在项目中试过,效果立竿见影。
- 改变打光角度:把光源放低,让反射光偏离镜头。说白了就是「不让光直接进镜头」。
- 用漫射板:在光源前加一层漫射材料,把硬光变成软光。阴影会柔和很多。
小技巧:如果反光区域不大,可以用黑色哑光胶带贴在反光位置。虽然土,但管用。
阴影的问题更隐蔽。我做过一个检测,发现产品边缘总有暗区。排查了半天,原来是光源离得太近,产品边缘把光挡住了。把光源抬高一点,阴影就消失了。嗯,有时候问题就这么简单。
4.3 多角度成像方案:一个相机不够?那就用两个
有些缺陷,一个角度根本看不全。比如圆柱体表面的划痕,正面看是直的,侧面看可能就弯了。这时候就需要多角度成像。
我常用的方案有三种:
- 多相机多角度:用2-4个相机从不同方向拍摄。适合大尺寸产品,比如汽车零部件。
- 单相机旋转拍摄:产品放在旋转台上,相机固定。适合小件,比如轴承、螺丝。
- 棱镜分光:用棱镜把光路分成多路,一个相机同时拍多个角度。成本低,但调试麻烦。
举个例子。我做轴承滚子检测时,用了三相机方案:顶部一个拍端面,侧面两个拍柱面。每个相机配不同的打光角度。顶部用同轴光,侧面用低角度条形光。这样一次拍摄就能覆盖所有表面。
注意:多角度成像时,一定要保证每个角度的标定是独立的。不然图像拼接时会出问题。
4.4 我踩过的打光坑:避坑指南
做打光设计这些年,我踩过的坑真不少。挑几个典型的说说:
- 坑一:光源亮度调太高。我曾经为了看清微小缺陷,把光源亮度调到最大。结果相机过曝,缺陷反而看不到了。后来才知道,亮度不是越高越好,关键是让缺陷和背景的灰度差最大。
- 坑二:忽略环境光。在实验室里调试得好好的,一到现场就废了。为什么?因为现场有日光灯、窗户光。后来我学乖了,先做遮光罩,把环境光隔离开。
- 坑三:光源寿命。有一次项目上线三个月,光源就衰减了30%。检测效果直线下降。从那以后,我选光源时必看寿命参数,至少要求50000小时以上。
- 坑四:温度影响。LED光源发热严重,长时间工作会导致色温漂移。我建议加散热片或风扇,或者选恒流驱动的光源。
重要提醒:打光方案一定要在现场做最终验证。实验室环境太理想了,现场才是真战场。
最后说一句:打光设计没有标准答案。每个项目都不一样,多试、多调、多记录。我习惯每次调试都拍照存档,标注光源型号、角度、亮度参数。下次遇到类似问题,直接翻笔记,省时省力。
好了,这一章就聊到这儿。下一章咱们讲相机选型和镜头匹配,那又是另一门学问了。