我最近在做一个低成本工业视觉检测的小项目,针对的是圆形工件的直径、圆度、圆心定位。说起来原理并不复杂,但做出来的效果让我有点意外——只用一台 200 块钱的 USB 摄像头(没有远心镜头,没有特殊光源),就能在大约 15ms 内稳定地重复测量,直径标准差低于 2 微米,圆心位置极差 0.3 像素(约 0.01mm)。
更关键的是:它基本不受零件表面的灰尘、划痕、油污干扰,也不依赖任何深度学习训练,换型号只需按一个“标定”按钮。
因为这个方案我打算后续产品化,所以算法细节暂时不能公开。但我想聊聊我是怎么“绕开”传统方法的坑,以及这套思路目前能解决哪些工业痛点。希望能给正在做类似检测的朋友一些启发,也欢迎客户朋友提需求。
一、传统方法的两座大山
做圆检测的人都知道,最常见的路子无非两种:
1.最小二乘拟合圆优点是快,但极度怕“脏数据”——零件上哪怕有一个灰尘或划痕,圆心就能偏好几个像素。产线上不可能每个零件都干干净净。
2.深度学习 / 语义分割需要大量标注样本,换一种型号(比如不同的纽扣、轴承)就要重新训练。而且模型的可解释性差,丢了数据你也不知道为什么。
这两种方法在实际产线落地时,都会被光照变化、表面反光、油污灰尘折腾得很难受。
我一直在想:有没有一种方法,既不需要训练,又能自动识别哪些边缘点是“可靠”的,哪些是“干扰”?
二、一个“笨”但有效的思路
我最后用的方法,其实是从统计学习里借来的一个老概念:M 估计(M-estimator)。
简单说,我不再假设所有边缘点都服从高斯分布,而是假设大部分“好点”集中在真圆附近,少数“坏点”(灰尘、划痕、反光假边缘)则会偏离很远。于是我设计了一个权重函数——偏离越大的点,权重越低。
这样,拟合圆的时候,算法会自动“无视”那些可疑的离群点,把注意力放在真正的圆柱轮廓上。
听起来不复杂吧?真正花功夫的地方在于:
•如何自适应地确定权重阈值(不需要人工调参)。
•如何处理因为零件本身不够圆(比如 0.08mm 的真实圆度)导致的大残差,以免误杀。
•如何把权重信息可视化,让操作员一眼看出“哪些区域被判定为脏污”。
这些细节我摸索了好几个月,最后实现的版本,在 30 次重复测量中,直径标准差稳定在 0.002mm 以内。下面是实际测的一组数据(零件是一个直径约 5mm 的硬币大小圆片):
指标 数值
直径均值 4.9595 mm
直径极差 0.0073 mm(7.3 μm)
直径标准差 0.00198 mm(2 μm)
圆心 X 极差 0.30 pixel
圆心 Y 极差 0.34 pixel
圆度(残差峰谷) 0.0787 mm
圆度极差 0.0017 mm
(注:圆度值较大是因为这个零件本身就不太圆,不是我测歪了。)
这个重复性,已经能跟一些入门级的工业智能相机掰手腕了,而我的硬件成本还不到它们的十分之一。
三、为什么客户可能会喜欢这个方案?
我拿这个原型去跟几个小工厂的质检主管聊过,他们最感兴趣的点是:
- 极低成本,不挑相机
你们厂里随便拉一个 USB 摄像头,甚至笔记本前置摄像头,都能跑出类似的效果。不需要另外买昂贵的远心镜头或工业相机。 - 换产线零训练
换一个型号的工件,只需要把工件放在视野内,点一下“标定”按钮,系统自动学习当前尺寸。全程不需要收集几百张缺陷图,也不需要 GPU。 - 不怕油污和划痕
产线上零件磕碰、沾油、有轻微划痕是常态。这套方案会把那些异常边缘自动降权处理,不会因为一颗灰尘就误判为尺寸超差。我专门做过破坏性实验:在零件上人为画一道划痕,传统最小二乘的圆心会偏 5 个像素以上,而我的方法只偏了 0.1 像素。 - 结果可解释
软件会输出一张“权重图”——绿色点是被采纳的可靠边缘,红色点是被排除的干扰点。质检员一看就知道系统为什么判定合格或不合格,而不是一个黑盒给出 OK/NG。
四、研究者可能会感兴趣的点
如果你的工作不涉及工程落地,而是偏算法研究,那么下面几点可能值得留意:
•鲁棒核函数的选择: Cauchy 核 vs. Huber 核 vs. Tukey 核,在圆形拟合问题上的表现差异。
•收敛性与初值:代数拟合结果作为迭代初值的必要性。
•自适应带宽:如何根据残差分布自动调整 Cauchy 核的尺度参数。
•置信椭圆:从 Hessian 矩阵逆估计圆心协方差,输出不确定度。
我在这几个方向上都做了一些实验,得到了不少有意思的结论。如果大家感兴趣,我可以后续单独开一篇聊聊“鲁棒圆拟合的调参玄学与科学”。
五、现在还缺什么?
当然,这个方案距离真正的工业产品还有几步路要走:
1.绝对精度标定:目前我只做了重复性测试,还没用标准环规校准绝对直径。
2.畸变校正:普通镜头的桶形畸变会影响边缘定位,需要加入棋盘格标定。
3.高光处理:高反光金属零件仍然容易出问题,可能需要加偏振片或改变光源角度。
4.自动化集成:需要提供 Modbus 或 TCP 接口,把结果发给 PLC 或机械臂。
这些我正在逐步完善。如果有甲方愿意一起合作测试,欢迎私信我。
六、结语
我始终相信,工业视觉的未来不应该只有昂贵的传感器和黑盒深度学习。有时候,一个朴素的统计思想,加上一点点工程耐心,就能让普通硬件发挥出接近专业设备的威力。
这条路我还在走。如果你也对低成本、高鲁棒、易部署的检测方案感兴趣,欢迎留言交流。