Halcon学习笔记之模板匹配-基于形状的匹配

上篇文章主要介绍的是基于形状的匹配的算子各个参数所具备的作用,这篇文章主要介绍下如何在halcon中去使用这些算子完成基于形状的情况下找到我们的目标,同时我们也介绍下适用于缩放的模板查找。
模板图片如下:
在这里插入图片描述
代码如下:

read_image (Image, 'C:/Users/Administrator/Desktop/基于形状的匹配/1.jpg')
rgb1_to_gray (Image, GrayImage)
dev_set_draw ('margin')
draw_rectangle2 (3600, Row, Column, Phi, Length1, Length2)
gen_rectangle2 (Rectangle, Row, Column, Phi, Length1, Length2)
*抠图,选出我们想要的模板区域
reduce_domain (GrayImage, Rectangle, ImageReduced)
*这边是创建模板,创建模板的过程中我们可以直接创建,同样我们也可以用助手里面的match功能
*让系统自动生成创建模板的参数供我们使用,这样会更精准。
create_shape_model (ImageReduced, 'auto', rad(0), rad(360), rad(20), 'auto', 'use_polarity', 'auto', 'auto', ModelID)
get_shape_model_contours (ModelContours, ModelID, 1)
*我这里是简单描述操作下,具体要得到精确的旋转偏移矩阵的话需要预处理得到模板区域
*的中心和偏转角度。
vector_angle_to_rigid (0, 0, 0, Row, Column, Phi, HomMat2D)
affine_trans_contour_xld (ModelContours, ContoursAffinTrans, HomMat2D)
dev_display (GrayImage)
dev_display (ContoursAffinTrans)
*到这里呢我们的模板就已经创建好了,下面就是加载一系列的图像去寻找模板
stop()
* Image Acquisition 01: Code generated by Image Acquisition 01
list_files ('C:/Users/Administrator/Desktop/基于形状的匹配', ['files','follow_links'], ImageFiles)
tuple_regexp_select (ImageFiles, ['\\.(tif|tiff|gif|bmp|jpg|jpeg|jp2|png|pcx|pgm|ppm|pbm|xwd|ima|hobj)$','ignore_case'], ImageFiles)
for Index := 0 to |ImageFiles| - 1 by 1
    read_image (Image1, ImageFiles[Index])
    * Image Acquisition 01: Do something
    rgb1_to_gray (Image1, GrayImage1)
    find_shape_model (GrayImage1, ModelID, 0, rad(360), 0.2, 1, 0.5, 'least_squares', 0, 0.9, Row1, Column1, Angle, Score)
    vector_angle_to_rigid (0, 0, 0, Row1, Column1, Angle, HomMat2D1)
    affine_trans_contour_xld (ModelContours, ContoursAffinTrans1, HomMat2D1)
    dev_display (GrayImage1)
    dev_display (ContoursAffinTrans1)
    stop()
endfor
clear_shape_model(ModelID)

匹配到的效果图如下:
在这里插入图片描述
在这里插入图片描述

到这里位置就是一般基于形状的模板匹配的实现步骤,有时候在做项目的时候也会遇到一些大小不一致的模板,但都是基于形状的情况下,我们就可以考虑下带有缩放的形状匹配,缩放用到的算子如下:
create_scale_shape_model()
find_scaled_shape_model()
用法和步骤和上面的代码步骤绝大部分是一致的,主要是多个缩放的矩阵,需要在旋转平移的矩阵基础上再加一个算子:
hom_mat2d_scale()
得到旋转平移缩放矩阵,来将模板反映到图像之中。之所以在模板匹配中需要这些矩阵,是因为在halcon的模板匹配的机制里面,找到的目标信息xld轮廓的原始位置的中心点是图像的左上角(0,0),偏转角度为0度,所以我们需要把找到的xld轮廓通过矩阵变换到原来的目标位置,便于观察。

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小丶锦

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值