2012-11-12 46 views
4

我想在opencv中使用Freak来检测特征并提取描述符,然后构建我的BOW词汇表,并为每个图像使用词汇表来匹配BOW。你知道,整个事情。我知道BOW可以与SIFT或SURF等其他描述符一起使用,但我不清楚Freak描述符是二进制的,它可以与BOW一起使用。更具体地说,当opencv构建BOW词汇表时,它使用k-means集群。我不清楚k-均值聚类算法使用什么距离函数。对于像Freak这样的二进制描述符,海明距离似乎是唯一的选择。opencv怪胎 - 我可以在BOW中使用Freak特征描述符吗?

在我看来,opencv k-means在计算距离时只使用欧几里德距离,无赖。看起来我必须建立自己的k-means和我自己的词汇匹配。任何聪明人都知道解决方法?

谢谢!

+0

不要在标题中包含标签的详细信息,请在提问之前阅读这个http://meta.stackexchange.com/questions/19190/should-questions-include-tags-in-their-titles。 –

+0

我认为你应该实现你自己的汉明距离k-means。 – luhb

+0

FREAK只是一个描述符。为了检测,您可能需要使用BRISK。 –

回答

1

我在纸上读到Freak并不容易被使用。以下是论文的摘录“......这些算法不能很容易地用于许多检索算法中,因为它们必须与汉明距离进行比较,汉明距离不容易适用于加速的搜索结构,例如词汇树或近似最近邻居( ANN)....“ (ORB,FREAK和BRISK)

0

FREAK适用于局部敏感性散列。您可以将它与OpenCV中包含的FLANN(快速近似最近邻居)一起使用。

对于BOW,只有描述符的前5,6,7,8个字节可能足以构造树。

相关问题