VisionMaster 常用工具入门:图像采集、定位、测量、识别一篇打通

VisionMaster 4.0 常用工具入门:图像采集、定位、测量、识别一篇打通

如果你把机器视觉检测想象成一条流水线,那么 VisionMaster(海康机器人 VM 算法开发平台)就是把这条流水线做成了"积木":从相机取图、找到工件、量尺寸、读码,到最后输出 OK/NG,每一步都对应一个可以拖来拖去的"工具"。你不需要从零写图像处理算法,只要会连线、会调参数,就能搭出一个完整的视觉方案。本文基于 VisionMaster 4.0.0 官方手册,带你过一遍日常项目里最常用的那批工具,适合刚上手 VM 的同学和需要复习的工程师。

一、VisionMaster 是什么

VisionMaster(简称 VM)是海康机器人自主开发的机器视觉图形化算法平台,提供千余个自主研发的图像处理算子,支持多种图像采集设备,覆盖机器视觉四大类需求:定位、测量、识别、检测。

它有三种开发模式:

  • 图形化界面开发:拖拽工具、连线、双击配参,是最常用的模式,也是本文的内容;
  • SDK 二次开发:调用 VM 的控制与数据获取接口,在自己的程序里跑方案;
  • 算子设计模式:把算子封装成自定义视觉工具,嵌入自己的检测流程。

图形化开发的核心概念只有两个:

  • 方案(Solution):一个完整的视觉工程,里面可以包含多个流程;
  • 流程(Flow):由若干工具模块按数据流连线组成的处理链路,图像从第一个模块流向最后一个模块。

工具的使用方式统一为三步:拖入流程编辑区 → 按逻辑连线 → 双击配置参数。

二、工具箱分类总览

VM 左侧工具箱按功能分为 12 个大类,先建立整体地图,再逐个学常用工具,思路会清楚很多。

【插图 1:软件界面与流程搭建效果】(发布时在此插入图片 03-软件界面截图.png,可替换为自己的方案截图)


【插图 2:VisionMaster 工具箱分类体系图】(发布时在此插入图片 01-工具箱分类体系图.png)

分类 主要工具 干什么
图像采集 图像源、输出图像、缓存图像、光源、多图采集 取图、存图、控制光源
定位 特征匹配、灰度匹配、圆查找、直线查找、BLOB 分析、卡尺工具、边缘查找、位置修正等 20 种 找工件、找特征、输出位置
测量 线圆测量、线线/圆圆测量、点圆/点线/点点测量、圆/直线拟合、亮度测量、像素统计、直方图 算距离、尺寸、角度、亮度
识别 二维码识别、条码识别、字符识别 读码、OCR
深度学习 DL 字符识别、DL 目标检测、DL 分类、DL 分割、DL 异常检测等 复杂背景/缺陷的 AI 方案
标定 N 点标定、标定板标定、标定转换、单位转换、畸变标定/校正 像素坐标与物理坐标换算
对位 相机映射、单点对位、点集对位、线对位 贴合、纠偏
图像处理 二值化、滤波、增强、形态学处理、仿射变换、图像拼接、圆环展开 预处理与图像变换
颜色处理 颜色抽取、颜色测量、颜色转换、颜色识别 颜色类检测
缺陷检测 字符缺陷、直线/圆弧边缘缺陷、缺陷对比等 划痕、污点、边缘缺陷
逻辑工具 条件检测、分支模块、格式化、脚本、Group、变量计算 流程控制与数据处理
通信 接收数据、发送数据、相机 IO 通信 与 PLC、上位机、串口交互

初学者最先需要掌握的是前四类(采集、定位、测量、识别)加上逻辑工具和标定,本文就围绕这些展开。

三、准备工作:所有工具通用的三个配置

在讲具体工具之前,先讲清楚每个工具双击后都会遇到的三块通用配置,官方手册称之为"基本参数""运行参数""结果显示",理解它们后面就一通百通。

3.1 基本参数:图像输入与 ROI

  • 图像输入:选择本工具处理的是哪一路图像,从下拉栏选择上游模块即可。
  • ROI 区域(感兴趣区域) :设置后,工具只处理 ROI 内的图像 。ROI 有两种创建方式:
    • 绘制:全选(整幅图)、矩形、圆形,部分模块还支持最多 32 个顶点的多边形;
    • 继承:继承前面模块输出的特征区域(圆/矩形参数),典型用法是继承位置修正后的 ROI,让检测框自动跟随工件。

