PMAlign模板匹配工具

news2024/11/23 15:08:55

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. 在控件中按下抓取训练图像按钮
    在这里插入图片描述

  2. 选择图像显示Current.TrainImage

  3. 移动矩形框放置目标区域

  4. 选择标签页 训练区域与原点

  5. 单击中心原点

在这里插入图片描述

  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. 其他的综合因素。
    二、 图像:主要有输入图像 训练图像 和 最后输出图像
    三、 选择模板区域的方式有两种:
  4. 直接框选,在区域训练和原点里面直接加选择图像框选想要匹配的对象(适合背景干扰较少的图像)
  5. 是区域掩膜(适合背景有干扰的图像),在框选区域里面再筛选不需要的部分进行掩膜,增加准确度。如下图所示,掩膜内部黑色框后,搜索只会找外部白色大框但是不淹膜的这些地方都会去搜索。
    四、 搜索区域
    五、 各种运行参数
    主要有限制匹配得分、角度范围、缩放范围等
  6. 查找概数:指定结果总数,可能有时一个图里面要匹配出多个模板,这个概述就要改变。
  7. 接受阈值:指定结果分数的接受阈值。仅接受分数大于或等于此值的结果
  8. 计分时考虑杂斑:仅适用于Patmax,如果选中,背景噪音以及杂点会拉低得分,否则得分会忽略背景干扰而升高
  9. 角度和缩放上下限制:尽量不使用标称值改变,而用上下限制决定搜索对象的可接受范围,角度尽量不要调整的过大。
    https://blog.csdn.net/qq_41036272/article/details/119237948

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1597807.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Java怎么获取今天最早的时间

今天在实现项目里的一个功能的时候,需要获取今天最早的时间,比如今天是2024-4-15,则今天的开始时间为2024-4-14日24点之后(2024-4-15零点)的那个时间点。 这篇文章就分享一下博主获取这个时间的方法: 很简…

github上的软件许可证是什么?如何合并本地的分支德语难学还是俄语更加难学?站在一个中国人的立场上,德语难学还是俄语更加难学?俄语跟德语有什么样的显著差别?

目录 github上的软件许可证是什么? 如何合并本地的分支 德语难学还是俄语更加难学? 站在一个中国人的立场上,德语难学还是俄语更加难学? 俄语跟德语有什么样的显著差别? github上的软件许可证是什么? …

【软考】设计模式之命令模式

目录 1. 说明2. 应用场景3. 结构图4. 构成5. 优缺点5.1 优点5.2 缺点 6. 适用性7.java示例 1. 说明 1.命令模式(Command Pattern)是一种数据驱动的设计模式。2.属于行为型模式。3.请求以命令的形式被封装在对象中,并传递给调用对象。4.调用对…

华为ensp中nat server 公网访问内网服务器

作者主页:点击! ENSP专栏:点击! 创作时间:2024年4月15日17点30分 NAT服务器是一种在网络边界设备上配置的服务,它允许外部网络的用户访问内部网络中的服务或主机,同时隐藏了内部网络的真实IP地…

操作系统(1)计算机存储结构

文章目录 一、计算机存储结构1、基本概念2、计算机存储结构的组成部分3、局部性原理4、高速缓存4.1、基本概念4.2、工作原理4.3、层次结构4.4、对系统性能的影响4.5、一致性问题 5、寄存器5.1,种类5.2,特点5.3、作用5.4、寄存器与缓存的差异 前言 计算机…

# RAG | Langchain # Langchain RAG:打造Markdown文件的结构化分割解决方案

【文章简介】 在信息技术的现代背景下,高效地处理和分析文本数据对于知识获取和决策支持至关重要。Markdown文件因其易读性和高效性,在文档编写和知识共享中占据了重要地位。然而,传统的文本处理方法往往忽视了Markdown的结构化特性&#xff…

数据结构与算法——23.哈希冲突及其解决方法

这篇文章我们主要讲一下哈希冲突及其解决方法。 目录 1.哈希冲突的介绍 2.解决哈希冲突的方法 2.1 开放地址法 2.1.1 线性探测法 2.1.2 平方探测法(二次探测法) 2.2再哈希法 2.3链地址法 2.4建立公共溢出区 3.总结 1.哈希冲突的介绍 首先&…

dcoker+nginx解决前端本地开发跨域

