前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >【快速阅读四】基于边缘信息的模版匹配中贪婪度参数的简单解析。

【快速阅读四】基于边缘信息的模版匹配中贪婪度参数的简单解析。

作者头像
用户1138785
发布2024-01-25 08:38:37
1720
发布2024-01-25 08:38:37
举报

  对这个课题稍作研究,以便记录。

   在基于边缘的模版匹配中,我们知道可以有个贪婪度参数可以设置。在Halcon的帮助文档中,也有对他进行说明。我们在Halcon那本经典的书上,没有看到对这个参数的解析。不过他也有讲到在计算某个候选位置的得分时,如果满足一定的条件也可以提前结束对得分的判断,而判定这个点不是一个候选点,原文贴图如下: 

   这里我通俗的讲解下为什么可以有这个判断条件,也就是这个公式是如何得到的。

  我们知道,某个点的最大得分必然是1,这只有在每个点都和模版的特征点信息完全一致的情况下获取,这个时候,每个点的得分都是1/n,同时单独一个点的最大得分也是1/n,如果我们设定了目标的最小得分位Smin,那么当计算到第j个点后,还剩下 n-j 个点没有计算得分,那么最理想的情况就是这剩下的 n-j 个点都和模版对应的特征点完全一样,这样,剩下点的最大得分即为:  1/n *(n - j), 此时,如果前n个点的累计得分Sj 再加上后续的最大的理想得分 还小于Smin的话,那这个点肯定就不能满足目标的得分了,即:

  公式稍作移位后即得到:

  即书中的公式。

  当Smin = 0.7时,假如有100个边缘点,则不同的j 和 对应的临界值如下图所示:

  前面三十个点对应的临界值是负数,是没有什么意义的,也么有必要做判断。

  当在程序中做这种判断时,所进行的操作是安全的,不会带来任何逻辑上的错误,也不会因为停止继续计算而造成目标漏判等问题,这个操作也会大大的提高程序的速度,毕竟大部分目标点都是无效的。

  另外,如果更加激进一点的判断手段呢,就是如果前面j个点的累计得分小于 平均值,则认为他不可能得到目标了,即如果符合下式,则直接退出计算:      

  很明显,当我们计算的前j个点恰好位于光照不均匀区或瑕疵区域时,很有可能把有效的目标点给剔除了,这样就丧失了意义,但是在快接近最后一些匹配点时,这样的规则就能较为安全的实现提前退出,因此,在codeproject的一个文章里,就提出了一个带贪婪度参数的一个停止计算公式:

  其中g表示贪婪度参数,其范围是[0,1],当其为0是,即为前述的最安全的公式,为1时,则为后续的最激进的公式。

  这个停止标准呢,在计算特征点时,前面的一些特征点使用的是较为安全的推断公式,随着特征点数量的增加,则越来越向后续激进的公式靠近。

  以下是一些比较曲线:

   其中红色为g = 0.5时的结果,绿色为g=0.7时的结果,蓝色的为安全的结束线,品红色的为最不请安全的停止线。

  其实在实际编程时,还要在前面的那个min公式里加上一个max的,即那个停止值不能小于0的。

  还是感觉这个公式有点不太完美,应该还可以有更为合适的公式的。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2024-01-24,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档