Halcon算子—find_shape_model参数解析及优化

Halcon实战指南:从create_shape_model到find_shape_model的完整模板匹配流程解析 本文详细解析了Halcon中从create_shape_model到find_shape_model的完整模板匹配流程。通过实战经验,深入讲解了模板创建、参数调优、搜索策略及结果可视化等关键步骤,帮助开发者掌握工业视觉定位的核心技术,实现高效稳定的零件识别与定位。 阅读详情
AI摘要

本文详细介绍了find_shape_model函数在图像搜索中的关键参数,如模板定位、旋转范围、匹配阈值、搜索精度和金字塔层级等。掌握这些参数有助于提高模板匹配的效率和准确性。

find_shape_model(Image : : ModelID, AngleStart, AngleExtent, MinScore, NumMatches, MaxOverlap, SubPixel, NumLevels, Greediness : Row, Column, Angle, Score)

find_shape_model(Image : : //搜索图像
ModelID, //模板句柄
AngleStart, // 搜索时的起始角度
AngleExtent, //搜索时的角度范围,必须与创建模板时的有交集
MinScore, //最小匹配值,输出的匹配的得分Score 大于该值
NumMatches, //定义要输出的匹配的最大个数
MaxOverlap, //当找到的目标存在重叠时,且重叠大于该值时选择一个好的输出
SubPixel, //计算精度的设置,五种模式,多选2,3
NumLevels, //搜索时金字塔的层数
Greediness : //贪婪度,搜索启发式,一般都设为0.9,越高速度快,容易出现找不到的情况
Row,Column, Angle, Score) //输出匹配位置的行和列坐标、角度、得分。
注意:
其输出参数共有4个。分别是目标在图像中的坐标(Row,Column)—重心坐标、目标的旋转角度以及匹配分值。

1.Row、Column的坐标并不是模板在搜索图像中的精确位置,因此不能直接使用他们。这些数值是为了创建变换矩阵被优化后的,你可以用这个矩阵的匹配结果完成各种任务,比如调整后续步骤的ROI。

2.Score是一个0到1之间的数,是模板在搜索图像中可见比例的近似测量。如果模板的一半被遮挡,该值就不能超过0.5。参数MinScore设置的越大,搜索的就越快。如果模板在图像中没有被遮挡,MinScore可以设置为0.8,甚至为0.9

3.Image的domain定义了模型参考点的搜索区域,模型参考点是在create_shape_model中用来创建模型的图像的domain区域的重心。不考虑使用函数set_shape_model_origin设置不同的初始位置。在图像domain区域的这些点内搜索模型,其中模型完全属于这幅图像。这意味着如果模型超出图像边界,即使获得的质量系数(score)大于MinScore也不能找到模型。这种性能可以通过set_system(‘border_shape_models’,‘true’)改变,这样那些超出图像边界,质量系数大于MinScore的模型也能找到。这时那些在图像外面的点看作是被遮挡了,可以降低质量系数。在这种模式下搜索的时间将要增加。

4.**参数AngleStart和AngleExtent确定了模板搜索的旋转角度。该角度尽量是create_shape_model算子中给定的角度一致。**参数AngleStart和AngleExtent确定了模型搜索的旋转角度,如果有必要,旋转的范围会被截取成为create_shape_model函数中给定的旋转范围。这意味着创建模型和搜索时的角度范围必须真正的重叠。在搜索时的角度范围不会改变为模2*pi的。为了简化介绍,在该段落剩下的部分所有角度都用度来表示,而在find_shape_model函数中使用弧度来设置的。因此,如果创建模板时,AngleStart=-20°、AngleExtent=40°,在搜索模板函数find_shape_model中设置AngleStart=350°、AngleExtent=20°,尽管角度模360后是重叠的,还是会找不到模板的。为了找到模板,在这个例子中必须将AngleStart=350°改为AngleStart=-10°。

5.参数MinScore定义模板匹配时至少有个什么样的质量系数才算是在图像中找到模板。MinScore设置的越大,搜索的就越快。如果模板在图像中没有被遮挡,MinScore可以设置为0.8这么高甚至0.9。

