康耐视Visionpro PMAlign模板匹配工具详解

PMAlign模板匹配工具

PMAlign工具介绍:

PMAlign 编辑控件为 CogPMAlignTool,及其组件提供图形用户界面,此工具可用于训练模板,然后使用在连续的输入图像中搜索模板。可指定执行模板训练或模板搜索时要使用的 算法类型,并可选择利用图像还是利用形状模型集合创建已训练模板。输入图像内的可选搜索区域可限制模板搜索的范围。

核心算法PatMax

  • PatMaxÒ 是一种图案位置搜索技术

根据特征直接搜索并查找目标

PaxMax功能

  • 使用一个工具测量
    • 图案的位置
    • 相对于原来训练图案的尺寸
    • 相对于原来训练图案的角度
  • 空前的精确度
    • 多达1/40像素的平移
    • 多达1/50 度的旋转
    • 多达0.05%比例
  • 速度得到提高
    • 基本图案查找速度更快
    • 角度和尺寸的确定更快

PaxMax应用

  • 定位桃汁罐头上的拉环;在平移、旋转和灯光方面的差异(探测是否存在)

 

尽管类型有差异、灯光有变化、元件角度旋转、外形极其相似,也可以对引擎盖进行识别(整理和归类 )

PMAlign工具的使用

选择图像

在软件安装目录找到bracket图片

默认路径为:C:\Program Files\Cognex\VisionPro\Images

选择工具

点击扳手图标选择工具(双击/直接拖拽)

Cog是康耐视的缩写所以我们平时在说某个工具的时候

一般只说它中间的这样一个单词

PMAline工具是一个图像搜索和定位的工具

连接图像和工具

链接像源的输出图像( OutputImage )到 PMAlign的输入图像( InputImage )拖放

参数介绍

训练图案

根据图像训练的模板

对当前输入的图像进行识别和定位

PMAlign工具有三个相关的图像

要训练我们的图案,需要一个Current.TrainImage

图像

Current.InputImage将输入图像提供给PMAlign工具

Current.TrainImage包含训练图像。

LastRun.InputImage缓冲区显示该工具最近在其上运行的最后一个图像。

抓取训练图像

  1. 在控件中按下抓取训练图像按钮

  1. 选择图像显示Current.TrainImage
  2. 移动矩形框放置目标区域
  3. 选择标签页 训练区域与原点
  4. 单击中心原点

  1. 点击训练按钮训练
  2. 信息位置显示当前训练的结果显示
  3. 单击运行图标运行

InfoStrings表示图案训练是否成功它们还警告受训图案可能存在的各种问题

运行参数调整

运行之后会发现有一张图片匹配不到

原因是图片的角度不同,需要设置运行参数  角度的范围

抓取其他部位

如果需要找某个圆,需要找到合适的区域形状

 

运行参数调整

运行发现问题: 相同大小的圆可以找到,大的圆找不到

设置缩放倍数

详解

抓取训练图像

设置中心原点

训练

训练特征

精细和粗糙

PMAlign工具是一个图像搜索定位工具, 是基于图像轮廓来进行搜索定位

它使用的轮廓特征,也可以叫边缘特征

图形选项卡下:

绿色跟黄色的线是一个个离散的小线段,那它们就是我们所说的边缘特征,绿色的线比黄色的线要小,在相同的位置的话,绿色的线数量也比黄色的线要多,所以绿色的线是精细特征,黄色的线是粗糙特征,就相当于我们在画画的时候草图和精细的图,精细特征可以来勾勒出一些细节特征,而粗糙特征,只能画一个大体的样子,这个就是我们说的边缘特征

图像上不同像素区域的轮廓线叫做边缘, 是一个有大小和方向的量

大小

浮动显示下来查看

选择训练图像

工件左侧绿色的边缘特征左边灰度值是180右边的灰度值是70左右,这个时候的灰度特征之间的,这个边缘两边的灰度值的差值大概是100所以它的幅值也就是边缘的大小叫幅值,幅度的幅大概是100,

工件中间仍然是一个绿色绿色的边缘特征那这两侧的灰度方值的长值大概也就30所以它的幅值大小大概是30

方向