注意 ROI 自带方向:把 ROI 看作一个坐标系,箭头方向为 X 轴正向,"从上到下""从左到右"查找都以此为准。

3.2 屏蔽区:让 ROI 里的干扰物"隐形"

ROI 内如果有固定的干扰特征(Logo、刻字、螺丝孔、油污、丝印),可以在基本参数里设置屏蔽区。官方手册原文:

屏蔽区:自定义最多 32 个顶点的多边形屏蔽区,屏蔽区的图像不会被处理。

使用要点:

  • 点 ROI 工具栏的屏蔽区按钮,在图上逐点单击画多边形、双击闭合,可重复画多个;
  • 屏蔽区是"挖洞",只跳过多边形内部,其余区域照常处理;
  • 开启位置修正后,屏蔽区会随 ROI 一起平移、旋转;
  • 屏蔽区不要画大盖住真实目标,否则会漏检。

3.3 结果显示:图形、文字与 OK/NG

每个工具的结果显示包含四部分:

  • 结果判断:对输出结果设阈值,比如圆半径范围,超限时模块状态变 NG(轮廓变红色);
  • 图像显示:是否在图像上渲染图形(线、圆、匹配框等),可设 OK/NG 颜色;
  • 文本显示 :把结果以文字渲染到图像图层,可设置内容、颜色、字号、透明度、位置 X/Y;
  • 前项显示:是否把上游模块的图形与文字一起显示------这是理解 VM 图层叠加机制的关键,后面会专门讲。

四、核心常用工具

4.1 图像源:每个方案的起点

图像源模块决定图像从哪来,支持三种来源:

  • 本地图像:加载单张图片或整个文件夹,调参阶段最常用,支持自动切换下一张;
  • 相机:直连海康工业相机,可设置触发、取图间隔;
  • SDK:通过 SDK 接口喂入图像数据。

常用参数:像素格式(Mono8、Mono10、Mono12、RGB24、YUV、Bayer 等)、取图间隔(ms)、触发设置。

小提示:学习阶段建议先用本地图像把方案调通,再切换到相机,能排掉大部分"取图"和"算法"互相干扰的问题。

4.2 特征匹配:最核心的定位工具

特征匹配使用图像的边缘特征 做模板,在图中搜索与模板相似的目标,输出位置、角度、缩放和匹配分数,可用于定位、计数、判断有无。

它分两种模式,选型时按精度和速度取舍:

对比项 高精度匹配 快速匹配
特征精细度 特征点密集、模板精细 特征点相对稀疏
精度 高 略低
耗时 较久 快
适用场景 定位精度要求高、目标复杂 高速产线、粗定位、计数

使用流程:

  1. 双击模块,框选建模区域(矩形、圆形或多边形),点击"生成模型/训练模型";
  2. 设置运行参数:匹配个数(期望找到的目标数,范围 1~200)、匹配分数(相似度阈值,太低会误检,太高会漏检)、角度范围(默认 -180°~180°)、尺度范围(默认 1.0~1.0,即不允许缩放);
  3. 运行后输出匹配点坐标、角度和分数,供后续模块订阅。

其中"特征尺度"控制边缘点密度(范围 1~20,值越小点越密),"对比度阈值"控制边缘稳定性(范围 1~255,越大越严苛)。

4.3 位置修正:让检测框跟着工件走

工件在产线上位置和角度都会变,固定 ROI 会错位。位置修正(Fixture)专门解决这个问题。

它以特征匹配的基准点、基准框 建立参照,运行时用运行点、运行框算出当前图像相对基准的像素偏移和角度偏移,让后续所有 ROI 自动跟随:

  • 基准点/基准框:创建基准时匹配点、匹配框的位置;
  • 运行点/运行框:每张图实际匹配到的位置;
  • 两者相减得到平移量,框的角度差得到旋转量。

两种修正方式:按点修正 (直接传入点)和按坐标修正(传入 x、y 坐标)。标准用法是:特征匹配 → 位置修正 → 后续检测模块(ROI 选择继承位置修正)。

4.4 BLOB 分析:数个数、找污点

BLOB 分析在灰度图像中检测、定位和分析目标连通块,输出目标的存在性、数量、位置、形状、方向、面积以及 Blob 之间的拓扑关系。

