跳转到内容
STAGING SERVER
DEVELOPMENT SERVER

Template Matching vTool#

Template Matching vTool 允许您检测图像中的对象。使用训练模板,根据像素的灰度值信息进行检测。

它最适合检测边缘模糊或边界不清晰的对象。Basler 建议将其用于小型对象,因为比较像素的灰度值信息会占用大量的处理时间和 Memory。

Template Matching vTool 通过图像输入引脚接受图像,并通过输出引脚输出找到的匹配项的相关信息。

它还输出对齐转换数据,允许 Image Alignment vTool 将输入图像与匹配期间使用的参考图像对齐。这使得 Measurements vTools 可以测量与参考图像不同位置的对象。

如果您使用 ROI Creator vTool 指定感兴趣区域,则 Template Matching vTool 会通过其 Roi 输入引脚接受 ROI 数据。在这种情况下,只有当匹配模型的默认参考点位于感兴趣区域内时,才能找到对象。

感兴趣区域可用于聚焦于该特定区域中的对象,以消除潜在的错误候选项,或减少处理时间。

Template Matching vTool 的区域输出还可用作具有 ROI 输入引脚的 vTools 的 ROI 输入。有关更多信息,请参阅 ROI Creator vTool 主题。

您可以使用 Calibration vTool 提供的转换数据,以米为单位输出世界坐标中的匹配位置(Positions_m 输出引脚变为可用)。为此,请在匹配之前使用 Calibration vTool 并连接两个 vTools 的转换输出/输入引脚。

若要购买 Template Matching vTool 的许可,请访问 Basler 网站。

Template Matching Basic vTool

Template Matching 版本#

有两个版本的 Template Matching vTool 可用。下表显示了版本之间的差异。单击表标题中的版本可直接跳转到本主题中的相关部分。

Starter Basic
您如何定义自己的模板? 在所需对象周围拟合一个矩形。 使用画笔工具描绘所需对象的轮廓。
您可以指定超时时间吗? 无 是
您可以定义参考点吗? 无 是
是否可以检测到与所训练的对象不同角度的对象? 无 是
ROI 输入引脚的有效数据类型 RectangleF RectangleF、RectangleF 数组、区域、区域数组
支持哪些 Pixel Format 作为输入? 8 位单色或彩色图像 8 位至 16 位单色或彩色图像
购买许可证 包含在 pylon Software Suite 中 访问 Basler 网站

运作原理#

通过定义模板并将其应用于输入图像,您可以收集有关匹配项的以下信息:

  • 匹配得分
  • 位置
  • 方向
  • 具有匹配项可视化的区域

模板定义#

Template Matching 的第一步是根据您的应用要检测的对象的代表性图像来训练模型。

在此训练图像中,标记所需区域并进行训练。您的应用使用此模型在您的生产环境中检测该对象。

仅检测图像中完全可见的对象。这意味着模板图像中标记的区域必须完全位于搜索图像中。因此,请确保在标记所需对象时做到非常精确,并尽可能使用最小的笔。

对象的大小必须与训练模型中的对象完全相同,并且与相机的距离相同。

Template Matching 直接基于模型和搜索图像的灰度值信息。Template Matching 使用标准化互相关算法。

信息

  • 选择具有代表性的图像作为模板。
  • 在模板图像中标记所需对象的区域后,请选择具有对象特征且通常出现在搜索图像中的区域。

使用参考点#

Template Matching Basic vTool 允许您在标记的对象中显示一个参考点。默认情况下,参考点位于对象的重心处。对于大多数应用而言,这种方式效果很好。

信息

如果您使用感兴趣区域,则默认参考点必须位于感兴趣区域内。

但是,如果需要,您可以将参考点移动到其他位置。机器人提货应用程序就是一个例子。在这种情况下,视觉系统必须考虑机器人的抓手和要拾取的物体的形状来确定机器人的抓握位置。在这里,您可以相应地放置参考点,以适应这两个方面。

要显示参考点,必须先在训练图像中标记模板区域。

模型设置#

若要检测与所教导模型中的对象具有不同方向的对象,您可以定义目标角度并添加允许对象偏离目标角度的允许容差值。此功能仅在 vTool 的 Basic 版本中提供。