横坐标是x竖坐标纵坐标是y沿着x方向,左侧这个边缘特征,两边灰灰度的变化由大到,由明到暗而右侧这个边缘两边灰度的变化是由小到大也是由暗到明

这就体现了它具有方向性

特征粒度

边缘特征越多,边缘特征越多越精细,匹配的结果准确程度会越高

边缘特征越大,越少我们匹配的速度会越快,但是准确度也会变差

所以边缘特征会直接影响我们匹配的效果

取消勾选可以手动设置:

训练参数如果我们把精细改成7,会发现粗糙也变成了7,所以这里粗糙精颗粒度一定要大于等于精细,这是粗糙跟精细的设置原则

设置完成会发现这种颗粒参数的会变得个数会变少

所以就是颗粒度数的越大特征点选取的会变会越少

粗糙跟精细的特征也是有一定范围的它最大是25.5

注意:设置训练模板之后需要重新训练

Patmax算法

默认我们是Patmax

Patmax和PatQuick这两种算法呢是比较常用的算法

Patmax的定位精度会比PatQuick高但它的速度没有PatQuick快,所以这两种算法一种偏向于高精度,一种偏向于高快的速度,

而Patmax与PatQuick这个算法是综合前面两个算法的优点

Pataflex,Padmax高灵敏度,透视Patmax参考示例作业

总结:

PatMax 涉及的点数多,精度比较高,速度稍微慢。定位的精度可以为1/40像素

PatQuick 算法速度快

PatQuick与PatMax算法:处于两者中间

PatFlex算法:比较适合于畸变的情况

训练模式

默认选择图像模式即可

极性:

边缘是有方向的,如果按照从背景到目标的方向的话开查看,边缘是由暗到明,或者由明到暗他的一种极性

可以使得图案更明确些。应该使用极性,除非对象受极性变化的影响。注意下面说明的可能模糊的对象。

查看帮助文档

如果我们勾选了忽略极性就是模板的轮廓线跟这几张图片的轮廓线都是可以匹配上的

如果我们考虑极性的话

模板跟左边这个可以匹配

跟右边的就不可以匹配了

因为他们极性不同

一般不建议忽略极性

弹性:

在查找与原来的受训图案存在一些几何形状变化的元件时很有用途

用来指定允许PatMax 忍受非线性几何形状变化的程度

弹性以像素为单位进行测量,通常为0到8

在提高弹性时,PatMax 可能找到非预期的匹配- 精确降低

举例:

比如我们找一个身高一米75的人,弹性是0.那这个人的身高只能是一米75,如果是一米75.001,那也是不符合我们要求的,如果我们把弹性设置成1或者是2,也就是说我们可以接受

我们查到的结果是一米75.11米76,甚至1米74,这个结果都是我们可以接受的

所以说弹性就是允许有一定的误差

自动边缘阈值(可以适当滤除一定的边缘干扰)

自动边缘预值就是刚才跟大家提到有幅值, 幅值的大小这里大概是100

如果这里设置成10左侧这个边缘就可以出现

那中间的边缘灰度值对比度是30如果我们边缘一直勾选掉我们设置成60 再来训练中间位置,有一些特征就会被忽略掉

加载模式和保存模式

保存模板可以把当前训练的参数进行保存

如果我们复位

点击加载模式恢复默认值

角度

如果设置是0只能识别角度和训练模板一模一样的图片,不能发生角度的旋转,可以识别角度和当前模板发生角度偏移的图片,可以根据项目的具体情况设置(设置的越大查找的范围也越大),会导致运行的时间变长,匹配的概率也会增大

缩放

允许匹配的目标比模板大或者小,上限和下线

查找概数

查找概数设置的是1,但是因为得分相同,所以查找到的了4个

接受阈值

接受阈值和查找到的结果相关,如果接受阈值是0.5.表示结果里面的相似程度必须大于50%,分数大于0.5才能作为结果输出

粗糙程度接受阈值

与接受阈值相同,对应得分中粗糙分数,对应粗糙分数进行筛选

计分时考虑杂斑

如左边的三角形是训练模板,右侧两个图片得分都是98,如果不考虑杂斑.两个图形都会匹配到,如果考虑杂斑,右侧的得分就会变低