使用时需要先对目标做二值化(也可以直接配置阈值方式):

阈值方式 检出的目标灰度范围
单阈值 - 暗于背景 0, 低阈值-1
单阈值 - 亮于背景 低阈值, 255
双阈值(高阈值 > 低阈值) 低阈值, 高阈值
双阈值(低阈值 > 高阈值) 0, 高阈值 与 低阈值, 255 两段

典型场景:颗粒计数、孔位有无、印刷污点、面积判定。配合图像处理中的二值化、形态学(腐蚀/膨胀/开闭运算)使用,效果更稳定。

4.5 卡尺工具:测宽度、测间距

卡尺工具用于测量目标对象的宽度、边缘位置、边缘对间距。它需要操作者明确给出大致测量区域,通过选择边缘模式完成定位:

  • 单边缘:检测区域内的边缘位置,可用于定位、计数、判断有无;
  • 边缘对:检测一对边缘之间的间距。

两个关键参数:

  • 滤波尺寸:增强边缘、抑制噪声,边缘模糊或有噪点时适当调大;但边缘挨得太近时调大会丢边缘,需按实际情况设置;
  • 边缘阈值(梯度阈值):范围 0~255,只有梯度超过该值的边缘点才会被检出,值越大越抗噪但边缘越少。

4.6 圆查找与直线查找:拟合几何特征

  • 圆查找:在扇环 ROI 内先检测出多个边缘点,再拟合成圆,输出圆心坐标和半径,用于圆孔定位、圆形基准测量;
  • 直线查找:在条状 ROI 内查找特征点集合并拟合成直线,边缘类型可选"最强"(取梯度最大的边缘点集合)、"最后一条"等,用于引脚共线、工件边线定位。

它们的输出(圆、直线)通常订阅给测量模块做进一步计算,是测量链路的"前端"。

4.7 测量工具:把几何特征变成尺寸数字

定位工具给出的是几何特征,测量工具负责算距离、角度:

  • 线圆测量:返回直线与圆的垂直距离和交点坐标,数据来源支持"订阅"(圆查找+直线查找)或"绘制";
  • 线线、圆圆测量:线线夹角/距离、圆圆心距等;
  • 点圆、点线、点点测量:点到圆、点到线、点到点的距离与角度,点和线都可以订阅上游模块的输出;
  • 圆拟合与直线拟合:对多点做几何拟合;
  • 亮度测量、像素统计、直方图:做灰度类判定。

测量模块的典型接法:圆查找/直线查找 → 测量模块(订阅方式输入),模块会自动把结果渲染成测量线和数值文字。

4.8 识别工具:读码与 OCR

工具 支持内容 说明
二维码识别 QR 码、DataMatrix 码 一次可识别多个,不确定码型时建议两个开关都打开
条码识别 CODE39、CODE128、库德巴、EAN、交替 25、CODE93 容忍任意角度旋转和一定倾斜;设"条码个数"控制期望输出数
字符识别(OCR) 标签上的字符文本 需要先做字符训练,拖入模块后按向导设置字符提取框、训练字符库

对于复杂背景、低对比度、变形的字符,手册建议改用深度学习模块(DL 字符识别、DL 单字符识别)。

4.9 N 点标定:像素与物理世界的换算

要让视觉结果引导机械手,必须先做标定,确定相机坐标系与机械臂世界坐标系之间的转换关系。

N 点标定通过 N 组"像素坐标 + 物理坐标"计算转换关系并生成标定文件,要求 N ≥ 4。常见方式:

  • 上相机抓取:相机固定,移动标定板/工件取点;
  • 下相机对位:机械臂带动相机按设定方向移动,每次移动触发取图,同步标定。

标定后配合"标定转换"把像素坐标换算为物理坐标,配合"单位转换"做长度单位换算。

4.10 逻辑工具:让方案会判断、会算数

条件检测:输出 OK/NG

条件检测判断输入数据是否满足条件,满足显示 OK,否则显示 NG。

  • 判断方式:任意 (对所有条件做逻辑或)、全部(逻辑与);
  • 条件类型:int / float,只能绑定对应类型的数据;
  • 条件本身订阅前面模块的模块状态或结果输出(如半径、个数、匹配分数)。

条件检测之后常接分支模块,把 OK、NG 引到不同处理路径。

格式化:把结果拼成字符串

