机器视觉检测项目翻车,八成不是算法不行,而是打光不到位、硬件选型没留余量、判定阈值定得太死。靠人眼抽检,漏检一个批次就是客诉和返工;上了视觉,误判率压不下来,合格品被成片过杀,产线照样要骂街。一套能用的视觉检测系统,核心是把光源、相机、算法和 PLC 剔除这四件事拧成一股绳。

一、视觉检测能做什么、做不了什么?先划清边界

任务类型典型内容难点
有无 / 识别零件在不在、装没装、字符识别遮挡和姿态变化
尺寸测量孔径、间距、同轴度、边缘尺寸精度与标定
定位引导找中心、纠偏、引导机器人抓取坐标系转换
缺陷检测划痕、脏污、崩边、色差样本不均、过杀漏检

说实话,前三类都是确定性任务,规则清楚、好验收。最难的是缺陷检测——什么算缺陷、什么算正常纹理,人眼自己都未必意见一致。立项时如果客户只会说"把不良挑出来",连缺陷样件都凑不齐,这项目基本就要悬。

二、硬件选型:相机、镜头怎么算才够用

选型先从精度倒推,别反过来。先确认要测的最小特征尺寸视野范围,再算像素:

  • 想看清一个特征,至少覆盖 3~5 个像素,测量类项目建议留到 5~10 个;
  • 分辨率 = 视野 ÷ 单像素精度,再留 20% 以上余量,别卡着边界选;
  • 运动产线选全局快门,卷帘快门拍运动物体会变形;
  • 帧率要覆盖节拍:单工位节拍 200ms,相机加算法总耗时就得压在 100ms 内。
// 举例:视野 60mm × 45mm,要求精度 0.05mm
// X方向像素 = 60 / 0.05 = 1200,选 1600×1200 (200万像素) 留余量
// 镜头按靶面尺寸(如 1/1.8")和工作距离选,FOV 必须覆盖相机靶面

镜头别凑合。低畸变、远心镜头用于精密测量,普通镜头边缘有畸变和暗角;镜头选错,后面算法再怎么补都吃力。

三、打光才是灵魂:光源和照明方式决定成败

干视觉久了都知道一句话——没有好图像,就没有好算法。同一颗相机,光打好了,缺陷自己"浮"出来;光打不好,图像里全是干扰,神仙也难判。

光源 / 打光适合场景
环形光 / 同轴光平面字符、反光表面、Mark 点
低角度环形光划痕、凹凸、边缘缺陷
背光轮廓尺寸、有无检测
条形光 / 穹顶光大目标、曲面、金属反光

光源选型没有公式,就是拿着实物在暗箱里一种种试。试到缺陷和背景对比度拉到最大、正常批次图像稳定,才算数。环境光要挡,车间灯光一闪一闪的,不遮光罩起来,白天和晚上判出来的结果都能不一样。

四、图像处理流程和判定逻辑

不管用 Halcon、VisionPro 还是 OpenCV,主流程都差不多:采图 → 滤波去噪 → 定位 ROI → 分割提取 → 特征计算 → 阈值判定。几个实战经验:

  • ROI 尽量缩小,只看该看的区域,背景干扰能少一大半;
  • 判定别只用单一固定阈值,配合位置归一化、模板匹配消除姿态差异;
  • 算法参数和阈值配置化,现场调参不用重新编译;
  • NG 图片自动存盘,按 SN 归档,这是后期分析误判最宝贵的素材。
// 判定结果结构:OK/NG 之外,还要带置信度和缺陷明细
class VisionResult
{
    public string Sn;
    public bool   IsNg;
    public double Score;        // 置信度,过低走人工复核
    public string Defects;      // "划痕,崩边"
    public string ImagePath;
}

五、和PLC握手:触发、判定、NG剔除必须闭环

视觉不是孤立的工位,标准握手走这么几拍:

  1. 工件到位 → PLC 发触发信号(带频闪);
  2. 视觉采图判定 → 回传 OK / NG 和完成标志;
  3. NG 工件走到剔除位 → PLC 根据缓存结果吹气 / 挡板剔除
  4. 剔除要有到位确认,防止"判了没剔掉"。
这里有个大坑:触发与判定的时序。工件没停稳就拍照、判定还没回来工件已走、产线连续流动时结果错位——都是现场高频事故。解决靠两点:触发只在稳定窗口发出,判定结果用队列按序对应,剔除位根据队列取结果,超时没判出来按 NG 保守处理并报警。

六、误判率怎么压?样本库和验收才是关键

视觉项目验收,光看"能不能跑"远远不够,要盯住两个指标:漏检率(不良放过)和过杀率(好品误杀)。漏检率必须接近零,过杀率则要和产线约定一个可接受值,通常百分之几以内。

  • 立项就收集样本:正常件、各类缺陷件,数量越多越好,缺陷件不够可以人为制作;
  • 样本分训练集和验证集,严禁用调过参数的同一批图"自证清白";
  • 试产期间保留人工复检对照,跑上几千上万件再统计真实指标;
  • 低置信度结果一律转人工,别让算法硬判。

我之前做过一个电子元件外观检测,实验室里指标漂亮得很,一上线过杀率冲到 8%。后来发现是来料批次的正常纹理有差异,靠补充新批次样本、加上灰度归一化,花了两周才压回 1% 以内。所以你看,视觉系统不是交付那天就结束,而是跟着产品批次持续养的。

如果你正打算上视觉检测,先去做这件事:找 30 个正常件和尽可能多的缺陷件,在供应商的光源试台上实拍一轮,看缺陷能不能稳定地"显形"。打光这关过不了,后面谈算法和报价都是空中楼阁——图像质量,才是这类项目唯一的入场券。