Halcon基于灰度值的模板匹配create_temple

2024-01-23 02:52

本文主要是介绍Halcon基于灰度值的模板匹配create_temple,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

Halcon基于灰度值的模板匹配

基于灰度值的模板匹配适用于图像内灰度变化比较稳定,噪声比较少,且灰度差异比较明显的检测目标。这是一种不太推的匹配方法,因为该方法复杂度高,一次只能检测一个目标,耗时,且对光照和尺寸变化十分敏感。如果要使用该方法进行匹配,一般有如下步骤。
(1)使用create_temple算子或create_temple_rot算子创建一个模板。相比前者,后者多了一个允许的旋转角度,可使目标图像在旋转后也能被拽索到。在创建模板时,可以设置GrayValue参数为original。create_temple算子原型如下:

create _template(Template : : FirstError, NumLevel, Optimize, GrayValues :  TemplateID)

Template 是输入参数,表示准备好的模板图像。FirstError 是一个无用的参数,默认为255。NumLevel 表示匹配金字塔的层级数,默认为4。Optimize 表示优化的方法类型,可以选择sort,表示进行优化,这样匹配时间会稍微长一点,结果也会更稳定一些;也可以选择none,表示不进行任何优化。参数GrayValues 决定了使用原始图像的灰度还是使用边缘梯度进行匹配。可选的有gradient、 normalized、original、sobel,其含义可以从字面上理解。如果光照情况比较稳定,图像灰度变化不大,就可以选择original,即使用原始灰度差值作为匹配的判断条件;如果光照变化比较大,建议放弃使用基于灰度值的匹配,可以考虑使用基于相关性的匹配。
(2)创建模板之后,将返回一个模板的句柄TemplateID。接着可以使用各种匹配算子进行灰度的匹配,如best_match算子和fast_match算子,以及它们的多种衍生版本,即带变量的算子,如best_match_mg 算子、best_match_pre_mg算子、best_match_rot 算子、fast_match_mg 算子等。best_match算子返回的是匹配结果最好的目标的坐标位置,而fast_match算子返回的是包含所有点的一个区域。
后级为mg变量的算子,如best_match_mg 算子和fast_match_mg算子,表示其是在图像金字塔上进行匹配的;best_matchpre_mg算子则表示使用了预训练的金字塔,在算子的参数列表中可以设置金字塔的层级等参数。带rot的算子,如best_match_rot算子,表示检测图像可以旋转一定的角度,该角度的起始范围可以在best_match_rot算子的参数中设置。
(3)使用clear_template 算子释放模板资源。例如,图11.1中的例子使用了基于灰度值的模板匹配,其代码如下:

dev_close_window ()
dev_open_window (0, 0, 599, 464, 'black', WindowID)
*读取了一幅彩色图像
read_image (Imagecolor, 'data/holesBoard')
*将其转化为灰度图像
rgb1_to_gray (Imagecolor, Image)
dev_set_draw ('margin')
dev_set_line_width(3)
Row1 :=700
Column1 := 950
Row2 := 906
Column2 := 1155
*选择了一块矩形的ROI区域
gen_rectangle1 (Rectangle, Row1, Column1, Row2, Column2)
dev_display (Rectangle)
*将ROI区域进行裁剪,变成模板图像
reduce_domain (Image, Rectangle, ImageReduced)
*创建模板,因为光照比较稳定,GrayValues选择‘original’
create_template (ImageReduced, 5, 4, 'sort', 'original', TemplateID)	
*读取测试图像
read_image (ImageNoise, 'data/holesBoardNoise')
*应用灰度模板并进行匹配
adapt_template (ImageNoise, TemplateID)
best_match_mg (ImageNoise, TemplateID, 35, 'false', 4, 'all', Row_, Column_, Error_)
dev_clear_window ()
dev_display (ImageNoise)
*根据匹配返回的坐标中心,绘制矩形标识框,将匹配到的目标框选出来
disp_rectangle2 (WindowID, Row_, Column_, 0, 95, 95)
*匹配结束,释放模板资源
clear_template (TemplateID)

这篇关于Halcon基于灰度值的模板匹配create_temple的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/635026

相关文章

golang字符串匹配算法解读

