VisionPro---PatMaxTool工具使用

CogPMAlignTool

PatMax是一种图案位置搜索技术(识别+定位),PatMax图案不依赖于像素格栅,是基于边缘特征的模板匹配而不是基于像素的模板匹配,支持图像中特征的旋转与缩放,边缘特征表示图像中不同区域间界限的轮廓线(有大小有方向),特征是表示图像中不同区域之间界限的等高线,基于特征的表现可以比像素格栅表现更快捷和更准确地进行转化。

亚像素,面阵相机的成像面以像素为最小单位,实际上,相机在拍摄时,对图像进行了离散化处理,如果两个像素之间有5.2微米的距离,宏观上可以看做是连在一起的,但是微观上,它们之间还有无限更小的东西存在,这个更小的东西就是亚像素。亚像素精度是指相邻两像素之间的细分情况,输入值通常为二分之一,三分之一,四分之一。这意味着每个像素将被分为更小的单元从而对这些更小的单元实施插值算法。如果选择四分之一,就相当于每个像素在横向和纵向上都被当做四个像素来计算。比如在测量中,如位置、直线、圆等,都会出现亚像素。如测量某个圆的直径为100.12像素,这个后面的0.12就是亚像素。

PatMax进行图像训练时,它不仅会考虑训练区域中包含的所有特征,还可能会考虑训练区域之外的一些特征。所以如果训练窗口靠近图像边缘,则可能检测不到比粗粒度限制更接近图像边缘的特征,所以尽量让训练区域在图像中央。

PatMax从物体的图像中提取模式。PatMax模式是几何特征和这些特征之间的空间关系的集合,每个特征是两个不同像素值区域之间边界上点的集合。

模式特征

PatMax模式是特征的集合。个体特征被定义为不同像素区域之间的连续边界。这些区域可以有不同的强度、对比度或纹理,开放的或者闭环的。

模式特征的极性

PatMax模式特征由特征边界点的有序列表表示。特征边界点有位置和与相邻边界点连接的角度,特征边界点的角度是指图像坐标系与通过特征边界点绘制的垂直于特征边界的暗到明方向的直线间的夹角。

定位过程

PatMax使用不同大小的特征作为图像中定位所需的特征。一般情况下,PatMax使用大特征快速找到运行时图像中的近似模式匹配,使用小特征精确确定模式位置。

1 训练参数

1.1 算法模式

PatQuick:速度最快,对于三维或者低质量元件最佳,承受更多图像差异,例子:捡放。

PatMax:精确度最高,在二维元件上表现佳,最适合于细微细节,例子:薄片对齐。

PatQuick与PatMax:速度跟精度介于两者之间。

PatMax-高灵敏度:适用于对比度很低或者视频噪音或图像变形严重的图像,运行速度非常慢。

透视PatMax:查找已经历透视失真的二维特征。

PatFlex:为高度灵活的图案设计,在弯曲不平的表面上表现较佳,极其灵活,但不够精确,例子:标签定位。

设置训练参数下的算法模式为PatFlex,训练平整状态下的图片。

可以识别有畸变的图像。

1.2 保存模式和加载模式

这两个模式是分别用来保存和加载训练图片的参数。

1.3 训练模式

带转换的形状模型主要用于建模。

带图形的形状模型用于普通训练、掩模。

1.4 忽略极性

训练图像的边缘特征是有极性的,即由明到暗,或者由暗到明。图案极性在沿边界的每个点上定义为向黑色的方向。默认状态下,PatMax只查找与受训图案具有相同极性的图案。

勾选训练参数下的忽略极性,训练图片。

可以识别两个相似的特征。

不勾选训练参数下的忽略极性,训练图片。只能识别灰度变化方向一样的特征。

1.5 弹性

弹性,在查找与原来的受训图案存在一些几何形状变化的元件时很有用途,用来指定允许PatMax忍受非线性几何变化的程度,影响匹配的准确度,弹性以像素为单位进行测量,通常为0到8,越高,允许图像出现的差异越大,匹配的准确度越低。设置弹性数值为0。