执行设置#

  • Matches: 如果应用程序中只能出现有限数量的对象,您可能希望将可能的匹配数限制为恰好此数目。这将提高处理速度和稳健性。
  • Score:系统会为每个匹配项计算一个评分值。此评分为模型中的区域与搜索图像中匹配的区域之间的相关系数。
    若要找到最佳的 Score 设置,请从适中的值开始并运行一些 Test Images。观察 Scores pin 的输出值。为了可靠地找到匹配项,务必将 Score 选项的值设置为低于 Scores pin 输出的评分。这是最佳实践,建议预留一定的容差。
    请选择介于在 Test Images 上确定的最低评分值的 50–80% 之间的评分值。如果评分设置得过低,也可能会检测到一些不需要的匹配项。在这种情况下,请重新调整评分值,直到仅在 Test Images 中找到目标对象。
    如果图像中有多个匹配项,系统会按其评分降序对其进行排序。
  • 超时:对于时间要求严格的应用程序,您可以指定超时时间。超时时间有助于处理时间变化或无法预见的情况,例如,如果图像不包含所训练的对象。通过指定超时时间,检测过程会在指定的超时时间后停止并继续下一个图像。
    Basler 建议将超时时间设置为略低于所需的时间限制。这是因为 vTool 不会立即停止检测过程。因此,将超时时间设置为所需时间限制的 70%–80%。

输出设置#

对齐变换#

如果要输出对齐变换数据,可以在两个选项之间进行选择:

  • Single value:这仅输出第一个匹配项的对齐变换数据。在这种情况下,输出 pin 名称为 AlignmentTf。
  • Array:这会将所有找到的匹配项的对齐变换数据作为数组输出。在这种情况下,输出 pin 名称为 AlignmentTfs。

信息

在此功能引入之前创建的 Recipe 仍然可以使用。如果您加载此类 Recipe,对齐变换输出将设置为 Single value。如果需要,您可以更改此设置。

位置输出#

在该 vTool 的 Basic 版本中,您可以选择是输出匹配对象位置的绝对坐标还是相对坐标:

  • Absolute 意味着坐标参考图像坐标系的原点 (0,0)。区域像素的坐标也基于原点。
  • Relative 意味着坐标相对于参考点。区域像素的坐标会做相应转换。

使用校准#

匹配项的结果位置也可以米为单位输出到世界坐标中。为此,将 Calibration vTool 的转换输出引脚连接到 Template Matching vTool 的转换输入引脚。

必须使用与实际处理相同的校准配置来设置 Template Matching vTool。

信息

  • 三维世界空间中,产生二维图像的对象的表面必须至少或多或少位于空间中的同一平面上。如果是这样的话,由于物体在世界中的不同位置和图像中的边缘而造成的透视失真的影响可以忽略不计。
  • 由于光学设置,广角镜头会引入显著的透视失真。对于这些镜头,检查对象的高度应相对于对象到相机的距离较低。或者,如果无法忽略对象高度,则在模板图像中选择一个相同高度级别的区域。
  • 在校准设置过程中,通过将校准板的表面放在对象的平面上来注册该平面。

故障排除#

提示

以下是可能会出现的问题列表:

  • 教导过程耗时较长
  • vTool 的执行时间非常长
  • Recipe 非常大

如果您遇到上述任何情况,请考虑以下优化措施:

  • 如果您要搜索的对象是对称的(例如矩形或圆形),或者预计对象仅出现在某个特定位置范围内,请限制检测角度。
  • 如果您要搜索的对象具有清晰的边缘,请考虑改用 Geometric Pattern Matching vTool。该算法检测边缘而不是图像部件,从而加快处理速度并节省内存。
  • 如果图像的分辨率非常高,请尝试使用 Image Transformer vTool 对图像进行降采样,然后再搜索模板。

常见用例#

  • 对象 Counting:在这种情况下,只有 Scores 输出引脚上的元素数量是相关的。
  • 在 image coordinates 中 Locating 物体:使用 Positions_px 和 Angles_rad 输出引脚进行后续处理。
  • 在 world coordinates 中 Locating 物体:使用 Positions_m 和 Angles_rad 输出引脚将物体位置之类的数据传送给机器人以抓取物体。

Template Matching Starter#

如果要检测位于不同方向的对象,请启用旋转复选框。启用此选项后,模型设置区域中的选项变为可用。使用这些选项,您可以定义目标角度和允许对象偏离目标角度的公差。使用增量选项,您可以指定逐步进行检测。选择较大的增量可以加快处理速度,即加快检测速度。

您可以指定要在图像中检测的对象数量,也可以搜索无限数量的对象。将匹配项数量限制为预期数量可以使处理更快、更稳健。

通过调整分数值,您可以指定对象与所训练对象的匹配程度。

Template Matching Starter 使用边界框来标记具有所需对象的区域。在加载图像时,系统会自动显示一个矩形。将其放在所需目标对象周围,并根据需要调整其大小。为此,您可以使用矩形手柄或在矩形设置区域中手动输入所需的值。

配置 vTool#

