龙空技术网

halcon学习--模板匹配讲解,使用场合,以及例子说明

robotstudio 697

前言:

目前大家对“基于灰度模板匹配”大约比较讲究,朋友们都想要知道一些“基于灰度模板匹配”的相关文章。那么小编也在网上收集了一些对于“基于灰度模板匹配””的相关资讯,希望看官们能喜欢,你们快快来了解一下吧!

何为模板匹配

在图像中定位物体的一种方法和技术。 这里的‘物体’是一种叫做模板(template)的称谓,这个模板是通过创建或者本地文件读取的,读取模板后在当前的图像中进行搜索模板。

Halcon匹配方法

Halcon提供完善的匹配方法,这里有八种方法。 基于灰度匹配、基于描述符、基于点、基于形状、基于组件、局部变量、可变形、基于相关性,在绝大多数应用场合中使用基于形状匹配模板。这里介绍形状模板匹配方法

匹配方法

Shape-based匹配(基于形状匹配)

形状模板是基于模板图像的轮廓来进行匹配的,所以对于图像稍微亮一点或者暗一点是没有关系的,模板对象的轮廓不会变。

使用形状模板有2个阶段,第一阶段是创建模板,第二阶段是使用模板

创建模板

创建模板在这里有2种方式,一种是直接创建模板create_shape_model,另一种是使用create_shape_model_xld来创建模板。

create_shape_model(Template : : NumLevels, AngleStart, AngleExtent, AngleStep, Optimization, Metric,Contrast, MinContrast : ModelID)

Template:输入模板图像

NumLevels:输入金字塔层数

AngleStart:输入匹配模板的起始角度,弧度制

AngleExtent:旋转角度范围,弧度制

AngleStep:角度旋转步幅

Optimization:创建模板的优化方法

Metric:创建模板的极性

Contrast:模板的对比度阈值

MinContrast:模板图像最小对比度

ModelID: 输出模板匹配句柄ID

我们在使用过程中,常用改变的参数是AngleStart,AngleExtent以及Metric,其他参数多半使用默认参数即可

模板的中心是Template模板图像创建的时候区域的中心,比如使用gen_rectangle1生成了一个矩形,那么模板中心就是矩形的中心,当然你可以使用set_shape_model_origin来设置新的模板中心点。

read_shape_model(::FileName:ModelID)

通过本地文件读取形状模板,模板的结尾以*.shm,在实际项目中,我们前期调试产品创建模板肯定是需要通过这个接口保存到本地文件,供后期加载运行实时使用。

当然有时候我们也需要通过create_shape_model_xld来创建模板,控制参数和create_shape_mode的控制参数一样,不同的是这里是通过一个轮廓xld来进行创建,这里的轮廓是通过edges_sub_piexl来进行提取的轮廓,select_shape_xld来筛选轮廓

edges_sub_pixel来创建轮廓,创建模板

使用模板

find_shape_model(Image : : ModelID, AngleStart, AngleExtent, MinScore, NumMatches, MaxOverlap,SubPixel, NumLevels, Greediness : Row, Column, Angle, Score)

Image:输入运行时图像

ModelD:输入的模板匹配句柄ID

AngleStart:搜索模板的起始角度,弧度制

AngleExtent:模板的搜索范围,弧度制

MinScore:匹配的最小分数

NumMatches:匹配个数

MaxOverLap:最大重叠区域,可以理解为有多少模板被遮挡也可以识别

SubPixel:亚像素精度参数

NumLevels: 用来匹配的金字塔层数

GreedNess:贪心度

在实际应用中,很多情况下Image是通过reduce_domain保存下来的,通过搜索区域来进行定位物体,AngleStart和AngleExtent为模板的角度范围,MinScore为匹配的最小分数,NumberMatches为匹配模板的个数,注意这里的输出坐标(ROW,Column,Angle)的中心点是创建模板的中心R,C坐标,查找的角度为弧度制。

匹配点的使用

用来定位

直接使用这个(Row,Column,Angle)点来做定位,通过一个标定矩阵转换为物理值,通过软件端TCP\COM发送给下位机即可。

仿射变换

在比较多的应用中,使用这个坐标来进行仿射变换,查找到的点(Row,Column,Angle)转换到模板点(RowModel,ColumnModel,AngleModel)点,通过vector_angle_to_rigid来生成一个变换矩阵,对应着使用affine_trans_image来把图像转换到模板位置,这种方式显而易见,我们在做很多图像任务的时候,我们的ROI参数不用变换,直接使用

比如我的测量应用

视频加载中...

比如我的检测任务

仿射变换应用,把图像转换到模板图像所有的区域参数直接使用

标签: #基于灰度模板匹配 #基于灰度模板匹配的软件