工业感知 · 学习专题

机器视觉专题

工业自动化的「眼睛」。本专题把零散的硬件选型、算法框架、深度学习和产线集成经验按 「认知 → 硬件选型 → 算法框架 → 深度学习 → 部署集成 → 实战案例」 串成一条可照着走的路径,不堆参数表,只讲现场真正决定成败的部分。

0 篇实战教程 0 个在线工具 7 款相关软件 持续更新 · 丁丁智造

一条路径走完机器视觉(六个阶段)

  1. 01

    先建立整体认知:机器视觉能做什么、什么时候需要它

    机器视觉不是万能的。先搞清楚四大典型场景、视觉系统的组成、以及哪些问题根本不需要视觉,避免「为了上视觉而上视觉」。

    • 四大场景:检测(缺陷/有无/好坏)、测量(尺寸/角度/位置)、定位(坐标引导/抓取)、识别(条码/OCR/字符/分类)
    • 视觉系统组成:相机 + 镜头 + 光源 + 算法软件 + 工控机,五大件缺一不可,光源往往比相机更影响成败
    • 什么时候不需要视觉:能用传感器/接近开关/编码器解决的简单检测,成本低、响应快,不要硬上视觉
    • 视觉的优势:非接触、速度快、精度高、可量化、可追溯;劣势:对环境光敏感、调试周期长、算法有失败率
  2. 02

    硬件选型:相机、镜头、光源,选对比调参重要十倍

    机器视觉项目 70% 的失败源于硬件选型错误。相机分辨率不够、镜头视场不对、光源打不亮,后面算法再强也救不回来。

    • 相机选型:面阵(常规检测/定位)vs 线阵(连续材料/大幅面高精度);分辨率由检测精度和视场决定(精度 = 视场/像素数 × 3~5 倍裕量);接口 USB3(简单)/GigE(长距离/多相机)/Camera Link(高速高带宽)
    • 镜头选型:焦距 = 工作距离 × 传感器尺寸 / 视场尺寸;定焦 vs 变焦、远心镜头(高精度测量无透视畸变);注意 C 口/CS 口匹配
    • 光源选型:环形光(通用/表面缺陷)、同轴光(反光平面/划痕)、条形光(多角度/大尺寸)、背光(轮廓/尺寸/孔位检测);打光三原则:高对比度、均匀稳定、突出目标抑制背景
    • 国产相机推荐:海康威视(MV-CA 系列,生态最全)、大华华睿(性价比高)、大恒图像(老牌稳定)、巴斯勒(高端进口标杆);工业镜头选 Computar、富士能、国产长步道
  3. 03

    算法框架选型:OpenCV、Halcon、VisionPro 各适合什么项目

    算法框架决定了开发效率、成本和可维护性。开源免费但要自己造轮子,商业软件贵但算子成熟、调试工具完善,按项目规模和团队能力选。

    • OpenCV:开源免费、C++/Python 双语言、生态最大、基础算子全覆盖;适合有编程能力、成本敏感、需要深度定制的项目;缺点是高级算子(如形状匹配、标定)不如商业软件,调试要靠自己写代码
    • Halcon:商业视觉软件标杆,算子最丰富(2000+)、形状匹配/3D 视觉/深度学习一体化、HDevelop 调试工具极强;适合高精度、复杂算法、快速交付的项目;缺点是授权费高(按运行时收费)、学习曲线陡
    • VisionPro:康耐视旗下,拖拽式流程编辑、和康耐视相机生态打通、适合快速搭建检测流程;缺点是灵活性不如写代码、授权贵、国内生态不如 Halcon
    • LabVIEW Vision:NI 视觉模块,和 LabVIEW 数据采集/测试系统无缝集成、适合已有 LabVIEW 技术栈的团队;算子丰富度一般,纯视觉项目不如 Halcon
    • 选型建议:个人/小项目/原型验证用 OpenCV;工业项目/高精度/快速交付用 Halcon;已有康耐视硬件用 VisionPro;已有 LabVIEW 体系用 LabVIEW Vision
  4. 04

    深度学习:YOLO、缺陷检测、标注训练全流程

    传统算法搞不定的复杂缺陷、不规则纹理、多类别分类,深度学习是利器。但不要盲目上深度学习——数据量不够、场景变化大时,传统算法反而更稳。

    • YOLO 系列:工业目标检测首选,Ultralytics YOLOv8/v11 开箱即用、支持检测/分割/分类/姿态、Python 部署简单、速度快精度高;适合元件定位、缺陷分类、条码检测等场景
    • MMDetection:商汤开源,算法库最全(覆盖几乎所有检测/分割算法)、可配置化程度高、适合研究和算法迭代;缺点是部署比 YOLO 复杂
    • Detectron2:Facebook AI Research 出品,分割算法强、代码质量高、适合实例分割/全景分割场景
    • OpenVINO:Intel 开源推理优化框架,把训练好的模型在 Intel CPU/NPU 上加速部署,工业现场无显卡也能跑实时推理
    • 标注工具:LabelImg(目标检测,简单)、LabelMe(分割/多边形)、CVAT(团队协作/半自动标注);数据质量决定模型上限,标注要统一标准、多轮审核
    • 训练部署流程:数据采集 → 数据清洗/标注 → 数据增强 → 模型训练 → 验证调参 → 模型导出(ONNX)→ 推理部署(OpenVINO/TensorRT/ONNX Runtime)
    • 什么时候用深度学习:缺陷形态复杂/不规则、传统特征难提取、多类别分类、场景有变化但数据充足;什么时候别用:样本少于 200 张、要求 100% 可解释、实时性要求极高且硬件有限
  5. 05

    部署与集成:视觉系统怎么和 PLC、上位机打通

    算法跑通只是第一步,能稳定集成到产线才是交付。触发节拍、数据握手、和 PLC/上位机通讯、多相机同步,这些工程细节决定了项目能不能长期稳定跑。

    • 与 PLC 对接三种方式:① IO 触发(PLC 输出触发信号,视觉拍照后输出 OK/NG 结果,最简单最常用);② TCP/Modbus 通讯(传递坐标/测量值/多结果,需要协议约定);③ 工业协议(OPC UA/Profinet/EtherNet/IP,标准化但配置复杂)
    • 触发与握手设计:PLC 发触发 → 视觉拍照处理 → 视觉返回结果 + 完成信号 → PLC 收到后执行下一步(剔除/分选/记录);必须加超时和异常处理,避免「等不到结果卡死整条线」
    • 与上位机/SCADA 集成:视觉结果通过 TCP/MQTT/OPC UA 上传到上位机,显示在 HMI 界面、存入数据库、生成报表;关键数据(测量值、缺陷图)要可追溯
    • 边缘部署:Jetson Nano/Orin(NVIDIA GPU,跑深度学习)、Intel NUC(OpenVINO 加速)、工控机(多相机/高算力);无显卡场景用 OpenVINO CPU 推理,简单检测也能做到 30+ FPS
    • 相机 SDK 开发:海康 MVS SDK、大华 Spinnaker SDK、巴斯勒 Pylon SDK,都是 C++/C#/Python 多语言支持;注意多相机时的带宽分配(GigE 要设包大小和延迟)、触发同步(硬触发比软触发稳定)
    • 多相机协同:主从触发(一个主相机触发信号同步多个从相机)、时间戳对齐(精确到微秒级)、统一坐标系(手眼标定/九点标定把像素坐标转成机械坐标)
  6. 06

    实战案例与踩坑:尺寸测量、缺陷检测、定位引导、OCR

    理论学得再多,不如做几个真实项目。这里总结工业现场最常见的四类视觉应用的实战要点和踩坑记录,帮你少走弯路。

    • 尺寸测量:用背光+远心镜头消除透视畸变;亚像素边缘提取(OpenCV subpixel、Halcon edges_sub_pix)精度可达 1/10 像素;标定板标定消除镜头畸变;温度变化导致机械膨胀要补偿
    • 缺陷检测:先看传统算法能不能搞定(阈值/Blob/形态学/模板匹配),简单缺陷传统算法更稳更快;复杂纹理/不规则缺陷用深度学习(YOLO 分割/异常检测);缺陷样本少用数据增强+迁移学习+半监督
    • 定位引导:九点标定把像素坐标转成机器人/运动平台坐标;标定板要覆盖整个工作范围;旋转中心标定要精确;定位结果给机器人前要做坐标变换(旋转+平移+缩放)
    • OCR 字符识别:工业环境字符(喷码/激光/印刷)用传统 OCR(Halcon OCR、OpenCV Tesseract)+ 字符分割;复杂背景/低对比度用深度学习 OCR(PaddleOCR、YOLO+识别);字符区域要先定位再识别
    • 常见踩坑:① 光源不稳定(换批次/老化/环境光干扰)→ 用工业光源+遮光罩+定期校准;② 相机丢帧(GigE 带宽不够/网卡性能差)→ 调包大小/用 Intel 网卡/降帧率;③ 算法误判(样本覆盖不全)→ 持续收集误判样本/加复检机制;④ 通讯丢包(PLC 没收到结果)→ 加握手+超时重发+结果缓存
    • 调优经验:先保证硬件(光源/相机/镜头)稳定,再调算法;算法参数要留裕量,不要卡着阈值过;建立测试集(包含良品/各种缺陷/边界情况),每次改算法跑一遍测试集,避免「修好一个坏了三个」

