检测 SURF 功能 - 对性能感到失望

发布于 2024-12-25 05:40:39 字数 298 浏览 4 评论 0原文

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

1)这正常吗?

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

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

I was looking to extract SURF features (or something similar) in an application that gets new images at 25 FPS. I thought feature extracting would be possible at least close to real time. I tried OpenSURF with the same parameters that are supplied by the demo file, and was quite devastated to see that at a resolution of 640x480 my 2 GHz Core2 Duo takes 5 to 8 seconds for a single image.

1) Is that normal?

2) Can I adjust parameters to get worse results but faster execution time?

3) I actually do not require scale / rotation invariance, just good features to track between frames (the camera is in a fixed position) / between different lighting conditions. Is there a viable alternative that might run (near) real time?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

夜灵血窟げ 2025-01-01 05:40:40

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

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

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

1) Yes it is normal SURF is poor on performance :(

2) You should use other descriptor and detector, as I tested the Orb is one of the best and fastest, but in my opinion if You want to have the fastets result use FAST and BRIEF it does not have rotation invariance but it is extremly fast in compare with SURF :)

try this I hope you will be sattisfied and read this

农村范ル 2025-01-01 05:40:40

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

OpenCV-2.3.1/modules/gpu/src/surf.cpp

If performance is an issue you might want to try the GPU version of SURF implemented in OpenCV's GPU module:

OpenCV-2.3.1/modules/gpu/src/surf.cpp
梦里泪两行 2025-01-01 05:40:40

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

The one of the problems of the SURF in openCV is very big amount of the type conversions (double<->float, float->int) and it takes a time because of frequently calling of these basic functions. You can try to look into the source code and to try to modify it to get better performance.

云胡 2025-01-01 05:40:40

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

在我的例子中,默认值为100,大约需要10秒才能获得所有比赛。将值增加到 1000 将时间缩短到 1-2 秒,而不会影响最终结果。

有关更多详细信息,请参阅SURF 简介(加速的强大功能)。

You can play with hessianThreshold parameter. The greater it is, the lesser features will be found, and less time will be spent on detecting them.

In my case with default value of 100 it took ~10sec to get all the matches. Increasing the value to 1000 reduced time to 1-2sec without hurting the final result.

For more details see Introduction to SURF (Speeded-Up Robust Features).

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文