哪个特征检测算法最简单易学?

4

我正在学习特征检测算法。我已经研究了一些选项:SIFT、SURF、BRISK、FREAK等。它们在数学上都相当复杂。相反,我想一步一步地学习,因此我正在寻找一种简单的方法,不需要像SURF那样好。你会推荐哪个算法来学习和实现呢?


维基百科对于特征检测的文章列出了许多算法,其中一些看起来相当容易理解。当然,您需要理解一些数学知识,但是您只需花费几个小时的学习就可以做到。 - Jim Mischel
4个回答

8
首先要记住的是检测器和描述符之间的区别。检测器是一种用于在图像中检测兴趣点的算法,通常是角落或类似结构的斑点中心。然后,如果您需要跨图像匹配这些点,就会计算描述符,它们是表示兴趣点周围补丁的某种值向量。
这应该有助于消除一些困惑。例如,“good features to track”,也称为最小特征值角点检测器,是一个兴趣点检测器。FREAK是一种特征描述符。SIFT、SURF和BRISK包括检测器和描述符。然而,通常情况下,您可以混合和匹配检测器和描述符。
因此,首先,您应该查看像GFTT和Harris这样的角点检测器,以及Laplacian blob detector。大多数较新的兴趣点检测器都是检测角落或斑点的更快方法。
对于描述符,请从SIFT开始。它可能看起来有点可怕,但这是第一个有效的描述符,也是其他所有描述符的灵感和基准。

3
如果你要开始简单的话,那么可能最简单的特征描述符就是在检测到的特征周围取一个NxN的正方形,然后连接所有像素值。但是这在实践中效果不好,因为它对光照、旋转、尺度等小变化非常敏感 - 但你可以用图像的两个翻译版本测试你的实现。
目前看来“真正有效”的最简单的特征描述符似乎是BRIEF描述符(http://cvlabwww.epfl.ch/~lepetit/papers/calonder_eccv10.pdf),它随机比较相邻像素值的配对,以构建二进制描述符。请注意,它不是尺度或旋转不变的,为了达到这个目的,你需要使用许多扩展之一,比如AKAZE、BRISK、FREAK或ORB。

点赞!二进制描述符易于理解和实现,性能也相当不错。在所有二进制描述符中,BRIEF、ORB、BRISK和FREAK中,BRIEF是最早和最简单的,可以作为一个很好的起点。 - Yu Lu

1

我认为你可以尝试使用GFTT:Good features to track,它是基于Shi-Tomasi定义和方程的。它非常古老,但我认为也很容易阅读。


1
在我看来,SIFT是一种很好的算法。可以访问vlfeat.org获取他们开发的免费代码,并且有多个易于实现的教程。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接