6.NumMatches定义了在图像上找到模板的最大的个数。如果匹配时的质量系数大于MinScore的目标个数多于NumMatches,仅仅返回质量系数最好的NumMatches个目标位置。如果找的匹配目标不足NumMatches,那么就只返回找到的这几个。参数MinScore优于NumMatches。
**如果Image中仅有1个目标,将NumMatches设置为1,将MinScore设置较低,比如0.5。该方式是一种较健壮的在Image中找到匹配目标的参数设置。
**
7.如果模型具有对称性,会在搜索图像的同一位置和不同角度上找到多个与目标匹配的区域。参数MaxOverlap是0到1之间的,定义了找到的两个目标区域最多重叠的系数,以便于把他们作为两个不同的目标区域分别返回。重叠的计算方法是基于找到的目标区域的任意方向的最小外接矩形(看smallest_rectangle2)。如果MaxOverlap=0, 找到的目标区域不能存在重叠, 如果MaxOverla p=1,所有找到的目标区域都要返回。如果找到的两个目标区域彼此重叠并且大于MaxOverlap,仅仅返回效果最好的一个。

8.SubPixel确定找到的目标是否使用亚像素精度提取。如果SubPixel设置为’none’(或者’false’ 背景兼容),模型的位置仅仅是一个像素精度和在create_shape_model中定义的角度分辨率。如果SubPixel设置为’interpolation’(或’true’),位置和角度都是亚像素精度的。在这种模式下模型的位置是在质量系数函数中插入的,这种模式几乎不花费计算时间,并且能达到足够高的精度,被广泛使用。然而在一些精度要求极高的应用中,模板的位置应该通过最小二乘调整决定,比如通过最小化模板点到相关图像点的距离。与 ‘interpolation’相比,这种模式需要额外的计算时间。对于最小二乘调整的模式有:‘least_squares’, ‘least_squares_high’, 和’least_squares_very_high’。他们可用来定义被搜索的最小距离的精度,选择的精度越高,亚像素提取的时间越长。其级别越高,耗时越长。一般情况下,用’least_squares’能达到时间和精度的平衡。
然而,通常SubPixel设置为’interpolation’。如果希望设置最小二乘就选择’least_squares’,因为这样才能确保运行时间和精度的权衡。
如果目标相对于模板稍微有形变,其匹配的分值会较低。对于这样的目标,可在参数SubPixel额外传递一个最大允许目标变形的参数,‘max_deformation 1’,字符串中的数值是0到32之间的整数值。0代表不允许变形。**较高的最大允许变形值导致运行时长的增加且及承担了更高的匹配错误的风险。因此,最大变形应该选择尽可能的小。**为了获取一个有意义的分数值以及避免匹配错误,推荐把允许变量和最小二乘法联合使用。

9.NumLevels是在搜索时使用的金字塔层数,金字塔就是按图像分辨率将图像拆成一层一层的,金字塔层数越多,匹配速度越快。如有必要,层数截成创建模型时的范围。如果NumLevels=0,使用创建模板时金字塔的层数。另外NumLevels还可以包含第二个参数,这个参数定义了找到匹配模板的最低金字塔层数。NumLevels=[4,2]表示匹配在第四层金字塔开始,在第二层金字塔找到匹配(最低的设为1)。可以使用这种方法降低匹配的运行时间,但是这种模式下位置精度是比正常模式下低的,所谓正常模式是在金字塔最底层匹配。因此如果需要较高的精度,应该设置SubPixel至少为’least_squares’。如果金字塔最底层设置的过大,可能不会达到期望的精度,或者找到一个不正确的匹配区域。这是因为在较高层的金字塔上模板是不够具体的,不足以找到可靠的模板最佳匹配。在这种情况下最低金字塔层数应设为最小值。
注:在图像失焦、镜头出现模糊的情况下进行模板匹配时,需将该值设置为负,比如[0,-1],find_shape_model将返回金字塔最低级别上找到匹配的匹配项来找到待测目标。
另外,不同图像间,金字塔级别可能略有不同。为了方便对质量较差的图像匹配,在匹配时可以确定最低的金字塔级别。这里的技巧是,最低金字塔层可用负数指明。例如,如果NumLevels为[4,-2],匹配从第4层金字塔开始,跟踪到最低金字塔级别。如果在这层金字塔找不到匹配目标,继续降低金字塔级别进行搜索,把找到至少一个匹配目标的金字塔级别最为最低金字塔级别,并返回找到的目标。

