Halcon模板匹配

devtools/2024/10/18 18:58:59/

create_shape_model_xld(Contours : : NumLevels, AngleStart, AngleExtent, AngleStep, Optimization, Metric, MinContrast : ModelID)

  • NumLevels:金字塔的层数,可以设置为"auto"或0-10的整数。层数越大,匹配所需时间越短,但特征提取越少,精度越低。

  • AngleStart 和 AngleExtent:决定模板可能的旋转范围,AngleStep 指定角度范围搜索的步长。

  • Optimization:对于特别大的模板图像,设置为非"none"的值可以减少模型点数,提高搜索速度。

  • Metric:决定匹配模板的条件,例如"ignore_global_polarity"允许对比度全局反转时也能找到目标。

  • Contrast 和 MinContrast:决定模型点的对比度,帮助模板从图像噪声中分离出来。

read_image (Image20230705102939491, 'E:/项目/上料/11拉/20230703/11标定图/泡沫竖1/1.bmp')
gen_rectangle1 (ROI_0, 859.82, 2885.07, 1413.1, 3534.41)
reduce_domain(Image20230705102939491, ROI_0, ImageReduced)
threshold(ImageReduced, Region, 158, 255)
connection(Region, ConnectedRegions)
closing_circle(ConnectedRegions, RegionClosing, 123.5)
select_shape (RegionClosing, SelectedRegions, 'area', 'and', 150, 999999)
union1 (SelectedRegions, RegionUnion)
gen_contour_region_xld(RegionUnion, Contours, 'border')
dev_display(Image20230705102939491)
dev_display(Contours)

create_shape_model_xld(Contours, 'auto', rad(0), rad(360), 'auto', 'auto', 'ignore_local_polarity', 5, ModelID)
read_image (Image20230705102939491, 'E:/项目/上料/11拉/20230703/11标定图/泡沫竖1/1.bmp')
gen_rectangle1 (ROI_0, 811.18, 2622.41, 1619.82, 3767.88)
reduce_domain(Image20230705102939491, ROI_0, ImageReduced1)
find_shape_model(ImageReduced1, ModelID,  rad(0), rad(360), 0.1, 1, 0.8, 'least_squares', 0, 0.9, Row, Column, Angle, Score)
dev_display_shape_matching_results (ModelID, 'red', Row, Column, Angle, 1, 1, 0)

创建形状模型(create_shape_model)

参数解释

  • NumLevels:金字塔的层数,可以设置为"auto"或0-10的整数。层数越大,匹配所需时间越短,但特征提取越少,精度越低。

  • AngleStart 和 AngleExtent:决定模板可能的旋转范围,AngleStep 指定角度范围搜索的步长。

  • Optimization:对于特别大的模板图像,设置为非"none"的值可以减少模型点数,提高搜索速度。

  • Metric:决定匹配模板的条件,例如"ignore_global_polarity"允许对比度全局反转时也能找到目标。

  • Contrast 和 MinContrast:决定模型点的对比度,帮助模板从图像噪声中分离出来。

重要考虑

在使用create_shape_model时,需要考虑到模板图像的大小和复杂性,以及匹配过程中可能出现的变化。例如,如果模板图像较小,可能需要设置较大的AngleStep。此外,Optimization 参数的选择将影响模型点的数量,进而影响匹配过程的速度和准确性。

read_image (Image20230705102939491, 'E:/项目/上料/11拉/20230703/11标定图/泡沫竖2/11.bmp')
gen_rectangle1 (ROI_0, 2050.36, 2764.05, 2575.67, 3499.49)reduce_domain(Image20230705102939491, ROI_0, ImageReduced)
inspect_shape_model(ImageReduced, ModelImages, ModelRegions, 4, 30)

create_shape_model(ImageReduced, 'auto',rad(0), rad(360), 'auto','auto', 'use_polarity', 'auto', 'auto', ModelID1)
dev_display(Image20230705102939491)
read_image (Image20230705102942272, 'E:/项目/电芯上料现场/江苏11拉/20230703/11标定图/泡沫竖2/11.bmp')
gen_rectangle1 (ROI_0, 1977.4, 2527.66, 2699.7, 3788.41)
reduce_domain(Image20230705102942272, ROI_0, ImageReduced1)
find_shape_model(ImageReduced1, ModelID1, rad(0), rad(360), 0.5, 1, 0.5, 'least_squares', 0, 0.9, Row1, Column1, Angle1, Score1)
dev_display_shape_matching_results (ModelID1, 'red', Row1, Column1, Angle1, 1, 1, 0)

