VisionMaster 两级位置修正实战:塑料外壳与金属件装配角度检测

VisionMaster 两级位置修正实战:塑料外壳与金属件装配角度检测

拍合影时找一个人,你不会先在整张照片里找他的眼睛------一定是先找到他这个人(整体定位),再在他的脸上找眼睛(局部定位)。机器视觉里也有同样的场景:工件由塑料外壳和中间金属件装配而成,外壳在图像里位置是随机的,金属件相对外壳又存在装配偏转。本文用一个实际方案演示 VisionMaster 中**两级位置修正(级联 Fixture)**的搭建方法,第一次修正"找外壳的边",第二次修正"找金属件的边",最终稳定测得两条边的夹角。适合已经会基本拖拽模块、但对"位置修正为什么要用两次"感到困惑的初学者。

一、检测需求与方案分析

被测物是一个马蹄形(U 形)塑料外壳,中间装有一个金属件,需要检测的是:金属件的边与塑料外壳的边之间的夹角,用来判断金属件相对外壳的装配角度。

观察图像可以发现两个层面的"位置不确定":

  1. 整体位姿随机:工件每次放到相机下,塑料外壳在图像中的平移和旋转都不固定;
  2. 局部装配偏差:金属件装在外壳里,两者之间存在间隙,金属件相对外壳还会有一定的相对偏转。

这正是只用一次位置修正会失败的原因:一次修正能把外壳"摆正",但金属件相对外壳的偏转依然存在,金属件上的检测 ROI 依然会错位。

【插图 1:实际方案与检测结果】

二、先回顾:位置修正(Fixture)解决什么问题

VisionMaster 的位置修正模块是一个辅助定位工具,它根据模板匹配的基准点、基准框 和运行时的运行点、运行框,计算当前图像相对基准的像素偏移和角度偏移,让后续 ROI 区域能跟着目标一起平移和旋转。

四个关键概念:

  • 基准点、基准框:创建基准时匹配点、匹配框的位置;
  • 运行点、运行框:每张图实际匹配到的匹配点、匹配框;
  • 基准点与运行点的差值给出像素偏移 ,基准框与运行框的角度差给出角度偏移;
  • 修正方式有两种:按点修正 (直接传入点)和按坐标修正(传入 x、y 坐标)。

使用时,下游模块的 ROI 要选择继承位置修正(或在基本参数中勾选"位置修正"并选择修正源),跟随才会生效。

三、为什么一次位置修正不够

把两条边分开看:

检测对象 基准边 这条边跟随谁运动 需要的坐标系
塑料外壳 36 直线查找2 找到的外壳边 跟随外壳整体平移、旋转 外壳坐标系
中间金属件 35 直线查找1 找到的金属件边 既跟随外壳整体,又随金属件装配偏转 金属件坐标系

如果只做一次外壳级修正:

  • 找外壳边的 ROI 是稳的,因为外壳被摆正了;
  • 找金属件边的 ROI 不稳------金属件相对外壳还在"自由转动",固定 ROI 会偏出金属件的边。

解决思路是级联两次位置修正:

  1. 第一级:匹配外壳整体,修正掉工件在图像中的随机位姿,建立外壳坐标系;
  2. 第二级:在外壳坐标系里再匹配金属件,修正掉金属件相对外壳的装配偏转,建立金属件坐标系。

这样坐标系一层套一层:图像坐标系 → 外壳坐标系 → 金属件坐标系。外壳边在第一级坐标系里查,金属件边在第二级坐标系里查,两条边各自稳定,夹角测量结果才不会随工件摆放位置跳动。

四、方案总览

整个方案只用 8 个模块,流程如下图(模块编号与软件中实际编号一致,方便对照)。

【插图 2:方案流程图】

模块链路如下:

text 复制代码
32 图像源
  └─ 33 快速匹配3(匹配外壳,粗定位)
       └─ 34 位置修正2(第一级,外壳坐标系)
            ├─ 36 直线查找2(找外壳基准边)──────────────┐
            └─ 38 快速匹配4(匹配金属件)                  │
                 └─ 39 位置修正3(第二级,金属件坐标系)    │
                      └─ 35 直线查找1(找金属件基准边)─────┤
                                                           └─ 37 线线测量1(夹角、距离、交点)

