第四章:光学系统设计实战

打光方案设计、消除反光与阴影、多角度成像方案、我踩过的打光坑。

做机器视觉这么多年,我越来越觉得一个真理:打光打好了,项目就成功了一半。反过来,打光没搞定,算法再牛也白搭。今天咱们就聊聊光学系统设计里那些实打实的经验。

4.1 打光方案设计:从原理到实战

打光方案说白了就三件事:用什么光、怎么打、打多亮。我习惯先问自己三个问题:

  • 缺陷是什么类型的?划痕、脏污、凹凸?
  • 背景和缺陷的对比度够不够?
  • 现场环境光干扰大不大?

举个例子。我做过一个金属表面划痕检测的项目。一开始用环形光,结果划痕根本看不出来。为什么?因为环形光均匀照亮,划痕和背景的反射差异太小。后来换成低角度条形光,划痕立马显现。你想想看,低角度光打在金属表面,划痕处会形成明显的散射,而平整区域是镜面反射,对比度一下就拉满了。

核心原则:打光不是为了「照亮」,而是为了「制造对比」。

常用的打光方式我整理了一下:

打光方式 适用场景 典型缺陷
环形光 PCB焊点、字符检测 缺焊、偏移
条形光(低角度) 金属表面、玻璃划痕 划痕、凹凸
同轴光 高反光表面、镜面物体 脏污、指纹
背光 透明物体、尺寸测量 气泡、异物
穹顶光 曲面、球面物体 表面缺陷

我个人习惯是:先试背光和低角度条形光。这两种方式能解决80%的常见问题。如果不行,再考虑同轴光或穹顶光。

4.2 消除反光与阴影:那些年我踩过的坑

反光和阴影是打光里最让人头疼的问题。我记得有一次做手机玻璃盖板检测,环形光一打,中间亮得刺眼,边缘却黑乎乎的。算法根本没法跑。

为什么会这样?因为玻璃是镜面反射,环形光的光线直接反射进镜头,形成高光区域。而边缘部分光线被遮挡,形成阴影。

解决办法其实不复杂:

  • 用偏振片:在光源和镜头前各加一个偏振片,旋转角度可以消除大部分镜面反射。我在项目中试过,效果立竿见影。
  • 改变打光角度:把光源放低,让反射光偏离镜头。说白了就是「不让光直接进镜头」。
  • 用漫射板:在光源前加一层漫射材料,把硬光变成软光。阴影会柔和很多。

小技巧:如果反光区域不大,可以用黑色哑光胶带贴在反光位置。虽然土,但管用。

阴影的问题更隐蔽。我做过一个检测,发现产品边缘总有暗区。排查了半天,原来是光源离得太近,产品边缘把光挡住了。把光源抬高一点,阴影就消失了。嗯,有时候问题就这么简单。

4.3 多角度成像方案:一个相机不够?那就用两个

有些缺陷,一个角度根本看不全。比如圆柱体表面的划痕,正面看是直的,侧面看可能就弯了。这时候就需要多角度成像

我常用的方案有三种:

  1. 多相机多角度:用2-4个相机从不同方向拍摄。适合大尺寸产品,比如汽车零部件。
  2. 单相机旋转拍摄:产品放在旋转台上,相机固定。适合小件,比如轴承、螺丝。
  3. 棱镜分光:用棱镜把光路分成多路,一个相机同时拍多个角度。成本低,但调试麻烦。

举个例子。我做轴承滚子检测时,用了三相机方案:顶部一个拍端面,侧面两个拍柱面。每个相机配不同的打光角度。顶部用同轴光,侧面用低角度条形光。这样一次拍摄就能覆盖所有表面。

注意:多角度成像时,一定要保证每个角度的标定是独立的。不然图像拼接时会出问题。

4.4 我踩过的打光坑:避坑指南

做打光设计这些年,我踩过的坑真不少。挑几个典型的说说:

  • 坑一:光源亮度调太高。我曾经为了看清微小缺陷,把光源亮度调到最大。结果相机过曝,缺陷反而看不到了。后来才知道,亮度不是越高越好,关键是让缺陷和背景的灰度差最大。
  • 坑二:忽略环境光。在实验室里调试得好好的,一到现场就废了。为什么?因为现场有日光灯、窗户光。后来我学乖了,先做遮光罩,把环境光隔离开。
  • 坑三:光源寿命。有一次项目上线三个月,光源就衰减了30%。检测效果直线下降。从那以后,我选光源时必看寿命参数,至少要求50000小时以上。
  • 坑四:温度影响。LED光源发热严重,长时间工作会导致色温漂移。我建议加散热片或风扇,或者选恒流驱动的光源。

重要提醒:打光方案一定要在现场做最终验证。实验室环境太理想了,现场才是真战场。

最后说一句:打光设计没有标准答案。每个项目都不一样,多试、多调、多记录。我习惯每次调试都拍照存档,标注光源型号、角度、亮度参数。下次遇到类似问题,直接翻笔记,省时省力。

好了,这一章就聊到这儿。下一章咱们讲相机选型和镜头匹配,那又是另一门学问了。