图案训练

PatMaxÒ 图案训练的总指南:

  • 选择一个有一致特征的代表性图案
    • 减少不必要的特征和图像噪音
    • 只训练重要的特征
    • 考虑遮罩,来创建代表性图案
    • 更大的图案会提供更高的精确度
    • 实际上,界点越多,精确度越高

模型原点

在PatMax定位搜索场景中模型的实例时,模型原点 可以辨别要向您报告的点

要维持最高的精确度,原点必须放置图案区域的中心

运行期间

运行参数

  • 选择运行期间算法
  • 然后规定在运行期间图像中要找到的实例数量
  • 指定接受阀值

搜索区域

区域模式:和训练页面一致

区域形状:可以选择整图搜索,也可以选择特定区域和范围

  • 默认状态,PatMax搜索整个图像寻找可能的匹配
  • 要让PatMax 只在图像的一个部分中查找,使用一个区域形状(Region Shape)
    • 通过键入值或者使用图形设置大小和位置

图形

  • 最后,选择在运行期间需要显示的图像
    • 记住图形的更新需要时间

结果

  • 结果显示在结果标签的下面
  • 如果找到多个实例,它们将按得分降序排列返回

  • 得分
    • 结果特征与训练图案特征的匹配程度是多少
  • X、Y
    • 所找到的图案相对于指定原点的位置
  • 角度
    • 所找到的图案相对于原来训练的图案的角度
    • 如果使用标称角度,这始终等于标称值
  • 比例
    • 所找到的图案的大小与原始训练图案的对比
    • 如果使用标称比例,这总是等于标称值
    • a.k.a.锁定比例
  • 比例 X、比例Y
    • 所找到的图案的大小与原始训练图案沿X和Y轴方向的对比
    • 如果使用标称比例,这总是等于标称值

训练模式

  • 图像  对图像直接进行训练
  • 带图像的形状模型  适用于建模器手动建模训练 包含模型和图像
  • 带转换的形状模型  适用于建模器手动建模训练  只包含模型,一般为加载模型   不常用该模式

掩膜训练

掩膜训练:遮住被影响的不必要的特征

工具:可以选择笔刷、笔和矩形,选择矩形时默认在图像左上角位置

1.移动矩形到遮蔽区域

2.选择掩膜图标

3.填充当前选项

4.确定

绿色部分越多,匹配的精度越高

分数低

建模训练

建模训练:模型编辑器允许您使用图像作为向导自动提取形状或者绘制您自己的形状,一般在需要训练的模型较为复杂同时特征也比较明显的情况下使用

选择带图像的形状模型,

此时建模器图标会亮起单击建模器图标

建模器界面,可以选择提取形状,自动提取也可以手动添加模型和轮廓

自动提取模型

单击训练产看结果

建模器优势

设置为10表示这段特征的比重是其他的区域的10倍数

可以把关键特征数量比较少的权重设置的比较大

总结

  • 功能介绍:训练一个图像 然后再在其他图像或者同一幅图像的其他位置去寻找该图像。在这个过程中你可以得到
  1. 图像尺寸变化
  2. 角度变化
  3. 其他的综合因素。
  • 图像:主要有输入图像 训练图像 和 最后输出图像
  • 选择模板区域的方式有两种:
  1. 直接框选,在区域训练和原点里面直接加选择图像框选想要匹配的对象(适合背景干扰较少的图像)
  2. 是区域掩膜(适合背景有干扰的图像),在框选区域里面再筛选不需要的部分进行掩膜,增加准确度。如下图所示,掩膜内部黑色框后,搜索只会找外部白色大框但是不淹膜的这些地方都会去搜索。
  • 搜索区域
  • 各种运行参数

主要有限制匹配得分、角度范围、缩放范围等

  1. 查找概数:指定结果总数,可能有时一个图里面要匹配出多个模板,这个概述就要改变。
  2. 接受阈值:指定结果分数的接受阈值。仅接受分数大于或等于此值的结果
  3. 计分时考虑杂斑:仅适用于Patmax,如果选中,背景噪音以及杂点会拉低得分,否则得分会忽略背景干扰而升高
  4. 角度和缩放上下限制:尽量不使用标称值改变,而用上下限制决定搜索对象的可接受范围,角度尽量不要调整的过大。