识别准确度较高,不能识别出这种差异较大的图片。

弹性常数改为7后,识别的准确度降低,可以识别出这种差异较大的特征。

1.6 特征粒度限制

粒度表示PatMax在图像中探测到哪些特征。

使得粒度更粗糙(更高):提高速度,降低精确度,探测粗糙并且减弱精细特征(可能是好的也可能是坏的)。

使得粒度更精细(更低):降低速度,提高线性精确度,探测精细并且减弱粗糙特征 (可能是好的也可能是坏的)。

在图形中训练特征下勾选显示粗糙和显示精细,就可以查看训练图像的粗糙和精细特征。

在训练参数下的特征粒度限制中,勾选自动选择,系统会默认自动计算出图像特征中的粗糙和精细的比例值。

如果不勾选自动选择,可以手动设置。当修改训练参数时,需要重新训练图像,注意手动设置时,粗糙颗粒度数默认大于精细颗粒度数,颗粒度数最大可以改为25.5,把粗糙颗粒度改为7,精细颗粒度改为7,重新训练图像,可以发现特征点数会变少,所以精细颗粒度数越大,特征点数越少。PMA匹配的最高精度可以达到四十分之一个像素。

图中,黄色线为粗糙特征,绿色线为精细特征。

当对匹配精度要求很高时,可以把精细调成最小,这样在训练图形中精细特征就会变多,适当降低粗糙参数,粗糙特征就会减弱。

当图像中的特征比较明显或者对匹配精度要求不高,提高算法速度时,可以适当调大精细参数,这样在训练图形中精细特征就会减少,调大粗糙参数,粗糙特征就会增多,训练时,就可以提高算法速度。

1.7 自动边缘阈值

边缘阈值,定义了形成精细特征的条件,当两端灰度值的差达到边缘阈值时,就会形成这些特征,勾选自动边缘阈值,默认为10。

不勾选自动边缘阈值,就可以手动设置这个参数,把边缘阈值设置50,将精细特征形成的条件提高了,即当两端灰度差值大于50,才会形成精细特征,所以精细特征减少了。

2 训练区域与原点

训练时,训练区域和坐标原点如图所示。

点击训练区域与原点中的适应图像和中心原点,系统会自动将图像框起来,坐标原点放在图像中央。

也可以手动设置X、Y、旋转和倾斜这些数值,来设置框的大小、位置和坐标原点的位置。要维持最高的精确度,原点必须放置图案区域的中心。

3 运行参数

3.1 查找概数

查找概数默认为1,即图像中允许查找目标的最大个数为1,也就是用户希望查找的最大个数。

图中查找概数为1,却能查找到4个圆。从结果中可以看到这四个圆的分数都是一样的,即相似程度都是1,系统不能找到最大结果,所以把四个结果都列出来,供用户选择

3.2 粗糙度接受阈值和接受阈值参数

接受阀值是PatMax用来确定匹配是否代表搜索图像之中模型的一个有效实例的分值(介于0和1.0之间)。提高接近值会减少搜索所需要的时间。

接受阈值是和结果中的分数相关,默认是0.5,即当分数大于0.5时,特征就会被识别出来。查找这个图形的结果中分数为0.58,大于0.5,所以能被识别。

设置接受阈值为0.7,这个特征就不会被识别了,因为它的相似程度为0.58,小于0.7。接受阈值越高,筛掉的不好的匹配结果就越多,匹配精度越高。

同理,粗糙度度接受阈值法,和查找结果中的粗糙分数相对应。

3.3 计分时考虑杂斑

计分时,不考虑杂斑,这两个图的得分是一样的;考虑杂斑的话,有横线的这个三角形得分就会变低。

不勾选计分时考虑杂斑,训练后识别出来的特征得分为1。

勾选计分时考虑杂斑,训练后识别出来的特征得分降低。结果得分中就考虑了杂斑的干扰。

3.4 超时

超时,如果勾选上的话,也就是整个工具的运行时间,要在这个时间范围内运行结束,否则这个程序会直接结束。

3.5 角度

选择训练图像

如图所示,如果角度参数为默认值即0,特征的识别不支持旋转。

