Halcon基于相关性的模板匹配create_ncc_model

2024-01-23 04:04

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

Halcon基于相关性的模板匹配

基于相关性的模板匹配也是一种基于灰度特征的匹配方法。该方法使用一种基于行向量的归一化互相关匹配法,在检测图像中匹配模板图像。与基于灰度值的匹配相比,该方法速度快得多,并且能够适应线性光照变化。与基于形状的模板匹配相比,该方法能适用于有大量纹理的模板,支持有轻微形变的搜索,能弥补形状模板在某些方面的不足。
使用基于相关性的匹配有如下步骤。
(1)从参考图像上选择检测的目标。使用矩形选区等方式,从参考图像上选择一块ROI,然后使用reduce_domain 算子将该区域裁剪成一个独立的图像区域。
(2)创建模板。用上一步裁剪后的图像创建一个归一化的互相关模型,使用的是create_ncc model 算子。该算子的原型如下:

create_ncc_model(Template : : NumLevels, AngleStart, AngleExtent, Anglestep, Metric : ModelID)

参数 Template 是输入的包括了ROI的图像。参数NumLevels 是金字塔的层数,默认可以设为auto,程序将自动确定合适的金字塔层级数,该层级数可以通过 get_ncc_model_params 算子进行查看。AngleStart和AngleExtent 两个参数确定了模板图像可能出现在检测图像上的旋转角度范围,在这个范围内的旋转才有可被搜素到。参数 AngleStep 为角度旋转变化的步长。模型的角度变化是在检测前进行预处理,并将旋转信息保存在内存中的。因此,旋转的角度大小和模型的点的数量决定了所需内存的大小。也可以设置AngleStep为auto或0,则程序会自动确定合适的旋转角度的步长。旋转的中心点是模板图像的重心。
表示在检测图像中识别模板的条件,或者说是“度量”。该参数在其他几种匹配算子中也经常用到。这里有两个可选择的值:use_polarity 和ignore_global_polarity。如果选择use_polarity,那么检测图像中的目标对象必须和模板中的目标对象具有相同的对比度“方向”。例如,模板中是一个暗背景上有一个亮的目标,那么在检索时,只有符合匹配条件并且亮度比背景亮的目标才能被检测出来。如果选择ignore_global_polarity,那么该亮度变化可以忽略,还是上面的例子,即使是前景与背景的对比度“方向”相反,即该目标比背景还暗,也能检测出来。
参数ModelID是模板的句柄,供匹配算子find_ncc_model调用。在该算子中,有一个参数MinSore用于指定匹配分数的最小值,即低于这个匹配分数的匹配结果就不需要返回了。由于匹配分数是从归一化的互相关系数中来的,为了提升匹配速度,这个分数的阈值应该尽可能设置得高一点,但是也要防止设得过高导致匹配失败。
匹配结束后,使用clear_ncc_model算子释放模板。其代码如下:

*读取参考的原始图像。如果是彩色的,需要先转化为单通道灰度图像
read_image (Image, 'data/carmex-0')
get_image_size (Image, Width, Height)
dev_close_window ()
dev_open_window (0, 0, Width, Height, 'black', WindowHandle)
*设置窗口绘制参数,线宽设为3
dev_set_line_width(3)
dev_set_draw ('margin')
*创建圆形,因为目标区域是圆形,因为用圆形将ROI区域选择出来
gen_circle (Circle, 161, 208, 80)
*获取圆形的中心点,为匹配后的可视化显示结果做准备
area_center (Circle, Area, RowRef, ColumnRef)
*裁剪ROI区域,得到模板图像
reduce_domain (Image, Circle, ImageReduced)
*创建基于相关性的匹配模型,输入模板图像和模型参数
create_ncc_model (ImageReduced, 'auto', 0, 0, 'auto', 'use_polarity', ModelID)
*显示原始图像和圆形框
dev_display (Image)
dev_display (Circle)
stop ()
*读取测试图像。该测试图像和参考图像比起来有轻微的位移,旋转,缩放,以及失焦
read_image (Image2, 'data/carmex-1')
*进行行基于相关性的模板匹配
find_ncc_model (Image2, ModelID, 0, 0, 0.5, 1, 0.5, 'true', 0, Row, Column, Angle, Score)
vector_angle_to_rigid (RowRef, ColumnRef, 0, Row, Column, 0, HomMat2D)
*对圆形进行仿射变换,使其将匹配的结果目标标识出来
affine_trans_region (Circle, RegionAffineTrans, HomMat2D, 'nearest_neighbor')
*显示测试画面和圆形标记圈
dev_display (Image2)
dev_display (RegionAffineTrans)
*匹配结束,释放模板资源
clear_ncc_model (ModelID)

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



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

