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

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

时间:2024-01-28 21:05:29浏览次数:31  
标签:得分 个点 模版 参数 贪婪 公式 解析

基于边缘的匹配有个贪婪度的参数,其对提高查找目标的速度有着比较关键的作用,本问简单的记录了下对这个参数的一些认识和推导。

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

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

      

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

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

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

       

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

  公式稍作移位后即得到:

        

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

  即书中的公式。

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

                  

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

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

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

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

                                     

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

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

      

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

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

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

  以下是一些比较曲线:

            

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

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

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

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

  

 

翻译

搜索

复制



标签:得分,个点,模版,参数,贪婪,公式,解析
From: https://blog.51cto.com/u_15341345/9454187

相关文章

  • MyBatis 源码系列:MyBatis 体系结构、六大解析器
    体系结构MyBatis是一个持久层框架,其体系结构分为三层:基础支持层、核心处理层和接口层。基础支持层包括数据源模块、事务管理模块、缓存模块、Binding模块、反射模块、类型转换模块、日志模块、资源加载模块和解析器模块。这些模块为MyBatis提供了基础功能,为核心处理层提供了良好......
  • Qt 深度解析QMap与QHash
    一、QMap深度解析1、QMap是一个以升序键顺序存储键值对的数据结构(1)QMap原型为classQMap<K,T>模板(2)、QMap中的键值对根据key进行了排序(3)、QMap中的key类型必须重载operator<(小于操作符)2、QMap使用实例一 3、QMap使用实例二4、QMap的注意事项(1)、通过key获取Value时......
  • 安卓反编译机制,应用场景以及工具解析
    一、引言随着移动应用的普及,安卓系统成为了市场上的主流操作系统之一。然而,安卓应用的源代码往往受到版权保护,开发者需要对其安全性进行维护。此时,反编译技术应运而生,成为保障应用安全的重要手段。本文将详细介绍安卓反编译的机制、应用场景、相关工具及技术,并对其优劣进行分析。二......
  • Django ORM解析
    在深入讨论Django的ORM(Object-RelationalMapping,对象-关系映射)之前,让我们先理解一下什么是ORM。ORM是一种编程技术,用于在面向对象的软件和关系数据库之间建立一种可兼容的系统。简单来说,ORM能够让你使用Python(或其他编程语言)来操作数据库,就像你在操作Python对象一样。Django的O......
  • 企业培训革新:在线教育系统源码的全面解析
    如今,在线教育系统的兴起为企业提供了全新的解决方案,使得培训不再受到时间和地域的限制。一、在线教育系统的关键组成在线教育系统的源码包含众多关键组成部分,其中包括: 1.1用户管理模块用户管理模块负责管理学员和教员的信息,包括注册、登录、个人信息维护等功能。通过精细的用户管......
  • 域名解析的一些名词解释
    域名解析名词解释记录类型1.CNAMECNAME记录是用来指定域名对应的别名记录。通过CNAME记录可以将域名指向另一个域名上。2.AA记录是用来指定域名对应的IP地址记录。通过A记录,可以将域名指向到自己的网站服务器的IP地址上,从而实现通过该域名找到相应的网站。3.NSNS记录时用......
  • ClickHouse(22)ClickHouse集成HDFS表引擎详细解析
    HDFS这个引擎提供了与ApacheHadoop生态系统的集成,允许通过ClickHouse管理HDFS上的数据。这个引擎提供了Hadoop的特定功能。用法ENGINE=HDFS(URI,format)URI参数是HDFS中整个文件的URIformat参数指定一种可用的文件格式。执行SELECT查询时,格式必须支持输入,以及执行INSE......
  • [职场] 互联网行业的技术面试题以及解析
    互联网行业是这几年的热门行业,很多小伙伴都想要进入互联网行业,今天小编给大家分享一些渝新欧额关于互联网行业的技术面试题以及解析。1、什么是服务注册服务提供者在启动时,会向EurekaServer发送一次情求,将自己注册到Eureka注册中心中去。2、什么是服务续约在注册服务完成以后,服务提......
  • Python 多线程的局限性及适用场景解析
     Python是一门功能强大且广泛应用的编程语言,然而在使用多线程方面,它存在一些局限性。本文将探讨Python多线程的局限性,并分析其适用场景,帮助读者更好地理解Python多线程的实际运用。 正文: 一、Python的全局解释器锁(GIL) Python的全局解释器锁(GlobalInterpreterLock,简称GIL)是P......
  • 《安富莱嵌入式周报》第331期:单片机实现全功能软件无线电,开源电源EEZ升级主控,ARM 汇编
    周报汇总地址:http://www.armbbs.cn/forum.php?mod=forumdisplay&fid=12&filter=typeid&typeid=104 目录:1、单片机实现低配版全功能软件无线电,范围0.5-30MHz,支持SSB、AM、FM和CW2、TI整理的ARM汇编用户指南3、ADI差分链路的SPI扩展器LTC4332,支持1200米4、开源串口,SPI,I......