[英]OpenCV - SURF Feature Comparison
我很好奇OpenCV
功能描述符是如何比较的。 例如,我可以使用cvExtractSURF()
来获取功能列表及其64位(或128位)描述符,在哪里可以找出如何比较两个描述符?
在逐步介绍一些示例代码时,对我来说,看起来我的两个“匹配”特征具有非常不同的描述符(至少通过数值)。
有没有人想出如何采取两个描述符数组并进行比较?
谷歌搜索没有太多帮助......
干杯,布雷特
您可能希望查看本文不变特征检测器:调查 。 这是一篇很棒的论文,描述了广泛使用的特征探测器,包括SURF。
我发现的一个有效方法(这是从一些OpenCV示例代码中获得灵感)是 - 使用K = 2的ak最近邻搜索来查找查询对象中每个描述符的2个匹配项。 现在,如果距离(第一场比赛)<0.6 *距离(第二场比赛),则将第一场比赛视为“好比赛”。
你需要这个以及为什么一个简单的1最近邻搜索不够的原因是因为它给出了很多误报。
SURF特征是64维单位矢量。 比较两个特征向量的一种自然方法是计算它们的点积。 如果接近1,则它们具有强烈的正相关性(=它们相似)。 如果它接近0,它们几乎是正交的(没有相关性)。 如果它小于零,则它们具有负相关性。 根据您的应用程序,您可能会考虑匹配(在这种情况下,您将采用点积的绝对值)或认为它比正交更差。
尝试计算一些点积,看看你得到了什么结果。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.