halcon模板匹配学习(一) Matching 初印象

来源:互联网 发布:java jsonarray清空 编辑:程序博客网 时间:2024/05/18 00:41

什么是模板匹配呢?简单而言,就是在图像中寻找目标图像(模板),或者说,就是在图像中寻找与模板图像相似部分的一种图像处理技术。依赖于选择的方法不同,模板匹配可以处理各种情形下的变换,如照明、杂点、大小、位置以及旋转,甚至模版内部的相对移动。

模版匹配的鲁棒性和灵活性都很高,而且很多参数可以自适应生成,只有极少的参数需要配置。

在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


打赏

0 0
原创粉丝点击