格式化工具把多个数据整合成字符串输出:既可以订阅上游模块的结果,也可以在输入区直接输入固定文字,通信输出前通常用它整理数据。它支持分隔符、数组下标(输入 * 输出全部数组结果)、结束符(\r、\n、\r\n)。

脚本:内置 C# 处理复杂逻辑

脚本模块支持 C# 脚本(.cs,可导入导出,可用 Visual Studio 附加调试),Init() 只在首次运行时执行一次,Process() 每次运行执行。常用接口分四类:

类别 接口 用途
取模块结果 CurrentProcess.GetModule("模块名").GetValue("参数名") 读取上游模块输出
设模块参数 CurrentProcess.GetModule("模块名").SetValue("参数名", 值) 改写运行参数
输出自定义结果 SetFloatValue(key, value) / SetStringValue(key, value) 把计算结果输出为模块结果
全局变量 GlobalVariableModule.SetValue/GetValue 跨流程共享数据
通信发送 GlobalCommunicateModule.GetDevice(id).SendData(...) TCP/UDP/串口/PLC 发数据

下面是一个常见例子:把点点测量输出的角度统一加 180°,并输出为数值与文本结果。

csharp 复制代码
// 脚本模块:角度偏移 180° 并输出
// 注意:GetValue 的参数名请以自己模块"模块结果"里显示的名称为准
public int Process()
{
    float angle = 0f;

    // 1. 获取上游点点测量模块的角度(模块名与参数名按实际修改)
    object obj = CurrentProcess.GetModule("点点测量1").GetValue("Angle");
    if (obj != null)
    {
        angle = Convert.ToSingle(obj);
    }

    // 2. 角度加 180°,并归一化到 0~360
    angle = angle + 180.0f;
    if (angle >= 360.0f)
    {
        angle -= 360.0f;
    }

    // 3. 输出自定义结果:数值供后续模块订阅,字符串直接用于显示
    SetFloatValue("AngleNew", angle);
    SetStringValue("AngleText", "角度:" + angle.ToString("f3"));

    return 0;
}

编译成功后,脚本模块的"模块结果"中就会出现 AngleNew 和 AngleText,格式化、条件检测、通信模块都可以订阅。

4.11 输出图像:查看与保存

输出图像模块对全局图像或处理后的图像进行输出和存储,常用配置:

  • 输入源:选方案中图像源或任意模块处理后的图像;
  • 存图使能:关闭时仅输出显示,打开后可同时存图;
  • 保存渲染图/保存原图:渲染图包含匹配框、测量线、文字等叠加结果;
  • 渲染参数:设置图像上渲染文本的内容、颜色、字号、位置 X/Y;
  • 前项存储:开启后可以保存前面模块的图形和文字结果(例如包含圆查找结果与文字的图像);
  • 图形倍率类型:注意"原图尺寸"模式下界面字体在存图中可能偏小,可选"界面尺寸"或"自定义倍率"。

4.12 把结果文字显示到图像图层

这是初学者高频疑问:脚本或格式化算出的文字怎么显示在图上?

VM 的图形和文字沿数据流向下游叠加,每个模块只渲染自己的结果,通过"前项显示"把上游画面带过来。所以标准做法是:

  1. 脚本用 SetFloatValue / SetStringValue 输出结果;
  2. 后面接一个格式化模块(或直接在脚本模块上配置),在结果显示 → 文本显示中打开开关,文本内容订阅输出结果,设置字号、颜色、位置;
  3. 确认下游模块的"前项显示"开启,上游的测量线会和这行字一起显示;
  4. 输出图像模块的输入源选最下游模块,最终画面就是"图形 + 文字"。

如果上游模块自己已经有一行旧文字,去它的"文本显示"关掉或调整位置即可,避免重复。

五、典型方案怎么串

有了这些工具,一个完整方案的标准链路如下。

【插图 3:VisionMaster 典型视觉方案流程图】 (发布时在此插入图片 02-典型方案流程图.png)

以一个圆盘零件的检测为例:

  1. 图像源载入本地图或连接相机;
  2. 特征匹配找到圆盘的基准位置和角度(粗定位);
  3. 位置修正建立跟随基准,后续 ROI 自动跟随;
  4. 在修正后的 ROI 上并行做:圆查找 找中心孔、卡尺工具 测槽宽、BLOB 分析 数加强筋、二维码识别读追溯码;
  5. 点点测量计算圆心到槽的距离和角度;
  6. 条件检测按尺寸范围判断,OK 放行、NG 剔除;
  7. 格式化 把结果拼成字符串,文本显示到图像上,并通过发送数据上传 PLC;
  8. 输出图像保存带渲染结果的图片。