机器视觉相关软件选型(按用途分组)

高频问题(7 个最常被问到的)

Q1. 机器视觉和人眼比,优势在哪?什么时候根本不需要视觉?
机器视觉的优势:非接触(不损伤产品)、速度快(每秒几十上百次)、精度高(微米级)、可量化(给出具体数值而非「差不多」)、可追溯(每张图/每个结果都能存)、一致性好(不会疲劳/情绪波动)。但视觉不是万能的:能用接近开关/光电传感器/编码器解决的简单有无检测,成本低响应快,不要硬上视觉;需要触觉/力反馈的场景(如装配力度检测)视觉做不了;环境完全不可控(强光/粉尘/水汽)时视觉稳定性差。判断标准:这个检测需要「看」吗?需要量化/记录/复杂判断吗?如果是,才考虑视觉。
Q2. 面阵相机和线阵相机怎么选?分辨率怎么算?
面阵相机一次拍一整幅二维图像,适合常规检测、定位、识别,绝大多数项目用面阵;线阵相机一次只拍一行像素,靠物体运动逐行拼接成大图,适合连续运动的卷材/纸张/薄膜/大幅面印刷品检测,以及超高精度大幅面测量(线阵可以做到几万像素宽)。分辨率计算:先确定检测精度要求(如要发现 0.1mm 的缺陷),再确定视场大小(如 100mm × 100mm),所需像素数 = 视场/精度 × 3~5 倍裕量(Nyquist 采样定理,至少 2 倍,工程上留 3~5 倍更稳)。例如 100mm 视场、0.1mm 精度,需要 100/0.1×3 = 3000 像素,选 400 万像素(2048×2048)或 500 万像素(2448×2048)相机。
Q3. 光源怎么打才均匀?打光的基本原则是什么?
光源是视觉项目成败的关键,很多时候比相机还重要。打光三原则:① 高对比度——目标和背景的灰度差要大,算法才容易分割;② 均匀稳定——整个视场亮度均匀,没有明显亮斑/暗区,且长时间运行不漂移;③ 突出目标、抑制背景——让你想检测的特征(缺陷/边缘/字符)清晰可见,不想看到的(纹理/反光/背景)尽量暗下去。常见打光方式:环形光从四周照射,适合表面缺陷/通用检测,最常用;同轴光从镜头方向垂直照射,适合反光平面(玻璃/金属/晶圆)的划痕/污点检测;条形光从一侧或两侧照射,适合大尺寸物体/突出表面凹凸;背光从背面照射,适合轮廓/尺寸/孔位检测(只看形状不看表面)。调试技巧:先关灯看环境光影响,再开灯从不同角度试,找到对比度最高的角度;用漫射光减少反光;加遮光罩隔离环境光;光源亮度留 20%~30% 裕量(不要调到最亮,老化后会变暗)。
Q4. OpenCV 和 Halcon 哪个好?新项目怎么选?
没有绝对的好坏,看项目需求和团队能力。OpenCV:开源免费、C++/Python 双语言、全球用户最多、基础算子(滤波/阈值/边缘/形态学/特征提取/相机标定)全覆盖、和深度学习框架集成好;缺点是高级算子(形状匹配/3D 视觉/精密测量)不如 Halcon 成熟,调试要靠自己写代码和看图像,没有 Halcon HDevelop 那样的可视化调试工具。Halcon:商业软件标杆,2000+ 算子、形状匹配(基于形状的模板匹配,抗遮挡/光照变化/旋转缩放)、3D 视觉、深度学习一体化、HDevelop 交互式调试工具极强(拖算子看结果,不用写代码就能验证算法);缺点是授权费高(开发版+运行时,按项目收费,一个项目几千到几万)、学习曲线陡、闭源。选型建议:个人学习/小项目/原型验证/成本敏感/团队编程能力强 → OpenCV;工业项目/高精度/复杂算法/快速交付/预算充足 → Halcon;也可以混合用:算法验证用 Halcon HDevelop 快速试,部署时用 OpenCV 重写(省授权费)。
Q5. 深度学习一定比传统算法好吗?什么场景该用深度学习?
深度学习不是万能的,很多工业场景传统算法更稳更快更便宜。传统算法(阈值/Blob/边缘/模板匹配/形态学)的优势:速度快(毫秒级)、可解释(知道为什么判 OK/NG)、不需要大量训练数据、对硬件要求低(普通 CPU 就能跑)、结果确定性高。深度学习的优势:能处理复杂纹理/不规则缺陷/多类别分类/传统特征难提取的场景,但需要大量标注数据(至少几百上千张)、训练调参周期长、推理需要 GPU 或 NPU、结果有不确定性(可能误判)、可解释性差。该用深度学习的场景:① 缺陷形态复杂/不规则(如纺织品/木材/金属表面的随机缺陷);② 多类别分类(如区分 10 种不同零件);③ 传统特征难提取(如复杂背景下的目标检测);④ 场景有变化但数据充足(如不同批次/不同型号的产品)。不该用深度学习的场景:① 样本少于 200 张(数据不够模型学不好);② 要求 100% 可解释(如某些合规场景);③ 实时性要求极高且硬件有限(如每秒 100 次检测且只有 CPU);④ 简单规则就能搞定(如固定位置的有无检测)。工程上建议:先试传统算法,搞不定再上深度学习;两者可以混合(传统算法做定位/ROI 提取,深度学习做 ROI 内的缺陷分类)。
Q6. 视觉系统怎么和 PLC 对接?触发和握手怎么设计才稳定?
视觉和 PLC 对接是工业视觉项目的工程核心,最常用三种方式:① IO 触发+IO 输出(最简单最常用):PLC 输出一个触发信号(24V 开关量)给视觉系统,视觉收到后拍照处理,处理完输出 OK/NG 结果(24V 开关量)给 PLC,PLC 根据结果执行剔除/分选;这种方式延迟低(毫秒级)、稳定可靠、不需要写通讯协议,适合大多数检测场景。② TCP/Modbus 通讯:视觉和 PLC 通过以太网通讯,传递更复杂的数据(测量值/坐标/多结果/参数设置);需要约定协议格式(字节序/数据类型/握手命令),比 IO 复杂但功能强。③ 工业协议(OPC UA/Profinet/EtherNet/IP):标准化协议,和 PLC 生态打通好,但配置复杂、需要额外硬件/授权。触发和握手设计要点:① 触发信号要有足够宽度(至少 10ms,避免 PLC 扫描周期漏掉);② 视觉处理完必须返回「完成信号」+「结果信号」,PLC 必须等完成信号再执行下一步,不要只看结果信号(结果信号可能还没更新);③ 加超时处理(视觉 500ms 没返回结果,PLC 报警/重试/跳过),避免「等不到结果卡死整条线」;④ 多产品时加产品 ID/计数器,确保结果和产品对应(不要出现 A 产品的结果给了 B 产品);⑤ 视觉系统要能缓存结果(PLC 慢了也不丢结果)。
Q7. 国产相机能替代海康/巴斯勒吗?有哪些坑?
国产工业相机这些年进步很大,中低端场景完全可以替代进口,高端场景也在快速追赶。国产相机优势:价格低(同规格比巴斯勒便宜 30%~50%)、中文技术支持好(响应快、沟通方便)、本地供货(交期短、备件好买)、和国产光源/镜头/软件生态配合好。国产相机推荐:海康威视(MV-CA/MV-CS 系列,国产工业相机龙头,生态最全,SDK 成熟,从低端到高端都有)、大华华睿(性价比高,算法和相机一体化方案有优势)、大恒图像(老牌国企,稳定性好,高端线阵相机有竞争力)、度申/迈德威视(中低端性价比之选)。进口标杆:巴斯勒(Basler,全球工业相机龙头,稳定性/一致性/SDK 质量顶级,高端项目首选)、FLIR(原 Point Grey,高端科研/工业)、JAI(高端线阵/3CCD)。坑和注意事项:① 一致性——国产相机的批次一致性(同一型号不同批次的画质/噪点/响应度差异)整体不如巴斯勒,高精度测量项目要做批次校准;② SDK 质量——海康/大华的 SDK 已经很成熟,但小品牌的 SDK 可能有 bug/文档不全,多相机/高帧率时要充分测试;③ 长时间稳定性——7×24 小时运行几个月后,国产相机的稳定性(丢帧/死机/温漂)要做老化测试;④ 高端线阵/高帧率/高动态范围——这些高端领域巴斯勒/JAI 仍有优势,国产在追赶但还有差距;⑤ 建议:中低端检测/定位项目放心用海康/大华,成本省很多;高精度测量/高端线阵/出口项目先做充分验证,不要直接替代。

想深入某个方向?

本专题持续更新。后续会逐步补充机器视觉实战教程(OpenCV 入门、Halcon 实战、YOLO 训练、相机 SDK 开发、打光技巧等),以及像素/毫米换算、视场角计算等在线工具。

有具体项目问题,可在「关于丁丁」页找到一对一技术咨询入口。

查看全部视觉软件 → 查看全部专题 →