10.参数Greediness确定在搜索时的“贪婪程度”。如果Greediness=0,使用一个安全的搜索启发式,只要模板在图像中存在就一定能找到模板,然而这种方式下搜索是相对浪费时间的。如果Greediness=1,使用不安全的搜索启发式,这样即使模板存在于图像中,也有可能找不到模板,但只是少数情况。如果设置Greediness=0.9,在几乎所有的情况下,总能找到模型的匹配。

最后,该模板寻找算子在找不到目标的情况下较为耗时,通过算子
set_shape_model_param (ModelID, ‘timeout’, 1000)
能设置匹配时长,如果find_shape_model达到’timeout’,立刻终止执行,无输出匹配结果,返回一个错误代码9400(H_ERR_TIMEOUT)。

halcon中find_shape_model算子的应用攻略 是 HALCON 中用于在图像中定位形状模型的算子。这个算子非常适合于在图像中搜索已知形状的实例,比如在生产线上定位特定部件,或者在医学图像中识别特定结构。以下是使用。 阅读详情

相关推荐

halcon学习 基于形状的模板匹配find_shape_model

find_shape_model

圆 2156

[Halcon&算子] find_shape_model()详解和解决匹配函数耗时问题

find_shape_model(Image, //搜索图像 ModelID, //模板句柄 AngleStart, // 搜索时的起始角度

Loewen丶的小窝 3万+

Halcon印刷检测例程实战解析:从模板匹配到缺陷识别的工业视觉应用

在工业自动化领域,机器视觉是实现产品质量自动化检测的核心技术,其原理是通过图像采集、处理与分析,替代人眼进行测量与判断。基于图像处理与模式识别的传统视觉方案,因其高可控性、强可解释性及对样本依赖低的特点,在工业场景中具有重要技术价值,广泛应用于定位、测量、识别与检测等任务。其中,印刷品质量检测是一个典型应用场景,涉及字符、图案的完整性、位置及外观检查。本文将以Halcon视觉软件中的经典印刷检测例程为切入点,深入剖析其如何结合模板匹配与Blob分析等关键技术,构建稳定可靠的缺陷检测流程,为工程师解决实际工业

weixin_33871366的博客 376

halcon 模板匹配 -- find_shape_model

find_shape_model(Image : : //搜索图像 ModelID, //模板句柄 AngleStart, // 搜索时的起始角度 AngleExtent, //搜索时的角度范围,必须与创建模板时的有交集 MinScore, //最小匹配值,输出的匹配的得分Score大于该值 NumMa...

机器视觉 2074

机器视觉NCC分类识别:Halcon模板建库与置信度调优全攻略

机器视觉场景中,目标定位与类别判定是产线自动化的基础需求,而模式匹配作为经典方案,在纹理灰度差异显著的分类任务中依然高效。归一化互相关(NCC)通过滑动窗口比较模板与搜索子图的灰度分布相似度,对整体亮度漂移具有天然鲁棒性,适合以表面图案、字符、纹理为分类依据的检测场景。相比深度学习,NCC无需GPU与大量样本,可解释性强,尤其适合类别少、快速部署的工程落地。在Halcon中,NCC分类识别采用'一类一模型、多模型轮询、分数最高者胜出'的架构,借助create_ncc_model与find_ncc_model

weixin_33402252的博客 227

HALCON实现工业硬币检测:模板匹配与灰度变换实战

计算机视觉中的模板匹配技术是工业检测的核心方法之一,通过特征比对实现目标定位。其原理是预先建立标准模板,在实时图像中搜索相似区域,结合金字塔算法提升运算效率。在工业质检场景中,该技术能有效解决产品定位、缺陷识别等问题,特别适用于金属制品等反光物体的检测。本文以硬币检测为例,详细解析如何利用HALCON视觉库实现高精度模板匹配,重点介绍动态灰度补偿和ROI优化等工程技巧,解决实际工业场景中的光照不均、表面氧化等挑战。通过多级金字塔匹配和亚像素精度调整,系统可实现99%以上的检测准确率,满足高速产线需求。

weixin_33862993的博客 378

halcon几何匹配相关算子与参数解析

1、create_shape_model(Template : : NumLevels, AngleStart, AngleExtent, AngleStep, Optimization, Metric, Contrast, MinContrast : ModelID) Template : 用于创建模板的图像 NumLevels: 最大金字塔级别,级别越高速度越

天上人间的专栏 2953

【Halcon】set_system

'split_tuple'启用元组并行化方法,'split_channel'启用图像通道上的并行化,'split_domain'启用图像域上的并行化,而'split_partial'启用操作符的部分、内部并行化。这样,可以将处理线程的数量调整为处理器的数量,以获得最佳效率。此参数决定在create_shape_model_3d、find_shape_model_3d、project_shape_model_3d和project_object_model_3d中是否使用显卡加速的隐藏面移除功能。

T 1099

Halcon 模板匹配 Shape-Based Matching原理

一种基于物体轮廓梯度方向的多分辨率、由粗到细的相似性搜索算法。它的强大之处在于将人类视觉中“看形状”的直觉,转化为了一套高效、鲁棒的数学计算和搜索流程,使其成为工业视觉定位应用中无可替代的工具。形状匹配是在图像中找到与模板形状最相似的目标的技术。在 Halcon 中,它主要用来处理目标位置、角度、缩放变化等情况。基于轮廓的形状匹配(Contours-based / Shape-based Matching)

weixin_39354845的博客 888

halcon学习拓展系列—patmax如何用halcon实现之形状匹配篇(一)

如果说Blob分析是halcon的精髓,那么patmax就是Cognex的精髓,一点也不夸张,同事展示了patmax的匹配效果,不管是明的,暗的,模糊的,旋转的,背景变化的,极性不同的,一致性不好的,均能匹配到,感叹:halcon单纯某个匹配算子实在做不到!不得不承认Cognex研发团队的优秀 halcon的匹配算子也是比较多的了,比如 1)find_shape_model(标准几何形态匹配) 2)find_ncc_model(灰度匹配/互相关度匹配) 3)find_scale_sha...