设置了角度参数后,即特征在正负180度内旋转时,特征都可以被识别。

结果对比

设置角度参数前后对比,识别同一张图片,设置了角度变化识别的时间更长,这是因为查找的范围变大 。

3.6 缩放

训练识别图中的圆,缩放参数默认为1。

只能识别和他一样大小的圆。

修改缩放参数0.5到2后,也可以识别缩小的圆。

X缩放和Y缩放这两个参数设置后,可以识别在X或Y方向上有缩放的特征。

3.7 使用模式粒度限制

运行参数中的模式粒度和训练参数中的特征粒度含义相同,不过它的针对对象是输入图像,而不是训练模板。图中粗糙为5,精细为1;与粗糙为8,精细为8对比。可以看出越大,匹配特征越多。

3.8 对比度阈值

对比度阈值就是背景和目标图像的灰度值的差值。

3.9 XY重叠

XY重叠,默认为0.8,就是进行匹配时对当前输入图像可能有多个匹配结果,当同一目标的匹配结果有多个时,多个结果之间会有相互重叠的特征,那重叠度超过80%,会选择多个结果中得分高的结果输出。

3.10 自动边缘阈值

运行参数中的自动边缘阈值和训练参数中的自动边缘阈值是相同。

4 结果

分数,结果特征与训练图案特征的匹配程度是多少,就是目标图像与训练模板的相似度;X、Y和角度指所谓的定位,当前目标图像的位置,参考坐标是原始图像的原始坐标;拟合误差,拟合误差越大,匹配出来的准确程度也会受到影响;杂斑是除了训练模板中的特征,目标图像中还有其他训练图像没有的特征;粗糙分数对应运行参数中的粗糙度接受阈值法。

5 掩模和建模

5.1 掩模

使用条件,比如只想要这个图中的外围边的特征,不想要中间这些圆孔的特征,这时候就需要掩膜。

打开上面菜单中的掩膜器,使用工具对不想要的特征进行掩膜,也就是覆盖上红色。

应用之后,训练图像,就会发现被红色遮挡的部分的特征就不会被提取出来了。

查看运行结果,勾选图形中诊断下的显示匹配特征,可以看出输入图像中中间区域没有匹配特征。匹配特征中绿色线表示匹配度良好,黄色线表示匹配度一般,红色线表示匹配度较差。绿色线越多,匹配程度越好,结果得分越高。

5.2 建模

需要将训练参数中的训练模式改为带图像的形状模型才可以使用建模器。

打开建模器,提取特征轮廓,建模完成后,要想训练模板,还需要修改训练区域与原点中的训练区域下的区域模式修改为像素配对限定框,勾选训练参数中的忽略极性,这样才可以进行训练。

训练完成后,查看运行结果,只在建模区域中进行匹配。

在建模器中可以设置每条轮廓或线段的权重,双击线段,设置权重为10,即这一段线段所占比重是其他区域的10倍,所以建模时,可以把关键且数量较少的特征的权重变大。训练后,如果输入图形的这一条线段没有匹配上,那么对其结果得分会有很大影响,即得分会很低。

6补充

  1. 报错信息

训练模式下报错字符串信息

字符串消息

含义

10000,包含太少的特征

没有检测到足够的特征来训练一个可靠的模式,检查训练的特征显示。

10001,特征粒度难以选择

检查训练的特性显示。选择自动配置特性粒度时,才会返回此消息。

10100,模式可能没有预期的准确,因为训练模式显得模糊

PatMax训练了一个模式,但由于模式是模糊的,可能会降低对齐结果的准确性。只有使用PatMax训练模式时,才会返回此结果

10101,模式可能没有预期的准确,无法可靠地测量自由度

经过训练的模式在指示的自由度方面可能是模糊的

10102,模式退化,结果可能会不稳定,因为在粗粒度限制下,所有的特征边界点都具有相同的方向

在粗粒度限制下,所有的特征边界点具有相同的方向,检查训练的特征显示。

10200,由于精细特征主导,模式运行缓慢