步骤 docker 拉取nginx镜像跑容器 并配置数据卷nginx.conf nginx.conf文件配置 这里展示server server {listen 80;listen [::]:80;server_name localhost;#access_log /var/log/nginx/host.access.log main;location / {# 当我们访问127.0.0.1:8028就会跳转到ht…

【JavaWeb】Day45.Mybatis——入门程序

什么是MyBatis? MyBatis是一款优秀的持久层框架,用于简化JDBC的开发。 (持久层:指的是就是数据访问层(dao),是用来操作数据库的。) (框架:是一个半成品软件,是一套可重用的、通用…

【深度剖析】曾经让人无法理解的事件循环,前端学习路线

先自我介绍一下,小编浙江大学毕业,去过华为、字节跳动等大厂,目前阿里P7 深知大多数程序员,想要提升技能,往往是自己摸索成长,但自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞…

【深入理解Java IO流0x0A】NIO实战-网络聊天室

本篇博客将进行NIO编程实战,实现一个简单聊天室。 我们来通过 SocketChannel 和 ServerSocketChannel 实现一个 0.1 版的聊天室,先说一下需求,比较简单,服务端启动监听客户端请求,当客户端向服务器端发送信息后&#x…

【深入理解】width 的默认值,2024年最新面试复盘

先自我介绍一下,小编浙江大学毕业,去过华为、字节跳动等大厂,目前阿里P7 深知大多数程序员,想要提升技能,往往是自己摸索成长,但自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞…

“华为杯“华南理工大学程序设计竞赛 L-再一道好题

题目 #include<bits/stdc.h> using namespace std; #define int long long #define pb push_back #define fi first #define se second const int maxn 1e6 5; const int inf 1e9 5;using namespace std;int n, m;void solve(){int res 0;int q;string s;int k;cin …

【软考】UML中的图之类图

目录 1. 说明2. 图示3. 类图使用方式3.1 对系统的词汇建模3.2 对简单的协作建模3.3 对逻辑数据库模式建模 1. 说明 1.类图&#xff08;Class Diagram&#xff09;展现了一组对象、接口、协作和它们之间的关系。2.在面向对象系统的建模中所建立的最常见的图是类图。3.类图给出系…

【浪漫 罗盘时钟 Js、css实现(附源代码) 美化版本】,前端面试必问的HashMap

先自我介绍一下&#xff0c;小编浙江大学毕业&#xff0c;去过华为、字节跳动等大厂&#xff0c;目前阿里P7 深知大多数程序员&#xff0c;想要提升技能&#xff0c;往往是自己摸索成长&#xff0c;但自己不成体系的自学效果低效又漫长&#xff0c;而且极易碰到天花板技术停滞…

LeetCode 11.盛最多谁的容器

目录 题目描述 方法一 双指针 思路&#xff1a; 代码&#xff1a; 题目描述 给定一个长度为 n 的整数数组 height 。有 n 条垂线&#xff0c;第 i 条线的两个端点是 (i, 0) 和 (i, height[i]) 。 找出其中的两条线&#xff0c;使得它们与 x 轴共同构成的容器可以容纳最多的…

Python学习笔记(37)——用xlwings库生成excel

老规矩先pip入xlwings库 STEP1:下载xlwings库 windowsr>>cmd>>pip install xlwings (如果需要不同版本可以到pypi上搜&#xff09; STEP2:完成EXCEL初级创建 请打开您的编写软件~~~~~&#xff08;小编的显示结果为PYCHARM编写的&#xff0c;因为颜色标注好看(…

最优算法100例之49-链表环-计算环的长度

专栏主页:计算机专业基础知识总结(适用于期末复习考研刷题求职面试)系列文章https://blog.csdn.net/seeker1994/category_12585732.html 题目描述 定义两个指针,一个指针走两步,一个指针走一步,第一次相遇时开始计数,第二次相遇时停止计数,最后计数器的值就是环的长度…

用 LLaMA-Factory 在魔搭微调千问

今天在魔搭上把千问调优跑通了&#xff0c;训练模型现在在 Mac 还不支持&#xff0c;需要用 N 卡才可以&#xff0c;只能弄个N 卡的机器&#xff0c;或者买个云服务器。魔搭可以用几十个小时&#xff0c;但是不太稳定&#xff0c;有的时候会自动停止。 注册账号 直接手机号注…

康耐视visionpro-CoglntersectLineLineTool操作说明工具详细说明

◆CogIntersectLineLineTool功能说明&#xff1a; 创建两条线的交点 备注&#xff1a;在“Geometry-Intersection”选项中的所有工具都是创建两个图形的交点工具&#xff0c;其中包括圆与圆的交点、线与圆的交点、线与线的交点、线与圆的交点等&#xff0c;工具使用的方法相似。…