《golang字符串匹配算法解读》文章介绍了字符串匹配算法的原理,特别是Knuth-Morris-Pratt(KMP)算法,该算法通过构建模式串的前缀表来减少匹配时的不必要的字符比较,从而提高效率,在... 目录简介KMP实现代码总结简介字符串匹配算法主要用于在一个较长的文本串中查找一个较短的字符串(称为

C++使用栈实现括号匹配的代码详解

《C++使用栈实现括号匹配的代码详解》在编程中,括号匹配是一个常见问题,尤其是在处理数学表达式、编译器解析等任务时,栈是一种非常适合处理此类问题的数据结构,能够精确地管理括号的匹配问题,本文将通过C+... 目录引言问题描述代码讲解代码解析栈的状态表示测试总结引言在编程中,括号匹配是一个常见问题,尤其是在

关于Gateway路由匹配规则解读

《关于Gateway路由匹配规则解读》本文详细介绍了SpringCloudGateway的路由匹配规则,包括基本概念、常用属性、实际应用以及注意事项,路由匹配规则决定了请求如何被转发到目标服务,是Ga... 目录Gateway路由匹配规则一、基本概念二、常用属性三、实际应用四、注意事项总结Gateway路由

基于WinForm+Halcon实现图像缩放与交互功能

《基于WinForm+Halcon实现图像缩放与交互功能》本文主要讲述在WinForm中结合Halcon实现图像缩放、平移及实时显示灰度值等交互功能,包括初始化窗口的不同方式,以及通过特定事件添加相应... 目录前言初始化窗口添加图像缩放功能添加图像平移功能添加实时显示灰度值功能示例代码总结最后前言本文将

基于Java实现模板填充Word

《基于Java实现模板填充Word》这篇文章主要为大家详细介绍了如何用Java实现按产品经理提供的Word模板填充数据,并以word或pdf形式导出,有需要的小伙伴可以参考一下... Java实现按模板填充wor编程d本文讲解的需求是:我们需要把数据库中的某些数据按照 产品经理提供的 word模板,把数据

poj3468(线段树成段更新模板题)

题意:包括两个操作:1、将[a.b]上的数字加上v;2、查询区间[a,b]上的和 下面的介绍是下解题思路: 首先介绍  lazy-tag思想:用一个变量记录每一个线段树节点的变化值,当这部分线段的一致性被破坏我们就将这个变化值传递给子区间,大大增加了线段树的效率。 比如现在需要对[a,b]区间值进行加c操作,那么就从根节点[1,n]开始调用update函数进行操作,如果刚好执行到一个子节点,

C++11第三弹:lambda表达式 | 新的类功能 | 模板的可变参数

🌈个人主页: 南桥几晴秋 🌈C++专栏: 南桥谈C++ 🌈C语言专栏: C语言学习系列 🌈Linux学习专栏: 南桥谈Linux 🌈数据结构学习专栏: 数据结构杂谈 🌈数据库学习专栏: 南桥谈MySQL 🌈Qt学习专栏: 南桥谈Qt 🌈菜鸡代码练习: 练习随想记录 🌈git学习: 南桥谈Git 🌈🌈🌈🌈🌈🌈🌈🌈🌈🌈🌈🌈🌈�

【Prometheus】PromQL向量匹配实现不同标签的向量数据进行运算

✨✨ 欢迎大家来到景天科技苑✨✨ 🎈🎈 养成好习惯,先赞后看哦~🎈🎈 🏆 作者简介:景天科技苑 🏆《头衔》:大厂架构师,华为云开发者社区专家博主,阿里云开发者社区专家博主,CSDN全栈领域优质创作者,掘金优秀博主,51CTO博客专家等。 🏆《博客》:Python全栈,前后端开发,小程序开发,人工智能,js逆向,App逆向,网络系统安全,数据分析,Django,fastapi

poj 1258 Agri-Net(最小生成树模板代码)

感觉用这题来当模板更适合。 题意就是给你邻接矩阵求最小生成树啦。~ prim代码:效率很高。172k...0ms。 #include<stdio.h>#include<algorithm>using namespace std;const int MaxN = 101;const int INF = 0x3f3f3f3f;int g[MaxN][MaxN];int n

uva 1342 欧拉定理(计算几何模板)

题意: 给几个点,把这几个点用直线连起来,求这些直线把平面分成了几个。 解析: 欧拉定理: 顶点数 + 面数 - 边数= 2。 代码: #include <iostream>#include <cstdio>#include <cstdlib>#include <algorithm>#include <cstring>#include <cmath>#inc