如何使用 SIFT 和 OpenCV 在图像中搜索目标?
我正在开发一个简单的扑克牌检测程序。 现在我有一个来自这里的有效Sift算法。 我在卡片周围创建了一些边界框。 然后我在要搜索的卡上使用 Sift 并保存描述符。
但下一步该怎么办呢?我是否必须制作对象的掩模并在每一步中运行 Sift 时用它穿过边界框? 找不到任何关于如何准确执行此操作的教程。
希望有人能帮助我!
问候麦克斯
编辑:我想识别每张牌,所以我可以这样说:这是一张红心 7 左右。
i am working on a simple playing card detecting programme.
For now i have a working Sift Algorithmus from here.
And i have created some bounding boxes around the cards.
Then i used Sift on the card to be searched for and saved the descriptors.
But what to do next? Do i have to make a mask of the object and run with it through the bounding box while running Sift in every step?
Couldn't find any tutorial on how to do that exactly.
Hope someone can help me!
Greets Max
edit: I want to recognize every card, so i can say like: it's a heart 7 or so.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
SIFT 仅仅是一个开始。
SIFT 是获取对象兴趣点的例程。您必须使用词袋方法。对您收集的 SIFT 特征进行聚类,并根据聚类均值表示每个特征。将每张卡片表示为这些聚类平均值(又名词袋)的直方图。
SIFT is just the beginning.
SIFT is a routine to obtain interest points on object. You have to use Bag of Words approach. Cluster the SIFT features you collected and represent each feature in terms of your cluster means. Represent each card as histogram of these cluster means (aka. bag of words).
一旦你准备好了卡片的表示(@nimcap 所说的),你就需要自己进行识别。您可以尝试最近邻居、SVM 等。
此外,为了更好地描述(更技术性)要做什么,您可能需要查看 Lowe 的 2004 年 SIFT 原始论文。
Once you have the representation of the cards ready (what @nimcap says), you then you need to do the recognition itself. You can try nearest neighbors, SVM, etc.
Also, for a better description (more technical) of what to do you might want to look at Lowe's original 2004 SIFT paper.
SIFT 是解决此类问题的最佳方法吗?
与 Haar 分类器或简单的模板匹配相反。
例如 http://digital.liby.waikato.ac。 nz/conferences/ivcnz07/papers/ivcnz07-paper51.pdf
Is SIFT the best approach for something like this ?
As opposed to Haar classifiers or just simple template matching.
eg http://digital.liby.waikato.ac.nz/conferences/ivcnz07/papers/ivcnz07-paper51.pdf