谷棵的专栏 2662

工程经验分享:PCIE(1)

本文介绍AXI Bridge For Pcie Express Gen3 Subsystem 的使用方法。这个IP兼具简单与实用性,将PCIE协议层实现于内部,仅留出AXI接口供开发者使用。开发者不需要处理复杂的PCIE协议数据,只需要对AXI总线有所了解即可,十分符合Xilinx一贯的开发风格。本文无关PCIE协议本身,仅分享实用性的工程经验,以PCIE IP为核心,一步一步搭建一个简单的子系统,以此说明用法。文中所有内容均已通过项目检验。

weixin_42415266的博客 3842

halcon之缺陷检测

通过自动确定全局阈值,将单通道图像分割为前景(目标)和背景区域,输出二值化结果。适用于光照均匀且目标与背景对比度明显的场景(如字符分割)‌。是 HALCON 中用于图像二值化分割的关键算子,适用于双峰直方图场景下的目标提取。用于光照均匀背景下缺陷或目标的高效分割,如检测食品包装中的字符印刷质量‌。提取扫描文档中的文字区域,尤其适用于背景与文字灰度差异明显的场景‌。:基于类间方差最大化,适用于目标与背景灰度分布差异显著的情况‌。依赖全局阈值,适用于光照均匀场景‌。:提取亮色目标(灰度值高于阈值)‌。

lingxiao16888的博客 1129