五、逐步搭建

第 1 步:32 图像源

拖入图像源模块,调参阶段选择"本地图像"加载工件图片,联机后再切换到相机。确认像素格式与相机一致(本案例为 Mono8 灰度图)。

第 2 步:33 快速匹配3------匹配外壳整体轮廓

  • 建模对象:塑料外壳的整体轮廓(马蹄形外轮廓),用矩形建模区域框住整个工件;
  • 模式选择快速匹配:粗定位场景目标数量固定、节拍优先,快速匹配即可;
  • 运行参数参考:
参数 建议设置 说明
匹配个数 1 图中只有一个工件
匹配分数 0.6 左右起步,按样本微调 太低误检,太高漏检
角度范围 -180°~180°(或按上料方向收窄) 工件允许的旋转范围
尺度范围 1.0~1.0 物距固定,不允许缩放

第 3 步:34 位置修正2------第一级修正

  • 匹配模块订阅 33 快速匹配3 的匹配点、匹配框;
  • 先在标准位置"创建基准",把这张图的匹配点/框记为基准点、基准框;
  • 该模块输出的是"外壳坐标系",后续所有 ROI 都相对它定位。

第 4 步:36 直线查找2------找外壳基准边

这是第一级修正下的第一条支路。

  • 在塑料外壳的直边特征上画条状 ROI(ROI 大致垂直于被测边);
  • ROI 选择继承 34 位置修正2,使查找框跟随外壳;
  • 边缘类型按边的方向选(如"最强",取梯度最大的边缘点集合),边缘模糊时适当调大滤波尺寸;
  • 模块输出一条直线,作为外壳基准边。

第 5 步:38 快速匹配4------匹配中间金属件

这是第一级修正下的第二条支路,也是第二级修正的起点。

  • 建模对象:中间金属件的特征(金属件内部的稳定轮廓),注意它的 ROI 同样要继承 34 位置修正2------先在外壳坐标系中把金属件"框住",再在框内做匹配;
  • 这一步匹配的是金属件相对外壳的局部位置,匹配结果仍然输出匹配点、角度;
  • 匹配分数建议略高于外壳匹配(金属件特征小、背景复杂),保证第二级修正的精度。

第 6 步:39 位置修正3------第二级修正

  • 匹配模块订阅 38 快速匹配4 的结果;
  • 在金属件处于标准装配角度的图上创建基准;
  • 这个修正建立在第一级修正之上,输出的是"金属件坐标系"------它同时消除了整体位姿和装配偏转两级误差。

第 7 步:35 直线查找1------找金属件基准边

  • ROI 画在金属件的待测边上,继承 39 位置修正3;
  • 这样无论工件怎么摆、金属件怎么装配偏转,ROI 都会通过两级转换精确落在金属件的边上;
  • 输出金属件基准边。

第 8 步:37 线线测量1------计算两条边的夹角

数据来源选订阅,分别订阅 36 直线查找2 与 35 直线查找1 的两条直线。模块输出三个结果:

输出结果 含义(官方手册)
夹角 两条直线的角度差值
绝对距离 两条线的距离绝对值;按线段四个端点到另一条直线的距离取平均计算
交点 X / Y 两条直线延长线的交点坐标

本案例的实测结果:夹角 119.308°、绝对距离 91.441、交点 (1700.135, 1026.152)。

六、两级修正的原理图示

下图把三帧"坐标系"并排展示:左图原始图中外壳倾斜、金属件还存在装配偏转;中间图第一级修正后外壳转正、外壳边稳定,但金属件相对外壳仍偏转;右图第二级修正后金属件也转正,两条边都在各自稳定的坐标系中,此时测得的夹角就是产品本身的设计夹角,不再受工件摆放和装配偏差干扰。

【插图 3:两级位置修正原理示意图】

