我遇到过许多 AR 库/SDK/API,它们都是基于标记的,直到我找到 this video ,从描述和评论来看,他似乎在使用 SIFT 来检测对象并跟踪它。
我需要为 Android 做这件事,所以我需要用纯 Java 完整实现 SIFT。
我愿意这样做,但我需要先了解 SIFT 如何用于增强现实。
我可以利用您提供的任何信息。
最佳答案
在我看来,尝试实现 SIFT对于可移植设备来说是疯狂的。 SIFT是一种图像特征提取算法,其中包含复杂的数学运算,当然需要大量的计算能力。 SIFT 也获得了专利。
不过,如果您确实想要完成这项任务,您首先应该做一些研究。您需要检查以下内容:
- 任何可提高性能的 SIFT 变体,包括所有不同的算法
- 我建议查看 SURF这是非常健壮和更快的(但仍然是那些可怕的算法之一)
- Android NDK (我稍后会解释)
- 大量出版物
为什么选择 Android NDK?因为通过在 Java 应用程序使用的 C 库中实现算法,您可能会获得更显着的性能提升。
在开始任何事情之前,请确保您进行了研究,因为中途意识到图像特征提取算法对于 Android 手机来说太多了会很遗憾。实现这样一种算法,提供良好的结果并在可接受的时间内运行,这本身就是一项认真的努力,更不用说使用它来创建 AR 应用程序了。
关于如何将其用于 AR,我猜想您通过在图像上运行算法获得的描述符必须与保存在中央数据库中的数据相匹配。然后可以将结果显示给用户。从 SURF 收集的图像的特征应该描述它,然后可以使用这些特征来识别它。我在这方面并没有真正的经验,但网络上总是有资源。你可能想从通用的东西开始,比如 Object Recognition .
祝你好运:)
关于java - 将 SIFT 用于增强现实,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1289010/