Halcon学习路线——模板匹配和仿射变换

1. 模板匹配分类

  • halcon对模板匹配进行了详细的分类
    在这里插入图片描述
  • 基于灰度的模板匹配是最基础也是最简单的,但是由于其受光照影响很大,匹配的精度也不高,在实际项目当中往往不被采用。
  • 更高版本的halcon中基于灰度和基于相关性的模板匹配案例也被删减了,可能他们也觉得这种方法并不好用吧。
  • 更常用的是基于形状的模板匹配,在halcon中案例也最多,在此基础上又产生了局部可变性等方法,这些在后面再详细阐述,这里就不展开说了。

2. 看一个案例

https://blog.csdn.net/weixin_38566632/article/details/121029374

  • 上面的博客中提到的扣除极耳区域,是通过一个固定的ROI区域来实现的。但是实际生产中,电池的位置可能有变动,这就需要ROI也跟随电池移动,才能确保准确的将极耳扣除。
  • 下面是基于形状的模板匹配方法,效果图和代码:

在这里插入图片描述
在这里插入图片描述

* 读取图像
list_files ('', ['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)
read_image (Image, ImageFiles[0])

* 创建想扣除的ROI区域
gen_rectangle1 (ROI_0, 2080.74, 4179.05, 2637.4, 4908.4)
gen_rectangle1 (TMP_Region, 2726.46, 4173.02, 3275.69, 4908.4)
union2 (ROI_0, TMP_Region, ROI_Ear)

* ROI +抠图
gen_rectangle1 (ROI_0, 1280.76, 2080.26, 3780.28, 4945.57)
reduce_domain (Image, ROI_0, ImageReduced)
* 二值化+抠图
binary_threshold (ImageReduced, Region, 'max_separability', 'dark', UsedThreshold)
* 分割、筛选
connection (Region, ConnectedRegions)
select_shape (ConnectedRegions, SelectedRegions, 'area', 'and', 3.05233e+006, 5e+006)
* 膨胀 + 抠图
dilation_rectangle1 (SelectedRegions, RegionDilation, 50, 50)
reduce_domain (ImageReduced, RegionDilation, ImageReduced1)
* 区域中心和角度
area_center (RegionDilation, Area, tmpRow, tmpCol)

* 创建形状模板
create_shape_model (ImageReduced1, 'auto', -0.39, 0.79, 'auto', 'auto', 'use_polarity', 'auto', 'auto', ModelID)
* 获取模板轮廓
get_shape_model_contours (ModelContours, ModelID, 1)

for Index := 0 to |ImageFiles| - 1 by 1
    read_image (Image, ImageFiles[Index])
    
    * 寻找实例
    find_shape_model (Image, ModelID, -rad(30), rad(60), 0.3, 1, 0.5, 'least_squares', 0, 0.9, Row, Column, Angle, Score)
    * 显示轮廓
    vector_angle_to_rigid (0, 0, 0, Row, Column, Angle, HomMat2D)
    affine_trans_contour_xld (ModelContours, ContoursAffinTrans, HomMat2D)
    dev_set_line_width (2)
    dev_display (ContoursAffinTrans)
    * 区域仿射变换,极耳区域跟随实例移动
    vector_angle_to_rigid (tmpRow, tmpCol, 0, Row, Column, Angle, HomMat2D1)
    affine_trans_region (ROI_Ear, RegionAffineTrans, HomMat2D1, 'nearest_neighbor')
    
    * 抠图
    gen_rectangle1 (ROI_Tmp, 692.643, 1449.21, 4452.42, 5815.39)
    difference (ROI_Tmp, RegionAffineTrans, ROI_Battery)
    reduce_domain (Image, ROI_Battery, Battery)
    * 二值化、分割、筛选  
    threshold (Battery, Regions, 0, 100)
    connection (Regions, ConnectedRegions1)    
    select_shape (ConnectedRegions1, SelectedRegions1, 'area', 'and', 2.48079e+006, 5e+006)
    * 最小外接矩形
    smallest_rectangle2 (SelectedRegions1, Row1, Column1, Phi, Length1, Length2)
    gen_rectangle2_contour_xld (Rectangle, Row1, Column1, Phi, Length1, Length2)
    dev_display (Image)
    dev_display (Rectangle)  
    * 显示
    set_display_font (3600, 20, 'mono', 'true', 'false')
    disp_message (3600, 'L1:'+2*Length1, 'image', Row, Column-400, 'white', 'false')
    disp_message (3600, 'L2:'+2*Length2, 'image', Row+400, Column-400, 'white', 'false')
    
    stop()
endfor

3. 资源下载

https://download.csdn.net/download/weixin_38566632/35337982

Halcon是一个广泛应用于机器视觉领域的软件平台。在Halcon中,模板匹配仿射变换是常用的技术组合,用于图像处理和目标检测。模板匹配是一种通过比较图像中的模板和待匹配图像来定位目标的方法,而仿射变换是一种可以对图像进行旋转、缩放、平移和倾斜的变换方法。 在Halcon中,可以通过使用函数inspect_shape_model来观察模板的样子,并以此来辅助后续的模板匹配过程。该函数可以帮助我们确认模板匹配中的相关参数,如模板图像、模板区域等信息。同时,基于形状的模板匹配方法也可以结合仿射变换技术,对目标进行更加灵活的匹配。通过对模板进行仿射变换,可以适应目标的旋转、缩放和平移等变化,提高匹配的准确性和鲁棒性。 如果你对这个话题感兴趣,可以参考引用中的文章,了解更多关于Halcon模板匹配仿射变换的内容。此外,引用中的博客也提供了基于形状的模板匹配仿射变换模板跟随的相关讨论。希望这些资料对你有所帮助。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *3* [【halcon模板匹配仿射变换总结](https://blog.csdn.net/songhuangong123/article/details/129146123)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *2* [学习路线模板匹配仿射变换20211030.rar](https://download.csdn.net/download/weixin_38566632/35337982)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

MechMaster

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

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

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

打赏作者

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

抵扣说明:

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

余额充值