
上个月一个做玻璃盖板的朋友打电话过来说产线上十几个人拿着灯管检划痕眼睛都花了问我机器视觉到底能不能干这个活。电话挂了之后我想了很久这个问题其实每个刚接触机器视觉的人都会问机器视觉到底可以检哪些划痕能不能检尺寸能不能测装配有没有漏装能不能看甚至有客户拿一根头发丝问我能不能检测出来。这个问题表面看起来很简单但真要系统回答内容非常多。我做了这么多年视觉项目也带过不少新人发现很多刚入行的人一上来就盯算法、盯深度学习框架结果到现场连个反光都压不住。这篇文章我想把这些年对“机器视觉能检什么”的理解做个系统梳理从检测类型、行业应用、选型思路到一个完整的玻璃划痕项目复盘最后再给一份学习路线和避坑指南。不管你是刚入行的视觉工程师、想引自动化质检的制造企业技术负责人还是正在选方向的学生应该都能从中找到有用的东西。1. 先别急着买相机搞清机器视觉到底在“检什么”很多人问“机器视觉可以检哪些”的时候心里想的是各种具体产品手机玻璃、PCB板、螺丝、药瓶、锂电池等等。但我的习惯是先不看产品把检测需求抽象成几个维度。因为只要维度搞清楚了后面的相机选型、光源设计、算法思路基本就能定个七七八八。视觉检测看着五花八门归根结底跑不出五类。1.1 五种检测维度从“数手指”到“看皮肤”第一种是有无检测这是最基础的一类。判断一个东西在不在比如螺丝孔有没有攻牙、包装盒里说明书有没有放进去、电池极耳有没有翻折、药板里有没有缺粒。这类项目往往是最好做的但也是最容易被低估的。难点不在算法而在节拍和稳定性产线一秒走好几个你不能漏掉任何一个。第二种是尺寸测量。这个我要单独提醒一下测量类项目和缺陷检测是完全不同的思路。测量需要标定要把像素换算成物理单位比如一个像素对应多少毫米还可能要考虑到镜头畸变精度要求在微米级的时候往往要上远心镜头。典型应用有手机中框宽度、轴承外径、连接器脚间距、密封圈内径这些。第三种是缺陷检测也是大家问得最多、项目难度最不稳定的一类。划痕、脏污、凹凸、气泡、漏镀、色差、毛刺全都可以归到这里。难点在于缺陷形态千奇百怪同一类缺陷在不同光线、不同角度下长得完全不一样。我经常跟新人说缺陷检测的本质是“在复杂的背景里找异常”所以真正难的往往不是怎么识别缺陷而是怎么让正常产品在图像里显得足够“正常”。第四种是定位引导。视觉不光是用来“看”的还可以用来“指路”。我做过一个项目视觉引导机器人抓取传送带上的工件视觉系统输出坐标和角度机器人根据这些数据去抓。这里的核心是手眼标定要保证视觉坐标和机器人坐标对上误差大了就抓偏。第五种是识别读码。识别文字、二维码、DataMatrix码主要用于产品追溯、分拣和防错。比如电子元件表面的激光打标码药品包装上的生产日期喷码食品包装袋上的条码都是视觉识别在做。如果打个比方的话有无检测相当于“数数有几根手指”尺寸测量相当于“量身高”缺陷检测相当于“看皮肤上有没有痣”定位相当于“给人指路”读码相当于“看身份证号”。理解这个类比再去看具体项目思路会清晰很多。1.2 实际项目基本都是“组合拳”现实里几乎没有哪个项目是单一检测类型大多数都是几个维度组合在一起。就拿一块PCB板来说AOI检测设备既要看元件有没有漏贴有无又要看焊点有没有桥连、虚焊缺陷还要读板上的二维码做数据绑定识别有些工位还要测连接器的位置偏移尺寸/定位。四个维度同时上任何一个环节漏了都可能导致成品不良。还有一个很容易被忽略的点视觉系统的输出不只是“OK/NG”还可以生成统计数据。比如缺陷的类型分布、尺寸测量的CPK趋势这些数据对产线做工艺改善很有价值。所以我接触的比较成熟的工厂视觉检测不只是当成一个“检查员”更是当成一个“数据采集器”在用。这也是机器视觉区别于人工质检的一大优势——人检完只知道好坏机器能告诉你为什么不坏、坏了多少、趋势如何。搞清楚这五种维度之后再回头看“机器视觉可以检哪些”你会发现答案不是“能检什么产品”而是“能解决什么类型的检测问题”。产品千变万化但检测维度就这么多。2. 按行业拆解这些产线上视觉到底在看什么有了基础框架再看具体行业就清楚了。不同行业的检测需求差异非常大对精度、速度、环境的要求也完全不同。做视觉项目这些年我最大的感受是没有一个方案能通吃所有行业每个行业都有自己独特的“脾气”。2.1 3C电子与半导体精度和节拍的极限挑战3C行业是机器视觉应用最成熟、要求也最苛刻的领域。手机、平板、耳机这些消费电子产品零部件尺寸小、精度要求高、节拍快很多工序人眼根本无法稳定完成。以手机中框为例尺寸公差经常在正负0.05毫米以内有些关键位置甚至要求0.02毫米这时候必须用高分辨率相机加远心镜头做测量。再看摄像头模组组装过程中要对镜片、滤光片、传感器进行定位贴合视觉引导的重复精度要控制在微米级。FPC柔性电路板的补强贴装需要视觉定位来保证贴装位置准确。屏幕检测是这个行业里比较有代表性的场景既要检测显示区域的亮点、暗点、 Mura亮度不均又要看玻璃盖板的划痕、崩边。显示缺陷检测很多要配合点亮屏幕来做通过特定的打光方式或屏幕自己发光来发现缺陷。这类项目投入大、周期长但一旦跑起来替代人工的效果非常明显。半导体行业的视觉要求比3C还高晶圆表面的缺陷检测、引线框架的外观检测、封装后的字符识别和外观检查很多要在显微镜级别的分辨率下做整个系统对环境、振动、洁净度的要求都非常苛刻。2.2 汽车与新能源安全件检测容不得“差不多”汽车行业对安全件的要求是零缺陷因为一旦有缺陷的零部件装到整车上后果不是成本问题而是安全问题。所以这个行业的视觉检测特点是宁可过杀不可漏检。动力电池是近些年需求增长最快的方向。电池极片的划痕、针孔、露箔隔膜的褶皱和破损电芯焊缝的瑕疵顶盖焊接后的熔宽测量密封钉的焊接质量这些都直接关系电池安全。比如极片上的一个金属毛刺如果刺穿隔膜可能导致内部短路甚至引发热失控。我在跟电池厂客户交流时特别能感受到他们的压力这类项目验收时漏检率基本都是百万分之级别要求。汽车零部件里比较典型的检测包括密封圈是否完整、螺纹孔有没有通、涂胶轨迹是否连续、线束接插件端子是否到位、活塞环表面有无划伤。还有一大类是装配防错比如给汽车总装线做摄像头判断工人有没有漏装某个卡扣或者某个管线有没有插到位这类看似简单的有无检测项目反而能帮工厂避免大批量返工。2.3 玻璃、金属与表面处理打光是成败关键玻璃和金属表面检测是整个机器视觉领域里公认的“硬骨头”也是被问得最多的方向之一尤其是玻璃划痕检测。玻璃是透明的又有强反光用普通正面光拍照划痕不一定看得到看到的多半是光源的反光。想把玻璃上的划痕拍清楚要专门设计打光方案常用的有低角度光、同轴光、背光这些。低角度光对划痕特别敏感光线斜着打过去划痕的边缘会把光散射开在图像里形成一条条亮线而平整的玻璃表面没有散射呈现为暗场背景。这就是典型的“把缺陷变成亮特征”的做法。金属表面检测的难点类似拉丝铝板、电镀件、抛光面这些高反光表面普通光源会在表面形成大面积反光反而掩盖了真正的缺陷。做这类项目光源的角度、颜色、均匀性任何一个细节不对图像里的缺陷就“消失”了。所以做视觉工程师一定要养成一个习惯先用光源试出合格的图像再谈算法。2.4 食品、药品与日化从“有没有”到“好不好”食品和药品行业的视觉检测对卫生要求和追溯要求特别高。这类产线普遍速度很快每分钟几百上千件视觉系统要在高速运动中完成拍照和判断经常要用到高速相机和飞拍技术也就是相机不停止在运动过程中抓拍。药品泡罩包装检测比较典型药板经过相机下方图像系统检查每个泡罩里有没有药片、药片有没有破损、颜色有没有异常、铝箔封口有没有压穿。食品行业的应用包含饼干表面有没有烤焦、面包里有没有异物、瓶装饮料的液位是否合格、瓶盖有没有拧歪以及标签是否贴正、喷码是否清晰可读。这个行业还有一个特点设备要方便清洗视觉系统本身要有防护相机要么做成密封结构要么远离物料区域通过镜面反射拍照。我做过一个食品项目相机装在产线上方三米多的地方用长焦镜头加45度反射镜就是为了躲开蒸汽和飞溅。每个行业看下来你会发现机器视觉能检测的对象几乎没有上限真正决定“能不能检”的是成像方案和算法方案是否匹配。3. 为什么有些缺陷“看着简单就是检不出来”聊聊选型思路很多客户找到我的时候一开始都以为是算法不够聪明说“你们那个深度学习不是挺厉害的吗怎么这个划痕都检不出来”。但到了现场一看图像里缺陷和背景几乎没有灰度差异别说深度学习神仙来了也认不出来。打电话能解决的问题根本不用跑现场。3.1 成像质量决定算法上限相机、镜头、光源如何选型我的原则是图像里看不到的特征算法永远检不出来。算法只是把图像里本来就有的差异提取出来如果缺陷在成像阶段就被淹没了后面所有工作都是白费。所以选型是整个视觉系统里最重要的环节。相机选型主要看分辨率和帧率以及传感器靶面大小和黑白还是彩色。分辨率要根据检测精度来算比如检测范围是50毫米要求精度0.05毫米简单算一下就是50除以0.05等于1000个像素考虑边缘算法通常要2到3个像素至少要200万到300万像素的相机。帧率则由产线节拍决定一分钟检测120个产品每个产品还要拍两张图那相机帧率至少要满足每秒4帧以上实际还要考虑曝光时间和传输时间选型时留出余量。镜头选型容易被忽视但同样重要。普通镜头有畸变测量类项目尽量用远心镜头它的特点是图像不会因为物体距离变化而放大缩小特别适合高精度测量。缺陷检测类项目还要注意景深问题如果产品表面不是完全平整镜头景深不够边缘就会模糊小缺陷就被“糊”没了。光源是决定图像质量的核心。环形光适合打亮整体区域同轴光适合高反光平面低角度光适合凸显划痕和凹凸背光适合轮廓穹顶光适合球形曲面。光源颜色方面不同颜色的光打在彩色物体上对比度差异很大比如蓝色光打在黄色铜面上会产生高对比度这个要靠经验也要靠试。3.2 打光对比度的现场验证方法很多新手不知道一个方案行不行最直接的办法是做“灰度对比度验证”。架好相机和光源后分别拍一张正常产品和一张带缺陷产品的图像在图像里分别取缺陷区域和背景区域的灰度值两个值的差除以背景灰度就是一个对比度指标。对比度越高后面算法越好写系统越稳定。我的经验是缺陷和背景的灰度差至少要在30以上能做到50以上最好如果只有十来个灰度差即便算法勉强能做出来产线上稍微有一点环境光变化就可能翻车。我经常跟同事说打光验证要像个侦探一样不光是拍一张照片看能不能看到缺陷还要变换光源角度、高度、亮度找到那个让缺陷和背景差异最大的“黄金角度”。这个步骤其实不复杂但非常耗时间。我见过太多项目客户催得急成像方案草草确定结果到了验收阶段发现漏检率压不下来回头重做光源等于整个系统推倒重来。前期一个小时能解决的问题后期可能要花一周去弥补。3.3 什么时候该上深度学习传统视觉算法处理“规律明确”的检测非常高效比如尺寸测量、有无判断、规则形状的缺陷用阈值、定位、Blob分析就能解决。但当背景纹理复杂、缺陷形态多变、不足以用固定规则描述的时候传统算法就开始吃力了这时候就需要深度学习。最典型的就是皮革、纺织物、木材表面的缺陷检测这些材料本身纹理就不均匀一条划痕放在这样的背景里人眼都要仔细看半天传统算法很难找到稳定的灰度规律。再比如工件表面存在大量加工痕迹正常的痕迹和真正的划痕长得有点像用规则去区分很困难。深度学习在视觉检测领域的典型应用有三种。一种是图像分类判断整张图是OK还是NG。一种是目标检测用矩形框标出缺陷的大致位置和类别。还有一种是语义分割对每个像素做判断把缺陷的精确轮廓“抠”出来适合对缺陷形状有要求的场景比如测量划痕长度、面积。但深度学习不是万能的最大的问题是它需要大量标注样本。缺陷样本少是项目里的常见矛盾没有缺陷数据模型就学不会“长什么样叫缺陷”。做项目时我有个习惯如果缺陷形态相对固定优先用传统算法因为好解释、部署简单、检测速度快。只有传统方案确实搞不定了再考虑深度学习同时留出足够的数据收集和标注时间。4. 玻璃划痕检测实操复盘一个典型的“看着简单”项目接着开头那个朋友的电话说他那边就是玻璃盖板划痕检测。这个项目我完整跟过一遍是很好的教学案例。表面看就是“把有划痕的玻璃挑出来”但真做起来从需求拆解到落地验收每一步都有讲究。4.1 需求拆解先搞清楚检什么、多快、允许多少误判任何视觉项目拿到需求第一件事不是选设备而是一起坐下来把需求“翻译”成工程语言。需要确认的点包括玻璃尺寸多大划痕是什么形态是直线还是弧线深度大概多少除了划痕还要不要检崩边、麻点、脏污产线节拍是多少检测是离线还是在线最重要的两个指标是漏检率要求多少、允许的过杀率是多少。我当时给朋友梳理了一张需求表比如玻璃尺寸150乘70毫米厚度0.7毫米检测项包含划痕、崩边、麻点、脏污其中划痕长度大于0.5毫米的必须检出产线节拍是6秒一片漏检率要求在千分之一以内过杀率可以放宽到百分之五。这个“过杀率可以放宽”给了方案很大空间因为过杀的玻璃可以人工复检漏检的直接出货给客户后果要严重得多。4.2 成像方案低角度光为什么是划痕的“照妖镜”玻璃划痕成像的思路前面提到过核心是用低角度光把划痕“点亮”。具体方案我建议用两组条形光源分别从玻璃的左右两侧以小于15度的角度照射配合一台500万像素黑白面阵相机镜头选16毫米焦距。这样拍出来的图像正常玻璃区域是暗的划痕边缘因为散射光进入镜头呈现为亮线或者亮点。为什么必须用黑白相机而不是彩色因为检测的是灰度特征彩色信息在这个场景里没有帮助黑白相机的灵敏度更高图像数据量也更小处理速度更快。用彩色相机反而可能因为彩色滤波阵列降低黑白分辨率。有一点要特别注意玻璃检测对环境光极其敏感。车间顶部的日光灯如果照到玻璃表面会在图像里形成大面积亮斑严重干扰检测。所以在设备结构上一定要加遮光罩把整个拍摄区域罩起来只留低角度光源的光。我见过不少项目检测算法本身没问题就是因为没做遮光白天和晚上、晴天和阴天检测效果都不一样。4.3 算法实现先传统后深度不要一上来就上AI玻璃划痕这种“背景暗、缺陷亮”的图像传统算法完全可以先扛一阵我用的核心流程大体是五步。第一步预处理用高斯滤波把图像里的随机噪声压掉避免把噪点当成缺陷。第二步背景抑制因为玻璃边缘可能存在渐晕图像四周比中间暗用顶帽变换或者背景拟合法把这种不均匀性去掉。第三步阈值分割缺陷是亮特征可以根据灰度直方图设定一个阈值把高于阈值的像素分离出来。第四步形态学处理划痕可能是断断续续的线段用闭运算把断点连起来同时过滤掉孤立的细小噪点。第五步特征筛选按面积、长度、宽高比、长轴方向等特征把真正的划痕和误检区分开。这套流程用OpenCV或者Halcon都能实现调起来也不复杂。如果产线上后来又出现了形态更复杂的缺陷比如在纹理很多的位置出现轻微划痕传统算法阈值怎么调都会误检这时候再把分割模型接上来模型会把每个像素分类成“划痕”或“正常”学习能力比固定规则强不少。我在这个项目里的经验是先花两三天把传统方案跑通拿到一批测试数据评估漏检和过杀情况。如果传统方案能到“漏检率低于千分之二、过杀率百分之十”的水平就先顶着用同时开始收集数据、标注准备深度学习方案做二期优化这样既不耽误产线又给优化留了余地。4.4 项目验收漏检率、过杀率和现场鲁棒性项目做完算法真正折磨人的是验收阶段。很多视觉项目算法开发只占三分之一的时间剩下三分之二全在调稳定性。验收要定义清楚指标漏检率是“有缺陷但判成OK”的比例过杀率是“没缺陷但判成NG”的比例。这两个指标通常是矛盾的往左调漏检率降低但过杀率上升往右调过杀率下降但漏检率上升。实际项目里不要追求两个都好核心策略是先保漏检再降过杀因为漏检是往外放不良品过杀最多是多几个人工复检。还要做鲁棒性测试把我这个项目里踩过的坑分享几个。同一批玻璃车间的温湿度、来料清洁度、设备振动都会影响成像。玻璃表面即使擦干净拿放过程中也容易留下指纹指纹在低角度光下也会发亮容易被误判为划痕。解决思路是特征筛选时加入形状判断划痕通常细长、有方向性指纹的面积和形状跟划痕差异明显。另外要定期清洁光源和镜头镜片上一旦落灰图像里会出现固定位置的暗影算法就可能大面积误报。我通常会在视觉程序里加一个“图像质量监控”功能一旦发现均匀度异常就停机报警让工人去清洁。5. 学习路线与避坑指南让“能检哪些”真正变成“能落地”很多人看到机器视觉前景好想入行又不知道从哪里下手。这里我结合自己带人的经验给一条相对务实的学习路线。同时把项目里最容易踩的坑集中说一下这些在课本上很少写。5.1 零基础到入门这条路可以这么走第一步理解成像原理。机器视觉里最核心、最容易被忽视的就是光学知识。光的反射、折射、散射光源颜色和物体颜色的关系镜头的成像公式景深和光圈的关系这些搞不明白后面选型会处处踩坑。《机器视觉算法与应用》第2版算是一本很经典的教材涵盖相机、镜头、光源、算法框架适合系统学习。我的建议是买纸质版方便反复翻别只收藏一个PDF在网盘里吃灰。第二步掌握一个算法工具链。OpenCV加Python是目前最通用的入门组合网上资料多、上手快适合做原型验证。Halcon是工业界常用的商业软件算子丰富算法成熟很多工厂都在用会Halcon在找工作时有优势。我的建议是先用OpenCV把图像处理的基本概念吃透再根据需要学Halcon两者背后的原理是相通的。第三步动手做项目。只看书永远学不会视觉检测。哪怕没有真实产线设备也可以自己用手机拍一些素材练手拍一张有划痕的桌面写个阈值分割拍一张零件照片做模板匹配拍一张纸上的文字跑一下OCR。把一个简单的检测流程完整跑通比背一百个算子都有用。第四步向深度学习方向扩展。理解卷积神经网络的基本原理掌握目标检测和分割的主流框架。机械视觉和深度学习结合是目前行业的大趋势尤其是缺陷检测领域深度学习能处理很多传统方案搞不定的复杂场景。但记住深度学习只是工具成像基础仍然重要我在前面花那么大力气讲光源选型就是想强调这一点。5.2 项目中最容易踩的坑第一个坑镜头脏了。听起来很傻但非常常见。现场粉尘大镜头前端的保护玻璃容易沾灰图像会变模糊小缺陷就检不出来了。解决方法有两个一是设备设计时给镜头加气帘或者防护玻璃二是把镜头清洁列入设备日常保养清单。第二个坑环境光引起误检。工厂的日光灯、窗外阳光、焊接弧光都可能在图像里产生干扰。机器视觉最怕的就是“检测条件不稳定”做遮光罩、固定曝光参数把成像环境锁死比任何算法优化都有效。第三个坑来料批次差异。上一批产品和下一批产品表面颜色、纹理有差别会导致图像灰度整体漂移固定阈值失效。所以算法设计时尽量用自适应阈值或者动态标定不能写死一个灰度值就再也不管。第四个坑缺陷样本不够。深度学习项目最容易卡在数据上。我的建议是前期就多收集不良品哪怕算法还没定先把产线上的所有异常品拍照存档。另外可以用数据增强的方式对已有的缺陷样本做旋转、缩放、加噪声扩大样本量但增强手段要符合实际情况不能把不可能出现的形态硬造出来。5.3 “机器视觉可以检哪些”速查表最后整理一份速查表方便你接到新项目时快速对照。检测任务典型应用常用成像方式算法/工具倾向难度有无检测漏装、漏放、缺粒背光、环形光模板匹配、Blob分析低尺寸测量精密零件、间隙公差背光、远心镜头边缘提取、卡尺工具中缺陷检测划痕、脏污、凹凸低角度光、同轴光阈值分割、形态学、深度学习高定位引导机器人抓取、对位贴合环形光、同轴光模板匹配、手眼标定中识别读码OCR、二维码、追溯同轴光、漫射光OCR算子、读码库低颜色检测色差、分选、变色标准光源箱色彩空间分析中三维检测高度、共面度、焊锡量线激光、结构光点云处理、三维重建高这是我个人在实际项目中的体会机器视觉能不能检出某个东西很多时候不是取决于算法有多聪明而是取决于我们是否真正理解了产品、工艺和光学之间的关系。接到新需求的时候不要急着问“能不能做”先用手机或者相机拍几百张图自己人眼先看一遍。如果人眼在图像里都分辨不出特征那机器也学不会如果人眼能在图像里清晰看出来那这个项目就成功了一大半。机器视觉能检哪些答案不在样本库里永远在产线上。