模板匹配

  • 1. 模板匹配分类
  • 2. 看一个案例
  • 3. 资源下载

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 1read_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学习路线——模板匹配和仿射变换相关推荐

  1. 图像处理HALCON中的模板匹配方法总结

    HALCON中的模板匹配方法总结 摘要 1. Shape-Based matching的基本流程 2. 基于形状匹配的参数关系与优化 摘要 德国MVTec公司开发的HALCON机器视觉开发软件,提供了 ...

  2. halcon三种模板匹配方法

    转自 : http://blog.csdn.net/hust1900/article/details/8843270 halcon有三种模板匹配方法:即Component-Based.Gray-Val ...

  3. 在halcon中使用模板匹配助手进行定位真的很好用!!!

    一.如何使用模板匹配助手 1.菜单栏中点击助手---选择打开新的Matching 2.选择对应的模板类型 二.模板匹配助手中每个界面的功能介绍 (一)创建界面 1.模板来源 选择是从图像画ROI创建还 ...

  4. OpenCV学习之模板匹配

    模板匹配的概念与原理就不说了,<OpenCV3编程入门>这本书第9.5节有介绍,不过比较简洁,至于看不看得懂就NBCS了嘻嘻,毕竟本人也是看得一知半解.那么本次呢,主要就是针对该书中的9. ...

  5. opencv学习_11 (模板匹配(包括单模板和多模板))

    模板匹配--在一幅图像中匹配与模板相似的单个或者多个目标 (1)目标匹配函数: cvMatchTemplate( const CvArr* image, constCvArr* templ, CvAr ...

  6. c# 联合halcon 基于相关性 模板匹配_机器视觉之halcon入门(5)-字符识别exe生成...

    2.3.2 第二个halcon程序转EXE程序:字符识别 老规矩,每一段halcon代码得用C#二次开发下.根据上一节所教的,我们配置下C#的环境,顺便添加好控件,如下图(2-3-2-1). 图 2- ...

  7. Halcon学习路线——Blob分析(1)

    Blob分析 1. 谈谈Blob分析 2. 看一张图片 3. 处理图像效果 4. Halcon代码 5. 资源下载 1. 谈谈Blob分析 Blob可以说是图像处理中最简单.最常用的方法了.虽说简单, ...

  8. c# 联合halcon 基于相关性 模板匹配_宣城seo公司_有效利用及时相关性解决关键词排名上不到首页的难题...

    发布时间:2020-11-04 09:11:33 当你写一条热门新闻时,百度总是能很快地收录和显示你.这就是即时新闻的魅力所在,考虑到全站的权重不算太多. 它完全基于即时新闻和页面相关性,因此,如果你 ...

  9. Halcon学习路线——Blob分析(2)

    Blobf分析 1. 看一个实际案例 2. 解决方案和代码 3. 资源下载 1. 看一个实际案例 这是一块电池,右侧有两个极耳,极耳相对电池的位置固定. 力神的检测部门会对电池进行抽检,他们使用的工具 ...

最新文章

  1. 什么是REST?以及RESTful
  2. 关于Exchange Server 2010中OWA页面无法打开问题处理方法
  3. [ACM_几何] Pipe
  4. ThinkPHP的field方法的用法总结
  5. 如何查看本机端口_怎样查看Mac的端口号以及占用情况
  6. Winform中设置ZedGraph的曲线为散点图
  7. github推送错误:已经有此代码,不允许覆盖的解决方法
  8. python 嵌入式 linux 产品 发布_基于嵌入式Linux进行Python应用开发
  9. 设计模式五: 原型模式(Prototype)
  10. 结对编程(黄金点游戏)
  11. vb.net 的 openFileDialog 控件文件筛选器使用
  12. 归档-软考部分科目的考察内容
  13. [工具资源] 《HelloGitHub》第 08 期
  14. Tomcat 项目部署方式
  15. Python xrange()函数
  16. 京东联盟sdk php,京东联盟新增对接sdk,配置教程
  17. java中以yyyyMMddHHmmss格式取得系统时间
  18. 第1章 Java基本概念及环境配置——FAQ1.05 Java SE. Java EE和Java ME有什么区别?
  19. 谈谈创业公司给服务器放在云端的优势和缺陷
  20. 实现正六边形、圆形及带倒角正六边形的头像显示

热门文章

  1. 使用FFTW3做二维DFT的示例代码
  2. 内部办公网与IDC机房的GRE隧道配置实践
  3. 教你CentOS7部署TOMCAT8
  4. MySQL中的备份和恢复
  5. 记一次MySQL中Waiting for table metadata lock的解决方法
  6. 超链接a标签的伪类选择器问题,Link标签与visited标签的失效问题(问题介绍与解决方法)。以下全部内容跟可通过鼠标左键选取后,复制到编辑器中直接运行。
  7. 用JavaScript编码URL?
  8. SpringBoot配置Druid数据源,持久层分别 mybatis,jdbc
  9. java aciss_C语言ACISS表.doc
  10. php和fastapi,FastAPI快速开始