相关文章

Nginx路由匹配规则及优先级详解

《Nginx路由匹配规则及优先级详解》Nginx作为一个高性能的Web服务器和反向代理服务器,广泛用于负载均衡、请求转发等场景,在配置Nginx时,路由匹配规则是非常重要的概念,本文将详细介绍Ngin... 目录引言一、 Nginx的路由匹配规则概述二、 Nginx的路由匹配规则类型2.1 精确匹配(=)2

Python中Flask模板的使用与高级技巧详解

《Python中Flask模板的使用与高级技巧详解》在Web开发中,直接将HTML代码写在Python文件中会导致诸多问题,Flask内置了Jinja2模板引擎,完美解决了这些问题,下面我们就来看看F... 目录一、模板渲染基础1.1 为什么需要模板引擎1.2 第一个模板渲染示例1.3 模板渲染原理二、模板

利用Python打造一个Excel记账模板

《利用Python打造一个Excel记账模板》这篇文章主要为大家详细介绍了如何使用Python打造一个超实用的Excel记账模板,可以帮助大家高效管理财务,迈向财富自由之路,感兴趣的小伙伴快跟随小编一... 目录设置预算百分比超支标红预警记账模板功能介绍基础记账预算管理可视化分析摸鱼时间理财法碎片时间利用财

如何在 Spring Boot 中实现 FreeMarker 模板

《如何在SpringBoot中实现FreeMarker模板》FreeMarker是一种功能强大、轻量级的模板引擎,用于在Java应用中生成动态文本输出(如HTML、XML、邮件内容等),本文... 目录什么是 FreeMarker 模板?在 Spring Boot 中实现 FreeMarker 模板1. 环

Nginx location匹配模式与规则详解

《Nginxlocation匹配模式与规则详解》:本文主要介绍Nginxlocation匹配模式与规则,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、环境二、匹配模式1. 精准模式2. 前缀模式(不继续匹配正则)3. 前缀模式(继续匹配正则)4. 正则模式(大

Java 正则表达式URL 匹配与源码全解析

《Java正则表达式URL匹配与源码全解析》在Web应用开发中,我们经常需要对URL进行格式验证,今天我们结合Java的Pattern和Matcher类,深入理解正则表达式在实际应用中... 目录1.正则表达式分解:2. 添加域名匹配 (2)3. 添加路径和查询参数匹配 (3) 4. 最终优化版本5.设计思

IDEA自动生成注释模板的配置教程

《IDEA自动生成注释模板的配置教程》本文介绍了如何在IntelliJIDEA中配置类和方法的注释模板,包括自动生成项目名称、包名、日期和时间等内容,以及如何定制参数和返回值的注释格式,需要的朋友可以... 目录项目场景配置方法类注释模板定义类开头的注释步骤类注释效果方法注释模板定义方法开头的注释步骤方法注

Python中使用正则表达式精准匹配IP地址的案例

《Python中使用正则表达式精准匹配IP地址的案例》Python的正则表达式(re模块)是完成这个任务的利器,但你知道怎么写才能准确匹配各种合法的IP地址吗,今天我们就来详细探讨这个问题,感兴趣的朋... 目录为什么需要IP正则表达式?IP地址的基本结构基础正则表达式写法精确匹配0-255的数字验证IP地

浅谈配置MMCV环境,解决报错,版本不匹配问题

《浅谈配置MMCV环境,解决报错,版本不匹配问题》:本文主要介绍浅谈配置MMCV环境,解决报错,版本不匹配问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录配置MMCV环境,解决报错,版本不匹配错误示例正确示例总结配置MMCV环境,解决报错,版本不匹配在col

Pydantic中model_validator的实现

《Pydantic中model_validator的实现》本文主要介绍了Pydantic中model_validator的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价... 目录引言基础知识创建 Pydantic 模型使用 model_validator 装饰器高级用法mo