语言随机效应模型_线性混合效应模型 VS 方差分析

线性混合效应模型相比方差分析具有很多优点。为了让大家更直观的了解,我们来做一下两者的对比。基于模拟的方法,生成了以下数据dat_sim:这种数据格式是长格式,也就是从实验软件导出来的那种数据格式。这种数据格式可以直接使用线性混合效应模型进行分析。该实验设计是被试内项目间的单因素两水平设计。category是自变量,两个水平分别是outgroup和ingroup,outgroup比ingr...

weixin_31960565的博客 2688

[机器视觉]halcon应用实例 用户自定义多ROI模板匹配

ROI示例的基础上继续扩展,更靠进实标情况。为了使ROI匹配更灵活,就要求可以让用户或工程根据实际使用情况自己去画ROI,想画几个是几个。数量不能在代码里写死。这次升级的主要是增加了一个while循环根据用户的鼠标按键来进行判断是否继续画,还是退出画ROI。

StevenChen的博客 1249

别再瞎猜了!三角形接法PMSM的相电流到底怎么算?实测线电流转换公式与避坑指南

本文深入解析三角形接法永磁同步电机(PMSM)在FOC控制中的相电流计算误区,提供实测线电流转换公式与避坑指南。针对矢量控制系统中常见的√3换算错误,详细阐述正确的电流重构算法、硬件采样要点及软件优化技巧,帮助工程师实现精确控制并避免电机损坏。

weixin_30367873的博客 465

基于MATLAB的最大重叠离散小波变换(MODWT)算法详解

最大重叠离散小波变换(Maximal Overlap Discrete Wavelet Transform, MODWT)是DWT的重要改进形式,由Percival和Walden等人在20世纪90年代系统提出并完善。MODWT通过消除下采样操作,采用样本平移不变的分解方式,解决了DWT的多个固有缺陷。MODWT的核心创新在于取消下采样环节。与DWT每级分解后对滤波输出进行二分下采样不同,MODWT在每一级都使用相同的滤波器,但通过插入零值的方式调整滤波器系数,保持每级系数数量与原始信号相同。

qq_42212808的博客 115

Halcon 23.11 亚像素轮廓提取:5步实现1/50像素精度的工业测量

本文详细介绍了Halcon 23.11在工业测量中实现1/50像素精度的亚像素轮廓提取技术。通过五个关键步骤,包括图像采集优化、智能预处理、亚像素边缘提取、轮廓筛选和几何测量,该技术显著提升了工业检测的精度和效率。适用于精密电子、医疗器械等高精度制造领域,帮助用户突破传统像素级检测的限制。

weixin_30882895的博客 421

Python 爬虫实战:爬取电商平台商品信息(价格 / 销量 / 评价)

摘要:本文详细介绍基于Python的电商商品信息爬取技术方案,以京东商品详情页为例,对比分析静态(BeautifulSoup)和动态(Selenium)两种爬取方式的实现逻辑。静态爬取适合获取基础信息,而动态爬取可解决JS渲染数据的获取问题。文章包含完整的代码实现、反爬规避策略及数据存储方案,涵盖商品名称、价格、销量、评价等核心数据提取。同时强调爬虫的合规使用,提供扩展方向建议,为电商数据采集提供实用技术参考。

2503_91057718的博客 2021

保姆级教程:用HALCON的NCC和形状匹配搞定工业视觉定位(附完整代码)

本文深入解析HALCON图像匹配技术在工业视觉定位中的应用,重点介绍NCC(归一化互相关)和形状匹配两种核心算法的实现与优化。通过完整代码示例,展示如何应对芯片定位、零件检测等工业需求,提升生产线效率与质量。文章还提供选型指南、性能优化技巧及疑难问题解决方案,助力开发者快速掌握HALCON图像匹配技术。

weixin_30696427的博客 325

5.4 GTT BO的内存分配分析

