什么是模板匹配呢?简单而言,就是在图像中寻找目标图像(模板),或者说,就是在图像中寻找与模板图像相似部分的一种图像处理技术。依赖于选择的方法不同,模板匹配可以处理各种情形下的变换,如照明、杂点、大小、位置以及旋转,甚至模版内部的相对移动。
模版匹配的鲁棒性和灵活性都很高,而且很多参数可以自适应生成,只有极少的参数需要配置。
在Halcon中,提供了各种不同的匹配方法。不同方法的选择依赖于图像数据以及要解决的任务。
匹配的流程
Acquire Images
对于训练和匹配,首先必须先有图像。
Create(Train) Model
为了生成一个模板,首先在训练图像中,必须指定包含模板的ROI区域。仅仅这些区域是重要的和稳定的,应该被用来训练。训练算子的输入是裁剪后的图像(可以使用reduce_domain完成)和控制参数。输出是模型句柄。模型将用来立即搜索图像。
Find Model
一旦创建好(或者读入)了模型,立即可以用于定位图像中的目标。
如果一个或者多个目标被发现,他们的姿势(位置position、旋转rotation、缩放scaling)或者
2D仿射变换矩阵和分数(score)被返回。这些值可以被作为下一步的处理。如对齐ROI。
Destroy Model
当我们不需要匹配模型时,你应该销毁它。比如,对于shape-based 匹配,可以使用
clear_shape_model来销毁。
各种匹配方法简介
匹配方法 | 使用范围 |
---|---|
Gray Value-based Matching | 要求照明不变的,内部灰度值和模板相同,应用极少 |
Correlation-based Matching | 不变性体现在:散焦、轻微的形变,线性光源,可以很好地处理纹理。 ,仅仅可以处理灰度图像,不支持杂点、遮挡、缩放、非线性照明变换、以及多通道图像 |
shape-based Matching | 可以处理杂点、遮挡、缩放、非线性照明变换、散焦以及轻微的变形,可以处理多通道图像,也可以一次处理多个模型。但是对于纹理支持不好 。 |
Component-based Matching | 模板内部各个部分可以相对移动。可以处理杂点、遮挡、缩放、非线性照明变换,可以处理多通道图像,也可以一次处理多个模型。但是对于纹理支持不好,且不能支持散焦以及变形。 |
Local deformable Matching | 可以返回模板样例的变形,可以处理杂点、遮挡、缩放、非线性照明变换、局部变形,可以处理多通道图像 |
Perspective deformable Matching | 可以处理杂点、遮挡、缩放、非线性照明变换、散焦、透视形变,可以处理多通道图像,但是很难处理纹理 。 |
Descriptor-based Matching | 可以处理杂点、遮挡、缩放、非线性照明变换、透视形变,但是不能处理纹理、散焦以及多通道图像。 |
需要说明的是Component-based Matching。
基于部分的匹配是基于形状匹配的加强版。原因在于它可以允许内部的各个部件
移动(旋转和平移)。比如我们常见的钳子。有两个分支组成。但是分支可开可合。这时使用基于分支的匹配可以一次性处理这样一个组合物。否则可能得分开处理。
匹配方法的快速引导
如下的几幅图简单介绍了如何针对特殊的应用,选择合适的匹配方法。
图1,总结了比较粗糙地选择匹配的方法
图1
图2,介绍了几种形变
图2
图3,介绍了不同方法可以处理的形变
图3
图4,介绍了不同方法可以返回的参数信息
图4
图5,介绍了几种典型的目标外观变换
图5
图6,介绍了不同方法可以处理的目标外观变化
图6