gpt4 book ai didi

c++ - 使用 SURF 和 FLANN 跟踪标记的结果非常糟糕

转载 作者:太空宇宙 更新时间:2023-11-03 23:00:58 24 4
gpt4 key购买 nike

我想做的是跟踪一个标记(相当小的一张纸,上面有图画)。我只想知道它是否存在。我一直在研究许多不同的算法,例如寻找轮廓,以防我将标记设为简单的几何形状(从纸上剪下的星星),当然还有更严肃的东西,如 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

这就像我得到了除了我的标记之外的所有其他东西的匹配......即使我与标记得到的少数幸运匹配在 2 个图像之间也不相同。这是一个大问题,因为我的“真实世界”应用程序将在一个非常“嘈杂”的环境中有很多物体,而不是在白色统一背景上,相机有点晃动,所以可能也很模糊。另外,一开始我想使用比这个小得多的标记 (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:我只是运行了 Brute Force Matcher 并得到了完全相同的结果,当我说精确时,我的意思是精确。发布屏幕截图将复制我之前的屏幕截图。现在我开始认为是我的图像不好。用更好的相机拍摄引用图像的照片并用它来匹配另一个(我现在在我的 Pi 上使用的那个)拍摄的图像是否明智?我知道相机参数可以起到一定的作用,因此我的问题。

最佳答案

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

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

关于c++ - 使用 SURF 和 FLANN 跟踪标记的结果非常糟糕,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18489020/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com