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

create_shape_model(
Template : : //reduce_domain后的模板图像
NumLevels ,//金字塔的层数,可设为“auto”或0—10的整数
AngleStart ,//模板旋转的起始角度
AngleExtent ,//模板旋转角度范围, >=0
AngleStep ,//旋转角度的步长, >=0 and <=pi/16
Optimization ,//设置模板优化和模板创建方法
Metric , //匹配方法设置
Contrast ,//设置对比度
MinContrast 😕/设置最小对比度
ModelID ) //输出模板句柄

1.NumLevels(金字塔的层数),金字塔的层数越大,找到匹配使用的时间就越小。(金字塔的层数越大,提取到的特征越少,精准度越低,所以对应的识别时间少)
如果金字塔的层数设置的太大,模板不容易识别出来,这是需要将find_shape_model函数中MinScore和Greediness参数设置的低一些

2.AngleStart和AngleExtent决定可能的旋转范围,AngleStep指定角度范围搜索的步长;参数AngleStep的选择是基于目标的大小的,如果模板图像太小不能产生许多不同离散角度的图像,因此对于较小的模板图像AngleStep应该设置的比较大。如果AngleExtent不是AngleStep的整数倍, 将会相应的修改AngleStep。

3.对于特别大的模板图像,将参数Optimization设置为不同于’none’的其他数值是非常有用的。如果Optimization= ‘none’, 所有的模型点将要存储。在其他情况下, 按照Optimization的数值会将模型的点数减少. 如果模型点数变少了,必须在find_shape_model函数中将参数Greediness设为一个比较小的值, 比如:0.7、0.8。对于比较小的模型, 减少模型点数并不能提高搜索速度,因为这种情况下通常显着更多的潜在情况的模型必须进行检查。如果Optimization设置为’auto’, create_shape_model自动确定模型的点数。

暂时不需要看这一段: Optimization的第二个值定义了模型是否进行预处理(pregenerated completely),是通过择’pregeneration’或者’no_pregeneration’来设置的。如果不使用第二个值(例如:仅仅设置了第一个值), 默认的是系统中的设置,是通过set_system(‘pregenerate _shape_models’,…)来设置的,对于默认值是 (‘pregenerate_shape_models’ = ‘false’), 模型没有进行预处理. 模型的预处理设置通常会导致比较低的运行时间,因为模型不需要在运行时间时转换。然而在这种情况下,内存的要求和创建模板所需要的时间是比较高的。还应该指出,不能指望这两个模式返回完全相同的结果,因为在运行时变换一定会导致变换模型和预处理变换模型之间不同的内部数据。比如,如果模型没有 completely pregenerated,在find_shape_model函数中通常返回一个较低的scores,这可能需要将MinScore设置成一个较低的值。此外,在两个模型中插值法获得的位置可能略有不同。如果希望是最高精确度,应该使用最小二乘调整得到模型位置。

4.参数Contras决定着模型点的对比度。对比度是用来测量目标与背景之间和目标不同部分之间局部的灰度值差异。MinConstrast将模板从图像的噪声中分离出来,如果灰度值的波动范围是10,则MinConstrast应当设为10;
有时候可能对比度阈值自动设置的结果是不满意的,例如,由于一些具体应用的原因当某一个模型组件是被包含或是被抑制时,或是目标包含几种不同的对比度时,手动设置这些参数效果会更好。因此对比度阈值可以使用determine_shape_model_params函数自动确定,也可以在调用create_shape_model之前使用inspect_shape_mode函数检查效果。

5.Metric参数决定匹配模板的条件,如果为’use_polarity’,则图像中的物体和模板必须有相同的对比度;如果模型是一个亮的目标在一个暗的背景上,那么仅仅那些比背景亮的目标可以找到。如果Metric= ‘ignore_global_polarity’,在两者对比度完全相反时也能找到目标。如果Metric= ignore_local_polarity’, 即使局部对比度改变也能找到模型。例如,当目标包含一部分中等灰度,并且其中部分比较亮部分比较暗时,这种模式是非常有用的。**由于这种模式下find_shape_model函数的运行时间显著增加,最好的方法是使用create_shape_model创建几个反映目标可能的对比度变化的模型,同时使用find_shape_models去匹配他们。**上面三个metrics仅仅适用于单通道图像。如果是多通道图像作为模板图像或搜索图像,仅仅第一个通道被使用。如果Metric=‘ignore_color_polarity’, 即使颜色对比度局部变化也能找到模型。例如,当目标的部分区域颜色发生变化(e.g.从红到绿)的情况。如果不能提前知道目标在哪一个通道是可见的这种模式是非常有用的。在这种情况下find_shape_model函数的运行时间也会急剧增。'ignore_color_polarity’可以使用于具有任意通道数目的图像中。如果使用于单通道图像,他的效果和’ignore_loc al_polarity’是完全相同的。

6.模型图像Template的domain区域的重心是模板的初始位置,可以在set_shape_model_origin函数中设置不同的初始位置。

7.创建好模板后,这时还需要监视模板,用inspect_shape_model()来完成,它检查参数的适用性,还能帮助找到合适的参数;

  • 8
    点赞
  • 56
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Halcon算子find_shape_models是用于在图像中查找形状模板的算子,其基本用法如下: find_shape_models(Image : ModelID, MinScore, NumMatches, Greediness, Overlap, SubPixel, Pose, AngleStart, AngleExtent, ScaleMin, ScaleMax, ScaleStep, Models, Scores, Positions, Orientations) 其中,各个参数的含义如下: - Image:输入图像。 - ModelID:形状模板的ID。 - MinScore:得分的最小阈值。 - NumMatches:匹配结果的最大数量。 - Greediness:控制贪心匹配的参数。 - Overlap:两个匹配的形状模板之间的最小重叠区域。 - SubPixel:是否使用亚像素级匹配。 - Pose:输出匹配的位姿参数。 - AngleStart:旋转角度的起始值。 - AngleExtent:旋转角度的范围。 - ScaleMin:缩放的最小值。 - ScaleMax:缩放的最大值。 - ScaleStep:缩放的步长。 - Models:匹配的形状模板。 - Scores:匹配的得分。 - Positions:匹配的位置。 - Orientations:匹配的方向。 具体来说,MinScore是一个0到1之间的分数,表示匹配模板必须达到的最低得分。NumMatches是匹配结果的最大数量,Greediness控制贪心匹配的程度。Overlap是两个匹配形状之间的最小重叠面积,SubPixel控制是否使用亚像素级别的匹配。Pose是一个输出参数,返回匹配形状的位姿参数。AngleStart和AngleExtent是旋转角度的起始值和范围,ScaleMin、ScaleMax和ScaleStep是缩放的最小值、最大值和步长。Models、Scores、Positions和Orientations是返回的匹配结果,其中Models是匹配的形状模板,Scores是匹配的得分,Positions是匹配的位置,Orientations是匹配的方向。 使用find_shape_models算子需要先创建形状模板,具体可以参考Halcon官方文档中的create_shape_model算子

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值