这条链路的工具替换性很强:把卡尺换成缺陷检测就是外观检测,把圆查找换成字符识别就是标签检测,骨架基本不变。

六、常见坑与建议

  1. ROI 方向搞反:ROI 是带坐标系的,查找方向(从上到下/从左到右)以 ROI 箭头为 X 轴正向,旋转 ROI 后方向感会变化,调"边缘类型"前先确认 ROI 方向。
  2. 匹配分数阈值两难:阈值太高容易漏检,太低容易误检;先用样本图扫一遍,把最差点的分数留 10% 左右余量。
  3. 高精度匹配滥用:粗定位、计数场景用快速匹配即可,高精度匹配更耗时,产线节拍紧张时尤其明显。
  4. BLOB 前忘记预处理:噪点多时先二值化,再用形态学开运算去小噪点、闭运算填小孔,计数结果会稳定很多。
  5. 位置修正后 ROI 仍画死:修正之后的检测模块 ROI 要选"继承"位置修正,否则跟随不生效。
  6. 滤波尺寸盲目调大:卡尺、边缘查找的滤波尺寸能抗噪,但边缘间距小时会丢边缘,遵循"能小不大"。
  7. 脚本结果没输出 :脚本里算出的值不调用 SetFloatValue/SetStringValue,其他模块订阅不到;参数名要与"模块结果"里显示的一致。
  8. 文字想"贴回"上游模块:图层只能向下游叠加,不能回贴。要在最终画面同时看到上游图形和新文字,把文字写在下游模块并开启前项显示。
  9. 存图文字太小:输出图像选"原图尺寸"时字体按界面尺寸渲染,高清图上会显小,改"界面尺寸"或"自定义倍率"。
  10. 找不到帮助文档 :VM 随软件自带完整中文手册,安装目录下 Help\CH\HIKVisionMasterHelp.chm,软件内按 F1 即可打开,每个工具的参数都有说明。

七、小结

  1. VisionMaster 是图形化机器视觉平台,方案由流程组成,流程由工具连线组成,工具统一遵循"拖入 → 连线 → 双击配参"。
  2. 工具箱 12 类中,初学者优先掌握图像采集、定位、测量、识别、逻辑工具、标定,本文覆盖的 10 个左右工具可以应付大部分常规项目。
  3. 通用机制有三条:ROI 限定处理范围(屏蔽区挖洞) 、位置修正让 ROI 跟随工件 、结果显示与前项显示控制图形文字的图层叠加。
  4. 复杂计算交给脚本(C#,用 SetXxxValue 输出结果),结果整理交给格式化,最终判定交给条件检测,对外输出交给通信与输出图像。
  5. 学 VM 最快的方式是拿一组本地图,按"图像源 → 匹配 → 修正 → 检测 → 判定 → 输出"完整走一遍,参数对照 F1 手册逐项调,比看十遍教程都管用。
相关推荐
Robert--cao1 小时前
MoE 机器人强化学习原理详解:如何用专家混合表示和 RoboGauge 提升四足机器人 Sim-to-Real 可靠性
机器人
Pocker_Spades_A1 小时前
论文精读(十五):自主机器人多智能体软件架构及伴随行为机制:从Structure-in-5看启元机器人控制软件架构设计方法论
大数据·机器人
ychqsq2 小时前
233.绽放
经验分享·职场和发展
禁默2 小时前
从“动作社区“到“技能商店“:机器人应用生态走到哪一步了
人工智能·机器人
Me是狗头3 小时前
化学实验室 HTML(联网可用)
经验分享·青少年编程·html5
xwz小王子3 小时前
Science Robotics 会定车、翘头、前空翻的自行车机器人
机器人
Pocker_Spades_A3 小时前
论文精读(九):结构交互驱动的机器人深度强化学习控制方法:从关节协同到启元灵犀X2的底层运动控制
机器人·交互
guohuang3 小时前
让机器人安全失败:点云中断、TF 超时和控制器崩溃怎么测
git·安全·机器人
Factory_Audit4 小时前
TE范围证书中的具体信息
经验分享