要配置 Template Matching Starter vTool:

Template Matching Starter vTool 设置

  1. 在 vTool 设置区域的配方管理窗格中,单击打开设置或双击 vTool。
    Template Matching Starter 对话框即打开。
  2. 拍摄或打开训练图像。
    您可以使用单拍按钮来拍摄实时图像,或单击打开图像按钮以打开现有图像。
  3. 在矩形设置区域中,调整矩形的位置和大小,使其适合要用作模板的对象。
  4. 通过点击工具栏上的 Teach 按钮来教导匹配模型。
  5. 如果需要,请调整 Execution Settings 区域中的 Matches 设置以将匹配数限制为最大值。
  6. 如有必要,请调整 Score 设置,以便仅找到目标对象。
  7. 指定是要为单个匹配项还是为找到的所有匹配项输出对齐变换数据。

您可以在引脚数据视图中查看 Template Matching 的结果。在这里,您可以选择要显示的输出。

Template Matching Basic#

如果您想检测不同方向的对象,请使用 Model Settings 区域中的选项。利用这些选项,您可以定义目标角度以及允许对象偏离目标角度的容差。

您可以指定要在图像中检测的对象数量,也可以搜索无限数量的对象。将匹配项数量限制为预期数量可以使处理更快、更稳健。

通过调整分数值,您可以指定对象与所训练对象的匹配程度。

对于时间要求严格的应用程序,您可以指定超时时间。超时时间有助于处理时间变化或无法预见的情况,例如,如果图像不包含所训练的对象。

配置 vTool#

配置 Template Matching Basic vTool:

Template Matching Basic vTool 设置

  1. 在 vTool 设置区域的配方管理窗格中,单击打开设置或双击 vTool。
    Template Matching Basic 对话框即打开。
  2. 拍摄或打开训练图像。
    您可以使用单拍按钮来拍摄实时图像,或单击打开图像按钮以打开现有图像。
  3. 使用笔在图像中标记所需的区域。
    要纠正绘图,您可以使用橡皮擦或将其完全删除。
  4. 通过点击工具栏上的 Teach 按钮来教导匹配模型。
  5. 如果需要,通过单击显示参考点来显示参考点。
    参考点显示在模板区域的中心,手动设置参考点按钮变为可用。您现在可以将参考点拖动到所需位置。如果您再次单击手动设置参考点,参考点将跳回其默认位置。
  6. 如果需要,可在 Model Settings 区域中定义旋转角度和公差。
  7. 如果需要,请调整 Execution Settings 区域中的 Matches 设置以将匹配数限制为最大值。
  8. 如有必要,请调整 Score 设置,以便仅找到目标对象。
  9. 如果要指定超时,请清除 No timeout 复选框并在输入字段中输入所需的超时。
  10. 指定是要为单个匹配项还是为找到的所有匹配项输出对齐变换数据。

您可以在引脚数据视图中查看 Template Matching 的结果。在这里,您可以选择要显示的输出。

输入#

图像#

直接从 Camera vTool 或从输出图像的 vTool(例如 Image Format Converter vTool)接受图像。

  • 数据类型:图像
  • 图像格式:8 位至 16 位单色或彩色图像。彩色图像会在内部转换为单色图像。Starter 版本支持 Pixel Format。

ROI#

从 ROI Creator vTool 或任何其他可输出区域或矩形的 vTool 中接受感兴趣区域。多个矩形或区域在内部合并以形成单个感兴趣区域。Starter 版本仅接受 RectangleF。

  • 数据类型:RectangleF、RectangleF 数组、区域、区域数组

转型#

接受来自 Calibration vTool 的转换数据。

  • 数据类型:转换数据

输出#

得分#

按降序返回匹配得分。

  • 数据类型:浮点数组

Positions_px#

返回图像坐标(行/列)中匹配项的位置。

  • 数据类型:PointF 数组

Positions_m#

以米为单位返回世界坐标中匹配项的位置 (x/y)。

  • 数据类型:PointF 数组

Angles_rad#

以弧度为单位返回匹配项的方向。

  • 数据类型:浮点数组

区域#

为找到的每个匹配项返回一个区域。

  • 数据类型:区域数组

AlignmentTf#

返回 Image Alignment vTool 用于将输入图像中的对象与匹配期间使用的参考对象进行对齐的变换数据。alignment transformation output 设置为 Single value。

  • 数据类型:转换数据

AlignmentTfs#

返回 Image Alignment vTool 用于将输入图像中的对象与匹配期间使用的参考对象进行对齐的变换数据。alignment transformation output 设置为 Array。

  • 数据类型:Transformation Data Array

典型前置项#

典型后置项#