1. 课程导入与打光问题界定
在机器视觉项目中,相机、镜头、光源三者共同决定了一幅图像的质量上限。很多初学者会把注意力集中在相机分辨率和算法上,但实际产线上大量“算法调不动”的案例,根源往往在成像端:图像本身就没有把目标特征表达清楚,后续无论换多强的算法都只是补救。打光(照明)正是成像端最可控、性价比最高的一个环节。本节先建立两个基本认识:视觉打光到底要达成什么目标,以及常见的打光缺陷长什么样、由什么引起。
一、视觉打光的目标:让特征“可分辨”
视觉打光不是“把物体照亮”,而是主动构造目标特征与背景之间的差异。人眼觉得“看得清”的图像,对算法未必友好;算法需要的是稳定的灰度差、清晰的边缘、可重复的阈值分割结果。因此打光目标可以归纳为三条可检验的标准:
- 对比度足够:目标区域与背景(或目标内部不同材质、不同高度区域)之间形成明显的灰度差,使阈值分割、边缘提取有稳定的工作区间。
- 特征稳定:同一工件在批次内、在工位间、在长时间运行中,成像结果波动小,不因环境光、工件位置微小偏移而剧烈变化。
- 干扰被抑制:反光、阴影、背景纹理等不携带检测信息的成分被压到最低,避免算法把干扰当成缺陷,或把缺陷淹没在干扰里。
这三条标准对应一个很实用的判断方法:拿到一幅图,先问“我要检测的特征在哪里、它和周围差多少灰度”,再问“这个差异在连续采图 100 张后是否稳定”,最后问“图里有没有比特征更抢眼的干扰”。三个问题都能通过,打光方案才算基本成立。
二、常见缺陷类型及其成因
实际调试中遇到的打光问题,绝大多数可以归入四类。理解成因比记住名称更重要,因为成因直接指向调整方向。
对比度不足是最常见的一类。典型表现是目标与背景灰度接近,直方图双峰重叠,阈值怎么调都会“多检”或“漏检”。成因可能是光源亮度不够、光源角度使目标与背景反射率差异未被放大、或者光源光谱与材料特性不匹配。例如检测黑色塑料件上的浅色字符,若用正面白光,字符与底材的灰度差可能只有 20~30 个灰度级;改用低角度暗场照明后,字符边缘的散射光被突出,灰度差可拉开到 80 以上(此处为教学示例的合理量级,实际需现场验证)。
反光多出现在金属、玻璃、抛光表面或带油膜的工件上。镜面反射把光源或环境的像直接送入镜头,形成过曝亮斑,亮斑覆盖区域的特征信息完全丢失。反光的本质是光源、工件表面法线、相机三者满足镜面反射几何关系,因此解决思路通常是改变光源位置(避开镜面反射角)、改用漫射光源(扩大发光面积、降低方向性)、或使用偏振片抑制特定偏振方向的反射光。
阴影由方向性强的光源在工件凸起、凹槽、边缘处投射形成。阴影本身有时是“有用的”——暗场照明正是利用阴影突出划痕和凹凸;但当阴影落在检测区域内部、且随工件位置抖动而移动时,它就成了不稳定因素。判断标准是:阴影是否携带检测信息。若携带,保留并稳定它;若不携带,用漫射光、环形光或多方向组合光削弱它。
不均匀表现为图像中心亮、边缘暗,或出现明暗条纹。成因包括光源本身发光面不均、光源距离工件过近导致照度按距离平方衰减、镜头暗角、以及工件表面曲率造成的入射角变化。工程上常用“平场校正”做软件补偿,但更根本的做法是拉开工作距离、选用大面积均匀光源、或增加漫射板。
三、打光在项目中的位置与价值
把打光放回项目链条中看,它的位置非常明确:位于“工件与工位”之后、“相机与镜头”之前,是物理世界进入图像世界的第一道加工工序。相机和镜头决定“能采到多细”,打光决定“采到的图像里特征有多突出”。这条链路上,打光是最靠前、也最容易被低估的一环。
它的价值体现在三个层面。第一是降低算法复杂度:一幅对比度良好的图,可能只需要固定阈值加形态学就能稳定分割;而一幅靠算法硬救的图,往往要引入动态阈值、多模板匹配甚至深度学习,开发周期和误判风险同步上升。第二是提升节拍与稳定性:好的打光让曝光时间可以缩短、图像信噪比提高,连续采图的灰度波动小,产线长期运行的误报率随之下降。第三是降低综合成本:一套合适的光源与控制器,成本通常远低于为补偿成像缺陷而增加的相机规格、算力或人工复判工位。
四、从问题到方向的初步界定
本节不展开具体光源选型,但需要建立一个“看到缺陷就能想到方向”的初步映射。对比度不足,优先考虑亮度、入射角度和光谱匹配;反光,优先考虑避开镜面反射几何关系、增大发光面积或加偏振;阴影,先判断它是否携带信息,再决定保留还是削弱;不均匀,优先考虑工作距离、光源均匀性和平场校正。这个映射不是万能公式,但它能把“图像不好看”这种模糊感受,转化为可操作的排查起点。
需要强调的是,四类缺陷经常同时出现,且互相牵制。例如为了压反光而加大漫射,可能同时降低对比度;为了提对比度而增强方向性,又可能引入阴影。因此实际调试是一个在多个目标间找平衡的过程,而不是追求某一项指标最优。后续章节将围绕光源类型、角度、颜色、控制器与具体检测任务,逐一展开这些平衡怎么落地。