
很多新手第一次做视觉项目都会盯着相机、镜头、算法看。图像不清楚先换高像素相机边缘提不出来先调阈值检测误判多先怀疑算法不够强。但现场干久了你会发现很多问题绕了一大圈最后根本不在算法也不在相机而在最前面的两个字打光。机器视觉里最扎心的一件事是工件你肉眼看得很清楚相机也确实拍到了但算法就是不稳定。今天能检明天误判上午正常下午飘了实验室跑得挺好一上产线就开始折腾人。这时候别急着骂算法。很多时候是你的图像从源头就不够“干净”。拍得到不代表拍得对很多人以为视觉检测的核心是“拍清楚”。这句话只对了一半。工业视觉真正要的不是照片好不好看而是缺陷、边缘、轮廓、字符、定位特征能不能稳定地被区分出来。说白了视觉项目要的不是一张漂亮图片而是一张方便算法判断的图片。比如检测划痕肉眼觉得划痕很明显但相机拍出来以后金属表面一反光划痕和背景灰度差不多算法就只能硬猜。再比如检测黑色橡胶件边缘环境光稍微变一下边缘灰度就跟背景粘在一起。你在软件里调半天阈值看起来像是参数问题其实是光把特征淹没了。很多检测不稳定不是算法不行而是该亮的地方没亮该暗的地方没暗。光源决定的是图像上限相机负责采集镜头负责成像算法负责判断。但光源决定了一个更前置的问题你到底把什么信息送给了相机。如果光打得好缺陷和背景天然拉开差异后面的算法会很轻松。一个简单阈值、边缘提取、模板匹配可能就能稳定跑。如果光打得差图像里到处是反光、阴影、灰度漂移和背景干扰你后面用再复杂的算法也是在给前端的不确定性擦屁股。现场有句话很实在能用光解决的问题就别急着交给算法。不是说算法不重要而是算法吃的是图像。图像质量差算法再强也会变成救火队。尤其在工业现场产品表面材质千差万别。金属会反光玻璃会透光塑料会有纹理黑色件容易吃光白色件容易过曝。你不先把光路想清楚后面就是反复调参数。实验室能跑不代表产线能跑很多项目早期为什么看起来没问题因为实验室环境太友好了。工件摆得正环境光稳定速度不快样品也少。你随便架个灯拍几张图效果还不错。于是大家觉得方案通过了。但产线不会这么配合你。现场有震动有油污有环境光变化有工件来料差异有节拍压力。中午阳光照进来一点图像变了设备旁边多开一盏灯灰度变了工件表面批次换了反光点又换位置了。工业现场最怕的不是一次失败而是偶发性失败。偶发性失败最难查。它不是每次都错而是隔一会儿错一次不是完全不能用而是有时候很好有时候离谱。这类问题如果源头是打光不稳定后面会非常痛苦。你调参数只能适配当前这批图换个时间、换批料、换个角度又要重新来。打光不是照亮而是制造差异很多新手理解打光就是“把工件照亮”。但真正做视觉打光的核心不是亮而是制造稳定的对比关系。你要检测轮廓就要让边缘和背景分开你要检测划痕就要让划痕的灰度跟正常表面拉开你要读字符就要让字符区域稳定显现你要找孔位就要让孔边界清楚不被反光吃掉。所以不同场景会用不同光源。环形光适合很多常规表面但遇到强反光材料可能不稳。条形光能强调某个方向的纹理和边缘。背光适合轮廓、孔位、外形尺寸。低角度光容易把划痕、压伤、凸起打出来。同轴光对平面反光件有时候很有用但也不是万能。这里没有“一招通吃”。真正的经验是先想清楚你要让什么特征出来再决定怎么打光。别先问灯够不够亮要先问特征有没有被稳定地放大。新手别只会调参数先问这几个问题现场做视觉遇到图像不稳定不要一上来就改算法。可以先问几个更工程化的问题。检测目标到底是什么是边缘、颜色、字符、缺陷还是位置目标特征和背景之间有没有稳定差异如果没有能不能通过角度、颜色、明暗、透射或反射方式把差异做出来环境光会不会影响图像光源亮度会不会衰减工件高度变化后成像会不会明显变还有一个很关键的问题现在这套光源方案是不是只对某一个样品好用很多项目翻车就是因为前期只拿了几个“标准样品”试光。上线后良品、次品、脏污件、偏色件、来料波动一出现方案就扛不住了。所以打光验证不能只看最好看的那张图而要看最差样品、边界样品和现场波动下还能不能稳定。视觉项目不能只问现在能不能检出来更要问换时间、换批次、换现场以后还能不能稳定检出来。真正省时间的是前面把光打对有些项目早期为了赶进度觉得光源先随便弄一下后面靠算法补。这句话听起来灵活实际很危险。光源方案没定稳后面所有参数都可能是临时的。你今天调好的阈值明天光斑变了就失效你今天训练的模型明天反光形态变了就误判。真正贵的不是一套合适的光源而是项目上线后的反复调试、误判停线和售后返工。打光不是视觉项目里的配角。很多时候它直接决定了成像上限也决定了算法有没有发挥空间。所以做机器视觉别总想着最后靠软件救回来。软件能优化判断但它很难长期弥补前端图像的不确定。一句话记住相机看到什么算法才能判断什么光源没把特征打出来后面就是硬扛。