create_ncc_model在映像中传递模板作为 NCC 模型,用于 使用归一化互相关 (NCC) 进行匹配的 ROI 模型作为模板.

read_image (Image20230705102939491, 'E:/项目/电芯上料现场/江苏11拉/20230703/11标定图/取料竖1/1.bmp')
dev_set_draw ('margin')
gen_circle (ROI_0, 1111.36, 2366.58, 229.266)
reduce_domain(Image20230705102939491, ROI_0, ImageReduced)
scale_image(ImageReduced, ImageScaled, 1.5, -120)
create_ncc_model(ImageScaled, 'auto', Angle1, Angle1, Angle1, 'use_polarity', ModelID2)

read_image (Image20230705102942272, 'E:/项目/电芯上料现场/江苏11拉/20230703/11标定图/取料竖1/1.bmp')
gen_rectangle1 (ROI_0, 817.56, 2023.54, 2231.8, 3820.21)

reduce_domain(Image20230705102942272, ROI_0, ImageReduced1)
find_ncc_model(ImageReduced1, ModelID2, Angle1, Angle1, 0.8, 1, 0.5, 'true', 0, Row2, Column2, Angle2, Score2)
gen_cross_contour_xld (Cross, Row2, Column2, 60, Angle2)


http://www.ppmy.cn/devtools/125120.html

相关文章

企业水、电、气、热等能耗数据采集系统

介绍 通过物联网技术,采集企业水、电、气、热等能耗数据,帮企业建立能源管理体系,找到跑冒滴漏,从而为企业节能提供依据。 进一步为企业实现碳跟踪、碳盘查、碳交易、谈汇报的全生命过程。 为中国碳达峰-碳中和做出贡献。 针对客…

C++ AVLTree

目录 1. AVLTree的定义 2. 平衡因子 3. AVLTree的基础接口 插入 旋转 左单旋: 右单旋: 双旋: 4. AVLTree的测试 5. 小结 1. AVLTree的定义 二叉搜索树(BST)虽可以缩短查找的效率,但 如果数据有序…

Leetcode 在排序数组中查找元素的第一个和最后一个位置

这段代码的目的是在一个有序的数组中查找目标元素的第一个和最后一个位置。如果目标元素不存在,返回 [-1, -1]。算法要求时间复杂度为 O(log n),所以使用了二分查找的思想。 主要思路: 使用两次二分查找: 第一次二分查找用于找到…

解决雪花ID在前端精度丢失问题

解决雪花ID在前端精度丢失问题 在现代分布式系统中,雪花算法(Snowflake)被广泛用于生成唯一的ID。这些ID通常是Long类型的整数。然而,当这些ID从后端传递到前端时,JavaScript的精度限制可能会导致精度丢失&#xff0c…

计算机等级考试——二级MSOffice高级应用考试常用函数

二级MSOffice高级应用考试常用函数 使用说明:本文共介绍了在二级 MSOffice 高级应用考试过程中考到的 6 类共 51 个函数,在学习过程建议打开Excel 工作表【公式】-【函数库】,边操作边学习,更易于理解中每个函数参数意义。 一、 …

教程:宏基因组数据分析教程

Orchestrating Microbiome Analysis Orchestrating Microbiome Analysis是一套包含宏基因组各种数据分析的教程,非常安利大家学习。 16S-analysis 16S-analysis是一本用于扩增子16s等微生物数据分析的教程,很适合新手入门学习。 Introduction to micro…

vue跨标签页通信(或跨窗口)详细教程

在 Vue 应用中,跨标签页(或跨窗口)的通信通常涉及到两个或多个浏览器标签页之间的信息共享。由于每个标签页或窗口都是独立的 JavaScript 执行环境,它们不能直接通过 Vue 或其他 JavaScript 库来直接相互通信。但是,有一些方法可以实现这种跨标签页的通信,主要依靠浏览器…

QD1-P5 HTML 段落标签(p)换行标签(br)

本节视频 www.bilibili.com/video/BV1n64y1U7oj?p5 ‍ 本节学习 HTML 标签&#xff1a; p标签 段落br标签 换行 ‍ 一、p 标签-段落 1.1 使用 p 标签划分段落 <p>段落文本</p>示例 <!DOCTYPE html> <html><head><meta charset"…