因为模式中大量的小特征,对齐可能需要更多时间。尝试手动指定更大的粗粒度值

   运行模式下报错字符串信息

字符串消息

含义

20300,N个结果由于对比度阈值而丢失

因为对比度阈值低于指定的对比度阈值,故PatMax丢弃了一个或多个结果,可以降低对比度阈值来查看这些结果。

20301,N个结果由于接近较强的结果而被丢弃。

由于有更高的得分结果,所以PatMax丢弃了得分低的结果,可以增加查找概数或者接受阈值来显示这些结果。此消息中的分数值是近似的,因为在计算最终得分之前,结果被排除在处理之外了。

20302,N个结果由于杂斑影响而被丢弃

由于有太多杂斑丢弃了多个结果,可以设置忽略杂斑来查看所有丢弃的结果。

2.减小匹配时间的方法

减小匹配时间的方法:缩小运行参数中的角度,缩放的范围,提高接受阈值;匹配算法选择PatQuick;特征粒度的粗糙和精细调高,不勾选显示匹配特征。

在图形里面可以选择是否勾选显示匹配特征,勾选的话会在输出图像中显示找到的粗糙与精细特征绘制的图形。

勾选后会极大增加运行时间,在具体项目实施的时候建议取消勾选。

           

              勾选                                                                    未勾选

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

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

相关文章

zookeeper+kafka+ELK+filebeat集群

目录 一、zookeeper概述: 1、zookeeper工作机制: 2、zookeeper主要作用: 3、zookeeper特性: 4、zookeeper的应用场景: 5、领导者和追随者:zookeeper的选举机制 二、zookeeper安装部署: 三…

基于SSH的员工管理系统(一)——包结构

基于SSH的员工管理系统(一)——包结构 包结构 1、整体包结构 2、action包 3、domain实体包 4、service层 5、dao层 6、util工具包 7、页面层

音视频的功耗优化

前言 在应用中,录制与音视频模块往往是高耗能的模块,设备容易发热,影响体验。 什么是功耗优化 手机有多个耗电模块, SOC(CPU,GPU,DDR),Display,Audio,Video&#xff0…

CSS3 修改滚动条样式

