尺寸和外观,在产线上原本是两拨人干的事。一拨拿千分尺,一拨瞪眼睛。但到了自动化这年头,机器视觉如果还是分开做,效率上不去,更重要的是基准错位。说实话,我第一次做一体检测项目时,天真地以为把两套系统拼起来就行。后来被现实教育了。
一、为什么要在一套系统里同时测尺寸和外观

先说个案例。某汽车配件厂的阀体,内孔直径公差±0.02mm,但内壁还有一条轴向拉痕。拉痕深度超过0.005mm,就会导致泄漏。如果尺寸和外观分开检,先测尺寸,再转个工位看外观,且不说时间翻倍,光是二次定位导致测出来的尺寸就不是同一个基准。拉痕不在测量界面上,但和孔径偏偏是同一道加工工序出来的。把这两个特征放在同一个坐标系里,才能把工艺问题一次性暴露出来。
另一个理由:成本。一套光源、相机、工控机能解决的事,别拆两套。况且,新检测工位占地,维护麻烦。尤其是中小厂,产线空间本来就逼仄。所以,一体检测,省空间,省维护,还省了数据同步的心。
二、光学系统是最大的坑
很多工程师一开始盯着相机分辨率,觉得像素高就是一切。错。尺寸测量讲究的是“足够分辨”,但外观检测要的是“对比度够”。这俩需求往往打架。
尺寸测量,通常需要远心镜头。为什么?因为普通镜头有透视误差,工作距离变化一点点,放大倍率就飘。远心镜头能保证在景深内物体左右移动、前后移动,图像尺寸恒定。这一点在测量里太关键了。我算过一笔账:用普通500万像素镜头,视场50mm,工作距离变化0.3mm,像素位移可能有0.02mm,公差是±0.05mm,稳定性的余量只剩一半,能不慌吗?换远心镜头,像素位移可以忽略,省心。
但远心镜头也有毛病。景深窄。你要是测一个有台阶的冲压件,顶层清晰了底层发虚,尺寸还能勉强,外观缺陷就漏了。这时候得想别的招:要么加景深扩展模块,要么改用多相机在不同高度拍摄。有钱好办,没钱就得靠机构设计把工件压在同一个焦平面上。
再说光源。外观检测打光有大学问。划痕要低角度光,让它产生明暗;尺寸测量要均匀明场,边缘锐利。两边都用同一种光,肯定有一边瞎。所以我在方案里会做分时打光:同一相机,先开环行光,测外形;再开低角度条形光,拍表面纹理。光源控制器用独立的触发信号。对,你没听错,用多路光源,分时触发。这个细节解决了不少问题。

三、标定和温度补偿,别想着一次到位
有了硬件,标定是绕不过的。尺寸系统的标定要用玻璃标定板,最好是带认证的,膨胀系数小。黑色圆点阵列或棋盘格都行。我倾向于圆点阵列,因为圆点中心定位精度高,抗污能力好。标定时要采多幅图像,计算畸变系数。这里有个坑:标定板摆放位置必须和实际工件一样,不要斜着放。有人为了图方便,随手一放,标定出来的镜头畸变参数全是歪的,测出来的尺寸带有系统性误差,谁看谁头大。
但标定一次就够了吗?环境温度一变,机架和镜头都会热胀冷缩。这个问题被很多人忽略。举个例子:铝合金机架,温度变化5°C,100mm长的结构件伸缩约0.012mm,看起来不大,但测±0.05mm公差就占了20%。所以,好点的设备会在关键结构处贴温度传感器,软件上位做补偿。补偿公式是:ΔL = L0 * α * (T – T0)。简单,但严谨。
至于外观检测,标定相对简单,主要做灰度一致性校正,以及像素尺寸比不需要精确。注意,如果外观和尺寸用同一个相机,一定要在同一个光电触发下获取图像,否则位置偏移,你又得对齐,多费一道功夫。
四、算法:尺寸是尺,外观是看,别混着来

尺寸测量,我用过经典边缘检测加直线拟合。选Canny算子,但梯度阈值要调。不过,现场环境灰尘多,图像噪声大,我一般先用高斯滤波或中值滤波。这里注意,中值滤波容易吃掉细划痕,所以外观检测的图别用强中值滤波。尺寸用的图,可以放宽。
外观缺陷检测,传统方法是做形态学顶帽变换,能突出暗划痕。但如果是纹理背景复杂的,就得用频域带通滤波,或者训练一个CNN。说句实话,深度学习好不好用?要看样本量。工厂里良品率99%的时候,缺陷样本太少了,堆网络容易过拟合。我更愿意用传统算法抓强特征,再用一个小分类器做筛选。比如,先用梯度投影找出疑似划痕区域,再提取长度、宽度、方向这些特征,和尺寸公差做联合判断——划痕如果落在密封面,且深度超差,才判NG。否则只报警。
这里的关键是:尺寸与外观的融合判断。不同特征不是孤立的。比如冲压件折弯处毛刺高度,尺寸测量只能测投影,外观检测能从侧向光看出毛刺翻边。所以,融合的是“特征级”,不是最后简单and/or。你需要设计一个打分函数:外观缺陷若在公差带边缘,就加分,否则忽略。这有点像人体检,血压和心率分开看都正常,但联合起来可能是问题。
五、节拍与协同,现场比实验室残酷
实验室里一切都是理想状态,到了产线,节拍是硬指标。假设CT要求3秒一个工件。你说采集图像100ms,处理200ms,好像300ms就完了。但你别忘了触发等待、机械定位稳定时间、PLC通信时间,还有气压波动。实际预留要到0.5秒。所以选相机和工控机时,别只看分辨率,还要看帧率和接口带宽。GigE相机在500万像素下,帧率20fps,传输带宽也就满了。如果用多相机同步采集,建议用硬触发方式,并做图像拼接。
这里有个血泪教训:以前用两条独立的GigE网线,一张采集卡控制两台相机,结果采集卡处理不过来,图像丢帧。后来换成了双端口网卡,配合PTP时间同步,才稳定。所以,底层通信一定要做可靠。
另外,NG信号时序。如果判定NG,必须在工件离开吹料口前发出剔除信号。PLC的扫描周期可能是10ms,再算上气缸动作时间,你得留出充分余量。所以,计算处理时间时,最坏情况而不是平均值。

最后的话

机器视觉尺寸外观一体检测,不是把两个子系统的报告拼在一起。它需要从光学、标定、算法、时序方方面面去拉通。每一次选型都要问,这对尺寸影响多大?对表面缺陷影响多大?两者冲突时,用分时或者多相机去解耦。别怕多花点时间调试,现场的数据反馈比任何仿真都真实。这些坑,能绕就绕吧。