我正在测试对象,以将与Sift和Surf与C++和OpenCV进行匹配。
Surf 声称速度更快,并且 Sift 声称比Surf可以检测许多关键点。我想确定哪种算法最准确。
但是我很困惑要根据时间或匹配的关键点来确定准确性。有人可以向我解释如何确定哪种算法最准确吗?从哪一个因素来确定其准确性?
This is the results of my experiments
最佳答案
我用来计算比率。那么速度,SURF比SIFT快多少?您执行timeSift / timeSurf *100。因此,SIFT比SURF慢多少倍。
关于准确性,它更加复杂。您可以按最小距离比率应用匹配的过滤器和/或先进行一些RASNAC过滤。然后,您可以比较matchSift / matchesSurf,与SIRF相比,SIFT获得的匹配要多多少倍。但是即使这样,您在任何一种情况下都可能会得到错误的匹配,因此,平均绘制匹配并查看哪个看起来更好/更准确是一个好主意。
做统计检验。不仅是两张图像,还有几束图像重复相同的测试,并取平均比率timeSift / timeSurf和平均比率matchSift / matchesSurf。
为了结束(当然具有平均值),我将执行以下操作
speedRatio=timeSift/timeSurf
matchesRatio=matchesSift/matchesSurf
R=matchesRatio/speedRatio.
-If R>1 then SIFT worths it .
-If R<1 then SURF if definitively more convenient
If R=1 its the same
关于opencv - 筛选与冲浪。哪个更准确?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43772794/