这里要特别区分两种"角度":

  • 被修正掉的角度:工件整体的随机旋转、金属件相对外壳的随机装配偏转,它们是干扰项,由两次匹配+修正消除;
  • 被测量的角度:金属件边与外壳边在产品设计上的夹角(本例 119.308°),这是要输出的测量值。

修正的作用是让测量可重复:同一产品无论怎么摆放,测得的夹角应基本一致。

七、搭建要点与常见坑

  1. ROI 继承链不能断:38 快速匹配4 和 36 直线查找2 必须继承 34 位置修正2;35 直线查找1 必须继承 39 位置修正3。漏掉任意一级,跟随就会失效。
  2. 第二级匹配要在第一级坐标系内进行:金属件的匹配 ROI 本身要跟随外壳,否则工件摆偏后金属件可能根本不在 ROI 里。
  3. 建模基准要一致:第一级用外壳上最稳定、最不易变形的整体轮廓建模;第二级用金属件上的强特征建模,不要把外壳的边误纳入金属件模板。
  4. 基准图要选标准姿态:两次位置修正创建基准时,都应选工件姿态端正、金属件装配到位的"标准图",基准选错会把固定偏差带入每次测量。
  5. 匹配分数分级设置:第二级匹配的目标特征小、精度要求高,分数阈值通常比第一级更严格,否则第二级修正是建立在错误的匹配点上。
  6. 两条直线查找的 ROI 方向要一致:ROI 箭头方向决定查找方向(从上到下/从左到右),两条边的 ROI 建议按各自边缘方向统一规划,避免找到相邻的伪边缘。
  7. 夹角逐帧跳动时优先查第二级:如果结果在小范围内跳动,先看 38 匹配是否稳定、金属件边是否被正确找到;第二级不稳是两级方案最常见的问题源头。
  8. 本质是"先粗后精、逐级分解":遇到包含活动部件、装配件、分层结构的产品(外壳+内件、底座+转轴、支架+滑块),都可以套用这种"整体匹配 → 局部匹配"的两级甚至多级修正思路。

八、小结

  1. 塑料外壳 + 金属件的角度检测存在两级误差:工件整体随机位姿、金属件相对外壳的装配偏转,一次位置修正只能消除第一级。
  2. 标准链路是:快速匹配外壳 → 位置修正(外壳坐标系)→ 快速匹配金属件 → 位置修正(金属件坐标系),外壳边和金属件边分别在对应坐标系中查找。
  3. 两条直线汇入线线测量,输出夹角、绝对距离、交点坐标;本案例稳定测得夹角 119.308°。
  4. 位置修正的核心是"ROI 继承",级联修正的关键是让第二级匹配的 ROI 跑在第一级坐标系里,形成坐标系嵌套。
  5. 这套"整体定位 → 局部定位 → 特征测量"的套路不局限于本题,所有带装配关系、活动部件的视觉检测都可以复用。
相关推荐
拜小白2 小时前
【论文解读】PanoSwin:为全景理解打造的“全景版“ Swin Transformer
深度学习·计算机视觉·全景图
kyle~2 小时前
系统设计 --- 基于运动相位的时间域稳像设计
计算机视觉·机器人·传感器
上海广测检测科技有限公司3 小时前
无线鼠标出口欧盟CE认证准备要点:RED指令下的射频、安全与电池义务梳理
经验分享·安全
小羊没烦恼!3 小时前
C#综合揭秘——Entity Framework 并发处理详解
java·开发语言·前端·javascript·数据库·mysql·c#
芯片智造4 小时前
镀液中Fe³⁺积累会造成什么后果?
经验分享
淡海水4 小时前
05-02-源码-Boehm GC标记阶段
算法·unity·c#·游戏引擎·gc
信可维4 小时前
AI 读 Word 表格总读错?先查合并单元格和表头这 3 处
开发语言·人工智能·c#·word·软件工程
FPGA信号处理4 小时前
【雷达原理与系统】第四节课:雷达波形与脉冲压缩
人工智能·计算机视觉·目标跟踪
燃烧的枫5 小时前
Windows 下 YOLO26 的 TensorRT C++ 部署
人工智能·pytorch·windows·计算机视觉·tensorrt·cuda·yolo26