本文分析了AMD GPU驱动中的GTT技术实现。GTT作为GPU页表,负责管理主机内存与GPU虚拟地址的映射,支持大容量内存访问和统一寻址。文章详细介绍了GTT的核心数据结构amdgpu_gtt_mgr、初始化流程,以及BO(Buffer Object)创建时GTT区间的分配与释放机制。GTT管理通过TTM框架实现分层设计,提供内存统计、兼容性检查等接口,并支持动态迁移、多进程隔离等高级特性。该机制为AMD GPU提供了高效灵活的内存管理基础。

图形/计算GPU的驱动与虚拟化技术分享园地 3728

DBT关键切片重建算法

DBT通过有限角度(通常15°~50°)扫描,获取一系列低剂量投影图,重建出三维断层图像。传统FBP在稀疏角度下会产生严重的“伪影拖尾”和层间干扰。临床诊断中,放射科医生往往只关注几层关键切片(即病灶所在层),其余层仅作参考。

AI的内部世界的博客 89

[机器视觉]halcon应用实例 单ROI模板匹配

1.1.通过Blob方法获取需要测量的Region(本示例中没有做这一步,做一这步的主要目的是保证提取的模板轮廓是完整的)1.3.1 获得特定区域Region位置的图像。1.2.1 用工具画一个区域。1.3.2 用图像创建形状模板。2.2 使用已有模板句柄(形状模板)来匹配。1.1.1 主要运用图像。1.2.2 生成矩形。任何程序主要是基础+实现思路步骤。2.3 把匹配轮廓显示到图像中。1.3.锁定ROI并创建模板。1.2.在图片中选取ROI。2.1 加载测试图像。单ROI模板匹配示例。

StevenChen的博客 1621

基于STM32+OneNet设计的物联网智慧路灯(100)

本次设计的智能路灯采用STM32芯片和OneNet物联网平台进行连接,开发出支持太阳能充电锂电池供电、GPS定位上传位置信息、手动/自动控制路灯开关、环境光照调节、红外传感器检测周围人员、空气质量监测等多项功能。同时,当路灯发生异常情况时,系统可以自动发送邮件或短信到指定邮箱或电话。

7725

Halcon模板匹配全解析:从灰度匹配到形状匹配的实战指南

模板匹配是机器视觉中最基础也最关键的技术之一,它的核心目标是在复杂图像中快速、稳定地定位已知目标的位置与姿态。无论是机械臂抓取、产品检测还是自动化装配,模板匹配都扮演着视觉系统“地基”的角色。在实际工业场景中,光照变化、背景干扰、目标形变等问题都会直接影响匹配精度,因此选对匹配方法至关重要。Halcon作为工业视觉领域的常用开发库,提供了灰度匹配、NCC相关匹配和形状匹配三类方案。其中形状匹配依靠边缘梯度方向特征,在鲁棒性、速度和精度上表现均衡,成为产线定位的主力方法。本文围绕Halcon模板匹配展开,系统

weixin_34151004的博客 198

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

halcon 形状匹配

1、例子 指定模板图像区域(也可以用draw_rectangle1画一个矩形) Row1 := 188 Column1 := 182 Row2 := 298 Column2 := 412 gen_rectangle1 (ROI, Row1, Column1, Row2, Column2) reduce_domain (ModelImage, ROI, ImageROI)   创建模板 如果创...

fanre的专栏 1万+

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

Halcon set_system算子解析

并行化信息:请注意,这些参数中的一些是以独占方式设置的,这意味着它们会阻止其他线程,直到没有其他操作符访问HALCON库。 1. 以*)标记的参数:全局有效,且排外 2. 无*)标记且不以tsp_为前缀:全局有效,且非排外。即不会阻塞其它调用操作 3. tsp_前缀: 1). 无tsp_前缀,对当前线程以及在该操作之后启动的线程均有效,但在调用之前启动的线程无效 2). 有tsp_前缀,仅对当前线程有效。其它已经运行的线程不受影响 Graphi...

贾路飞的博客 1万+

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

上一篇: Halcon算子—create_shape_model参数解析及优化
下一篇: detect_mura_defects_blur.hdev例程解析
Expect for future
博客等级 码龄6年 369粉丝 112原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值