目录
本文参考visionpro官方文档——PatMax Software,加上自己的理解。
visionpro是一款机器视觉软件,集成了很多工具,本文介绍一下识别定位工具——PMAlign tool。
1、概述
和其他的模板定位技术一样,PMAlign首先训练一个模板,然后在其他图片中定位与该模板相匹配的部分。当然,和其他模板定位技术不同的是,PMAlign不是基于像素而是基于特征进行模板匹配的,这样可以更加快速和准确地实现模板匹配。而基于像素的一个明显的缺点是:如果图像发生了移动、旋转或者缩放,那么这种方法将不再准确和有效。
基于像素:我们都知道,在手机、电脑中显示的图片都是由很多像素组成的,那么很显然,如果图片中的图案发生移动、旋转或者缩放,各位置的像素值会发生变化,像素量也可能会增多或者减少。
基于特征:根据图案的几何特征,如边、角、曲线。
通过上面的描述,清楚了要使用PMAlign进行识别定位,第一步就是要获取一个包含目标的几何特征的模板。PMAlign有两种路径来获取模板:图片训练、形状训练。
图片训练
如图,我们对图片中框选的部分进行训练,得到包含图案几何特征的模板。
形状训练
Shape training:The process of training a PatMax pattern using one or more shape model objects.
形状训练也就是使用一个或多个形状模型训练模板的过程。
如图,使用建模器添加一段轮廓,训练模板。使用模板识别其他图片,就可以显示匹配到的形状模型了。
PMAlign支持两种模板匹配算法,PatMax和PatQuick,相比于PatQuick,PatMax精度更高,但是需要更多的运行时间。
什么是模板?
PMAlign抽取图片中用户感兴趣的物体得到模板Pattern,模板由一系列的几何特征Features以及各几何特征之间的空间关系组成,每一个Feature又由很多点组成,这些点位于像素值不同的两个区域边界上,也就是说点的两边的像素值差别较大,这样的点包含物体重要的几何特征。
关于图片训练和形状训练的区别,我这里说一下自己的理解,形状训练与图片训练相比少了一个找特征的过程,形状训练的特征由人给出,而图片训练的特征是PMAlign将图像中像素值差异较大地方的点连在一起形成的。当然这个理解不知道对不对,等我以后学了更多再回来验证。
2、PMAlign工作原理
2.1 模板(Pattern)
2.1.1 模板特征(Pattern Features)
组成模板的特征有大有小,PMAlign的策略是:使用大特征在运行图片中快速找到近似的模板匹配,使用小特征精确确定模板位置。
PMAlign能检测到多大的特征取决于设置的特征粒度。特征粒度设置得大,就只能检测到大的特征;特征粒度设置得小,就可以同时检测到大的特征和小的特征。
如图,当粗糙粒度设置为1时,图案的特征能较好的拟合。
当粗糙粒度设置为20时,拟合效果差很多。
特征粒度有粗糙粒度和精细粒度,粗糙粒度大于或等于精细粒度,粗糙粒度和精细粒度是最大和最小的特征粒度,在训练模板时,PMAlign会在粗糙粒度和精细粒度之间自动地选取一系列最优的特征粒度。
2.1.2 模板极性(Pattern Polarity)
模板特征由一系列的特征边界点组成,每个边界点有它的位置和方向,边界点的方向垂直于边界线,且由像素值小的一边指向像素值大的一边,即 dark-to-light。
每个边界点还有极性。
如图,对于训练模板来说,深色的图案处于浅色的背景中,那么同样的左侧的三张图片也是深色的图案处于浅色的背景中,我们就说它们是极性相同的;而右侧的三张图片是浅色的图案处于深色的背景中,我们就说它们是极性不同的。
如图,如果我们勾选了“忽略极性”,那么PMAlign可以找到与训练模板极性不同的对象,而如果我们没有勾选“忽略极性”,那么PMAlign就只能找到与训练模板极性相同的对象。
在形状训练时,如果我们没有勾选“忽略极性”的话,所有形状的极性必须被定义;而如果形状的极性不确定的话,只能选择勾选“忽略极性”。
忽略极性的运行速度会比考虑极性慢大概10%,这是因为在考虑极性的情况下,PMAlign可以根据极性不同直接排除掉一些图片,而忽略极性导致PMAlign需要做更多的工作。
2.1.3 模板掩膜(Pattern Masking)
当使用图片训练模板时,可以使用掩膜排除掉我们不想考虑在内的特征。
比如我们只想通过零件的外轮廓来进行模板匹配,那么我们就可以将其他部分作掩膜处理。
模板掩膜不支持形状训练,因为你在形状描述中可以选择只描述自己关注的特征,因此没有必要再通过掩膜把不想要的特征覆盖掉。
模板掩膜使用于输入图片中存在杂波像素的情况,这些杂波会干扰模板匹配;而在形状训练中,模型是理想的,并不存在干扰因素,因此就不需要掩膜。
以下是官方文档中的一段话,暂时不能理解是什么意思,先放在这里。
The mask image is interpreted as follows:
- All pixels in the training image that correspond to pixels in the mask image with values greater than or equal to 192 are considered care pixels. All feature boundary points detected within care pixels are included in the trained pattern.
- All pixels in the training image that correspond to pixels in the mask image with values from 0 through 63 are considered don’t care but score pixels. Feature boundary points detected within don’t care but score pixels are not included in the trained pattern. When the trained pattern is located in a run-time image, features within the don’t care but score part of the trained pattern are treated as clutter features.
- All pixels in the training image that correspond to pixels in the mask image with values from 64 through 127 are considered don’t care and don’t score pixels. Feature boundary points detected within don’t care and don’t score pixels are not included in the trained pattern. When the trained pattern is located in a run-time image, features within the don’t care and don’t score part of the trained pattern are ignored and not treated as clutter features.
- Mask pixel values from 128 through 191 are reserved for future use by Cognex.
Note: If you use the PatQuick algorithm (which does not consider clutter pixels), then mask image pixel values from 0 through 63 are treated the same as mask image pixel values from 64 through 127.
标签:PMAlign,极性,visionpro,特征,粒度,工具,pixels,模板 From: https://blog.csdn.net/sc_1313/article/details/142351930