3

我希望在以 25 FPS 获取新图像的应用程序中提取 SURF 特征(或类似的东西)。我认为特征提取至少接近实时是可能的。我用演示文件提供的相同参数尝试了 OpenSURF,看到在 640x480 的分辨率下,我的 2 GHz Core2 Duo 需要 5 到 8 秒才能获得一张图像,我感到非常震惊。

1)这正常吗?

2) 我可以调整参数以获得更差的结果但更快的执行时间吗?

3)我实际上不需要缩放/旋转不变性,只需要在帧之间(相机处于固定位置)/不同光照条件之间进行跟踪的良好特征。是否有可行的替代方案可以(接近)实时运行?

4

4 回答 4

4

1) 是的,SURF 性能很差是正常的 :(

2)您应该使用其他描述符和检测器,因为我测试过 Orb 是最好和最快的之一,但在我看来,如果您想让 fastets 结果使用 FAST 和 Brief 它没有旋转不变性但它非常快与 SURF 相比 :)

试试这个我希望你会满意并阅读这个

于 2012-01-04T08:14:39.397 回答
2

如果性能是一个问题,您可能想尝试在 OpenCV 的 GPU 模块中实现的 GPU 版本的 SURF:

OpenCV-2.3.1/modules/gpu/src/surf.cpp
于 2012-01-05T11:38:54.567 回答
1

openCV 中 SURF 的问题之一是类型转换量很大(double<->float, float->int),并且由于频繁调用这些基本函数而需要时间。您可以尝试查看源代码并尝试对其进行修改以获得更好的性能。

于 2012-01-05T11:30:58.847 回答
0

你可以玩hessianThreshold参数。它越大,发现的特征就越少,检测它们所花费的时间就越少。

在我的默认值为100 的情况下,需要大约 10 秒才能获得所有匹配项。将值增加到 1000 将时间减少到 1-2 秒,而不会影响最终结果。

有关更多详细信息,请参阅SURF 简介(加速鲁棒功能)

于 2018-05-16T10:54:51.493 回答