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

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

   在基于边缘的模版匹配中,我们知道可以有个贪婪度参数可以设置。在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的。

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

  • 7
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值