【问题标题】:Very bad results for tracking a marker with SURF and FLANN使用 SURF 和 FLANN 跟踪标记的结果非常糟糕
【发布时间】:2013-08-30 21:40:27
【问题描述】:

我想做的是跟踪一个标记(相当小的一张纸,上面有图画)。我只是想知道它是否存在。我一直在研究许多不同的算法,比如寻找轮廓,以防我将标记变成简单的几何形状(从纸上剪下的星星),当然还有更严肃的东西,比如 SIFT 和 SURF。

现在我正在尝试使用 FLANN 进行 SURF,我使用的代码是这个(几乎没有修改): http://docs.opencv.org/doc/tutorials/features2d/feature_flann_matcher/feature_flann_matcher.html

问题是结果真的不好: My results http://img46.imageshack.us/img46/8729/xpu5.jpg

这就像除了我的标记之外我得到的所有东西都匹配......即使我用标记得到的少数幸运匹配在两张图像之间也不相同。这是一个大问题,因为我的“现实世界”应用程序将在一个非常“嘈杂”的环境中,有很多物体,而不是在白色统一的背景上,相机有点晃动,所以可能也很模糊。同样一开始我想使用一个比这个小很多的标记(current_size/4)。

所以我的问题是,如何提高准确性?是否应该使用更多纹理制作更复杂的标记等等(因为我读到 SURF/SIFT 不擅长检测纹理低的物体)?另一个匹配器会产生很大的不同吗?或者我应该使用 SIFT 吗? 或者,另一种方法/算法是否更适合标记?知道如果仅在标记完全可见而不只是其一部分时才检测到标记,这将不是问题(这种方式实际上对我来说更方便)。我使用了一些基于标记的 AR,所以我知道这些库很擅长,但我不知道他们使用什么样的算法。 在任何情况下,我们都非常感谢您提供示例代码、链接或只是一个建议。

一些额外的有用信息:我在树莓派(C++ OpenCV,Linux Debian)上运行它,它集成了摄像头板,因此分辨率不是最好的,而且速度很慢(代码运行需要 1-2 分钟) ) 但这不是问题,我的目标不是实时(不过会很好)。 对于这个测试,我使用了巨大的图像 (2592x1944),因为我希望结果尽可能好。我应该将分辨率更改为 800x600 吗?由于某些奇怪的原因,这会提高准确性吗?

编辑:根据要求,我的原始图片: http://img35.imageshack.us/img35/2329/5a93.jpg http://img703.imageshack.us/img703/847/cwg8.jpg

EDIT2:我只是运行蛮力匹配器并得到完全相同的结果,当我说精确时,我的意思是精确。发布屏幕截图将复制我之前的屏幕截图。现在我开始认为是我的图像很糟糕。用更好的相机拍摄参考图像的照片并使用它来匹配另一个(我现在在我的 Pi 上使用的那个)拍摄的图像是否明智?我知道相机参数可能会发挥一些作用,因此我的问题。

【问题讨论】:

  • 请上传您的原图
  • 当然,给你(见编辑)。 :)
  • 我不确定是什么问题。看看这个视频:youtube.com/watch?v=-ZNYoL8rzPY 它在类似的应用程序上显示出更好的结果。也许你应该使用他们的代码(在视频的“关于”部分有一个下载链接)。
  • 嗯,简介看起来很有趣。我想我会试试看。谢谢 !但尽管如此,我真的很想知道为什么我的标记检测更早失败,以及其他方法是否比 SIFT/SURF 更可取。
  • @GilLevi 问题是我没有找到任何与我刚刚尝试过的方法合适的匹配项。奇怪的是,我在 matlab 中使用了带有 VLFeat 的 SIFT,结果当时非常好(其他图像使用更多纹理、真实物体等)。现在我想使用 OpenCV 和 C++,但我得到的结果令人失望......

标签: c++ opencv computer-vision


【解决方案1】:

似乎问题可能在于模式及其缺乏显着特征。你有没有想过改变模式?试试人们用来校准的棋盘格之类的东西。也许,这会给你更多的比赛。

您还应该调查 RANSAC 以确定程序给出的所有匹配项中哪些匹配项是正确的。 RANSAC 可以在相当嘈杂的条件下工作。

【讨论】:

  • 嗨,我知道我已经有一段时间没有发表这篇文章了,但为了完整起见,我想说的是,使用其他图像给了我几乎相同的结果。这一次,我拍摄了非常有辨识度的徽章图像。最后,我不得不为我的项目使用广义霍夫变换。我仍然很好奇它为什么不适合我。
  • 我知道 SURF 和 SIFT 可能会占用内存,因此在 Raspberry Pi 上运行它们可能与此有关(这是一个带有 Pi 及其摄像头板的嵌入式系统项目)。但是当我检查 RAM 和 CPU 消耗时,我并没有真正看到任何内存问题。很奇怪。
猜你喜欢
  • 2018-04-27
  • 1970-01-01
  • 2015-06-01
  • 2021-05-29
  • 2012-08-23
  • 2016-10-09
  • 2012-05-06
  • 2014-06-30
  • 2012-11-12
相关资源
最近更新 更多