上图: 上代码: /* 修改垂直滚动条 */ .right-list::-webkit-scrollbar {width: 2px; /* 修改宽度 */height: 5px; /* 修改高度 */ } /* 修改滚动条轨道背景色 */ .right-list::-webkit-scrollbar-track {background-color: #f1f1f1; } /* 修改滚动条滑块…

AD使用交互式BOM插件时应该注意到的一个问题

交互式BOM脚本 插件下载:GitHub - lianlian33/InteractiveHtmlBomForAD 或:GitHub - yukaichao/InteractiveHtmlBom-plugin-for-AD 或:InteractiveHtmlBomForAD-master.zip - 蓝奏云 问题:当PCB文件中出现MARK点时,…

【ArcGIS Pro微课1000例】0043:深度学习--框架库安装

ArcGIS Pro 中的所有深度学习地理处理工具都要求安装支持的深度学习框架库。 文章目录 深度学习框架库下载深度学习框架库安装注意事项深度学习框架库下载 由于是python开发,可以采用安装包与Pip两种方式安装,本文讲解采用安装包安装。 点击深度学习框架库下载,打开网站,…

常见的线程安全问题及解决

1. 什么是线程安全 线程安全指的是当多个线程同时访问一个共享的资源时,不会出现不确定的结果。这意味着无论并发线程的调度顺序如何,程序都能够按照设计的预期来运行,而不会产生竞态条件(race condition)或其他并发问…

绘制颜色矩的直方图

# 代码5-2 绘制颜色矩的直方图 def color_moments(img, trans_hsvFalse):if trans_hsv True:img cv2.cvtColor(img, cv2.COLOR_BGR2HSV)# 颜色分割f, s, t cv2.split(img)# 创建特征存放列表color_feature []# 一阶f_mean np.mean(f)s_mean np.mean(s)t_mean np.mean(t)…

rabbitmq如何保证消息的可靠性

RabbitMQ可以通过以下方式来保证消息的可靠性: 1. 持久化消息 在发布消息时,可以设置消息的delivery mode为2,这样消息会被持久化存储在磁盘上,即使RabbitMQ服务器重启,消息也不会丢失。 2. 持久化队列 可以创建持…

wordpress路径怎么优化?wordpress伪静态怎么做?

Wordpress这个程序是动态的,在后台中设置链接的格式为朴素,就可以了,这样简单又方便,因为百度对于路径的都是一样对待的,静态路径和动态路径,都是一样的对待。 有的时候,有的人会认为动态路径不…

C#8.0本质论第十五章--支持标准查询操作的集合接口

C#8.0本质论第十五章–支持标准查询操作的集合接口 集合在C#3.0中通过称为语言集成查询(Language Integrated Query, LINQ)的一套编程API进行了大刀阔斧的改革。通过一系列扩展方法和Lambda表达式,LINQ提供了一套功能超凡的API来操纵集合。本章重点是标准查询操作符…

sql27(Leetcode1729求关注者的数量)

代码: # Write your MySQL query statement below select user_id,count(follower_id) as followers_count from Followers group by user_id order by user_id

MATLAB程序设计课后作业五

一、改写高斯积分函数 clc;clear;close all; ff(x) x*x*exp(x); s1 GaussL(ff,0,1,2);% 积分点为2点 s2 GaussL(ff,0.5,1,3); % 积分点为3点 disp(s1);disp(s2); function s GaussL(f,a,b,n) % 输入:f为待积分函数的函数句柄,a和b为积分上下限&am…

使用求2个字符串最长公共子序列的方法来实现 git diff 算法 java 实现

测试类 GitDiffTest2.java&#xff1a; import java.io.BufferedReader; import java.io.FileReader; import java.util.ArrayList; import java.util.List;public class GitDiffTest2 {private static String folder "\\xxx\\";private static List<String>…

19.C++ 中将一维数组转成多维的三种方式

文章目录 使用reinterpret_cast强制类型转换使用static_cast 欢迎访问个人网络日志&#x1f339;&#x1f339;知行空间&#x1f339;&#x1f339; 使用reinterpret_cast reinterpret_cast作用为&#xff1a;允许将任何指针转换为任何其他指针类型。 #include <iostream&…

CC2530basic_Rf串口无线收发

1初始化板 2定义无线并初始化 3接收数据发送数据 #include "hal_defs.h" #include "hal_cc8051.h" #include "hal_int.h" #include "hal_mcu.h" #include "hal_board.h" #include "hal_led.h" #include "…

Vue3为什么会推出组合式API

前言 大学前端入门学的vue2&#xff0c;工作了又用的React&#xff0c;现在想学习一下Vue3&#xff0c;开篇就介绍了组合式API&#xff0c;这和我认知里的vue2的选项式API区别还是蛮大的。本篇文章简单介绍一下组合式API。 什么是组合式API Vue 3引入了一种新的 API&#xf…

计算函数的变分是什么意思

计算函数的变分是指在变分法中寻找函数的极值。变分法是一种数学方法&#xff0c;用于求解函数或泛函的极值问题。在物理学、工程学和数学的最优化问题中&#xff0c;变分法是寻找函数使得某个泛函&#xff08;函数的函数&#xff09;达到极值的过程。 在数学上&#xff0c;泛…

vue+less+style-resources-loader 配置全局颜色变量

全局统一样式后&#xff0c;可配置vue.config.js实现全局颜色变量&#xff0c;方便在编写时使用统一风格的色彩 一、新建global.less 二、下载安装style-resources-loader npm i style-resources-loader --save-dev三、在vue.config.js中进行配置 module.exports {pluginOpt…

Python Locals:引领代码风潮,变量管理新尝试

更多资料获取 &#x1f4da; 个人网站&#xff1a;ipengtao.com 在Python中&#xff0c;locals()函数是一个强大的工具&#xff0c;它使程序员能够访问和操作当前作用域内的局部变量。本文将深入探讨locals()函数的功能、应用和重要性。 动态变量赋值和操作 locals()函数让我…