<think>好的,我现在需要帮助用户解决VisionPro在工件中心和旋转轴不同心时的标定问题。首先,我需要回顾一下用户之前的提问。用户之前询问了VisionPro模板匹配使用,现在转向标定问题,特别是工件中心与旋转轴不同心的情况。这可能意味着用户在实际应用中遇到了这样的问题,或者他们的项目需要处理旋转偏差的情况。 首先,我需要理解用户的具体需求。他们可能在进行机械臂引导、视觉定位或者需要高精度的旋转测量,而工件中心和旋转轴的不同心会导致定位误差。用户想知道如何在这种情况下正确标定,以消除或补偿这种偏差。 接下来,我应该回忆VisionPro的标定流程,尤其是涉及坐标转换的部分。VisionPro通常使用坐标系标定,将图像坐标映射到物理坐标。当存在旋转轴和工件中心偏差时,传统的标定方法可能无法直接应用,因为旋转会导致工件位置的变化。 我需要考虑用户可能已经知道的基础知识,比如坐标系标定的基本步骤,使用标定板或九点标定法。但在这个问题中,用户的情况更复杂,涉及到旋转中心与工件中心不一致。因此,标定不仅要考虑平移和缩放,还要考虑旋转带来的偏移。 可能的解决方案包括建立复合坐标系,或者在标定后引入旋转补偿。这里需要分步骤思考:首先进行常规标定,确定图像坐标到机械坐标的映射;然后测量旋转中心的偏移量,并在后续计算中进行补偿。 我需要验证这种方法的正确性。例如,当工件绕旋转轴转动时,其中心的位置会以旋转中心为圆心做圆周运动。因此,标定后的坐标需要根据旋转角度调整工件的实际位置。可能需要使用齐次坐标变换,结合平移和旋转矩阵。 另外,用户可能没有明确说明他们的应用场景,比如是静态测量还是动态跟踪旋转的工件。如果是动态的,可能需要实时获取旋转角度,并动态调整坐标转换参数。这可能需要集成编码器或其他角度传感器来获取实时角度数据。 还要考虑用户可能遇到的常见问题,例如如何准确测量旋转中心与工件中心的偏移量。可能需要设计特定的标定步骤,比如旋转工件多个角度,记录各位置坐标,通过几何方法计算旋转中心和偏移量。 此外,用户可能对数学公式或具体操作步骤不太熟悉,需要以简明的方式解释,避免过于专业的术语,但又要确保准确性。比如,使用坐标系变换的步骤,或者如何在VisionPro的QuickBuild中配置这些参数。 最后,需要总结最佳实践,比如推荐使用九点标定结合旋转中心补偿,或者使用VisionPro的CogCalibNPointToNPoint工具进行坐标映射,再通过CogCalibCheckerboard补充旋转参数。同时,提醒用户注意标定板的精度和机械传动的误差,这些都可能影响最终结果。 可能还需要提及验证标定结果的方法,例如在旋转后检查同一特征点的坐标是否符合预期,或者使用仿真工具进行测试。确保用户在实际应用前能够验证他们的标定是否正确。 总结来说,我需要将整个思考过程转化为结构化的步骤,涵盖标定前的准备、常规标定、测量偏移量、建立补偿模型、验证等环节,并给出具体的操作建议和注意事项,帮助用户解决实际问题。</think>在 VisionPro 中,当工件中心与旋转轴中心不同心时(即存在旋转偏心误差),需要通过标定补偿这种偏差,确保视觉系统能准确计算工件的实际位置和角度。以下是具体标定方法和步骤: --- ### **1. 问题分析** - **场景**:工件绕旋转轴(如转台或机械臂末端)旋转,但其几何中心与旋转轴中心不重合。 - **影响**:直接使用常规标定会导致工件在不同旋转角度下的坐标偏移,产生定位误差。 - **目标**:标定出旋转轴中心与工件中心的偏移量(ΔX, ΔY),并在坐标转换中动态补偿旋转角度带来的偏差。 --- ### **2. 标定核心思路** 1. **建立坐标系关系**: - **机械坐标系**:以旋转轴中心为原点(固定不动)。 - **工件坐标系**:以工件自身中心为原点(随旋转变化)。 2. **标定参数**: - **偏移量(ΔX, ΔY)**:旋转轴中心与工件中心的物理距离。 - **旋转角度(θ)**:工件当前旋转角度(需通过编码器或视觉测量获取)。 --- ### **3. 标定步骤** #### **步骤 1:常规坐标系标定(九点标定)** - **目的**:建立图像坐标系与机械坐标系的映射关系(平移、旋转、缩放)。 - **方法**: 1. 使用标定板或已知物理坐标的九点标定工具(`CogCalibCheckerboard` 或 `CogCalibNPointToNPoint`)。 2. 完成标定后,视觉系统可将图像中的像素坐标转换为机械坐标系下的坐标(基于旋转轴中心)。 #### **步骤 2:测量工件中心与旋转轴的偏移量(ΔX, ΔY)** - **方法**: 1. **静态标定法**(适用于可固定工件的场景): - 将工件固定在旋转轴上,旋转角度归零(θ=0)。 - 使用视觉工具(如 `CogFixtureTool`)测量工件中心在机械坐标系下的坐标(X₀, Y₀)。 - 偏移量即为: **ΔX = X₀ - X_旋转轴中心**(通常 X_旋转轴中心=0) **ΔY = Y₀ - Y_旋转轴中心**(通常 Y_旋转轴中心=0) 2. **动态标定法**(适用于工件已安装且无法拆卸的场景): - 旋转工件至多个角度(如 0°, 90°, 180°, 270°),记录每个角度下工件中心的机械坐标。 - 通过最小二乘法拟合圆心(旋转轴中心),计算偏移量 ΔX 和 ΔY。 #### **步骤 3:建立旋转补偿模型** - **坐标转换公式**: 当工件旋转角度 θ 时,其实际机械坐标为: ``` X_实际 = X_测量 + ΔX·cosθ - ΔY·sinθ Y_实际 = Y_测量 + ΔX·sinθ + ΔY·cosθ ``` - **X_测量/Y_测量**:通过常规标定得到的坐标(基于旋转轴中心)。 - **θ**:当前旋转角度(需通过编码器或视觉角度测量工具获取)。 #### **步骤 4:集成到 VisionPro 系统** 1. **获取旋转角度**: - 使用编码器实时读取 θ。 - 或通过 VisionPro 的 `CogAngleLineTool` 在图像中测量角度。 2. **动态补偿**: - 在脚本或逻辑中,根据上述公式修正坐标。 - 示例代码(C#): ```csharp double theta = GetEncoderAngle(); // 获取编码器角度(弧度) double X_actual = X_measured + deltaX * Math.Cos(theta) - deltaY * Math.Sin(theta); double Y_actual = Y_measured + deltaX * Math.Sin(theta) + deltaY * Math.Cos(theta); ``` --- ### **4. 关键注意事项** - **标定精度**: - 确保九点标定的精度(标定板需覆盖工作区域)。 - 测量 ΔX/ΔY 时,使用高分辨率相机和亚像素算法。 - **角度同步**: - 编码器与视觉系统的时钟需同步,避免角度与图像采集不同步。 - **机械误差**: - 旋转轴本身的径向跳动或间隙会导致误差,需在机械上尽量消除。 --- ### **5. 应用场景** - **转台定位**:半导体晶圆、齿轮等旋转工件的精准定位。 - **机械臂抓取**:工件安装在机械臂末端且存在安装偏心时。 - **圆轨迹检测**:如轴承、车轮的圆度测量。 --- ### **6. 验证方法** 1. **静态验证**: - 固定 θ=0°,检查补偿后坐标是否与物理位置一致。 2. **动态验证**: - 旋转工件至不同角度,对比补偿后的坐标与实际位置误差(应小于系统精度要求)。 --- 通过上述方法,即使工件中心与旋转轴不同心,VisionPro 仍可实现高精度定位。若需进一步简化流程,可使用 VisionPro 的 `CogTransform2DLinear` 工具或自定义坐标系映射插件。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值