代码之家  ›  专栏  ›  技术社区  ›  Leo Jweda

使用SIFT增强现实

  •  2
  • Leo Jweda  · 技术社区  · 15 年前

    我遇到过许多AR库/SDK/API,它们都是基于标记的,直到我发现 this video 从描述和注释来看,他似乎是在使用sift来检测对象并跟踪它。

    我需要为Android做这件事,所以我需要在纯Java中完全实现SIFT。

    我愿意这样做,但我需要知道如何首先使用SIFT来增强现实。

    我可以利用你提供的任何信息。

    6 回复  |  直到 14 年前
        1
  •  10
  •   alkar    15 年前

    在我看来,尝试实施 SIFT 因为便携设备是疯狂的。SIFT是一种图像特征提取算法,它包含了复杂的数学运算,当然需要大量的计算能力。SIFT也获得了专利。

    不过,如果你真的想继续这项任务,你首先应该做一些研究。您需要检查以下内容:

    • 任何提高性能的SIFT变体,包括周围的不同算法
    • 我建议你调查一下 SURF 它非常健壮,速度更快(但仍然是那些可怕的算法之一)
    • Android NDK (我稍后解释)
    • 很多出版物

    为什么选择Android NDK?因为在Java应用程序正在使用的C库中实现该算法可能会获得更显著的性能增益。

    在开始做任何事情之前,一定要做这项研究,因为很遗憾的是,在这一半的时间里,图像特征提取算法对于Android手机来说实在是太多了。实现这样一种算法本身是一项非常认真的工作,它可以提供良好的结果并在可接受的时间内运行,更不用说使用它来创建AR应用程序了。

    至于如何将其用于ar,我想您在图像上运行算法得到的描述符必须与保存在中央数据库中的数据相匹配。然后结果可以显示给用户。从海浪中收集到的图像的特征应该用来描述它,这样就可以用这些特征来识别它。我在这方面经验不足,但网络上总是有资源的。你可能想从一般的东西开始,比如 Object Recognition .

    祝好运

        2
  •  2
  •   user171976    15 年前

    如果我在哪里,我会研究SIFT功能是如何工作的(以及为什么工作的)(如前所述,它的维基百科页面提供了一个很好的解释,有关更多详细信息,请查看科学论文(链接到维基百科),然后构建适合您的口味的自己的变体;即在性能和CPU负载之间达到最佳平衡,这是您需要的应用。

    例如,我认为高斯平滑可能会被更快的平滑方法所取代。

    此外,当您构建自己的变体时,您与专利没有任何关系(已经有很多变体,如gloh)。

        3
  •  2
  •   mirror2image    15 年前

    我试过使用330MHz的Symbian Mobile进行冲浪,尽管有了所有的优化和查找表,但速度还是太慢了。筛的速度应该更慢。现在每个人都在使用快速手机。无论如何,特征提取并不是最大的问题。通信和清除假阳性在这方面更为困难。 快速链路 http://svr-www.eng.cam.ac.uk/~er258/work/fast.html

        4
  •  1
  •   Hugo    15 年前

    我建议您先看看OpenCv库中已经实现的特性,其中包括surf、mser和其他:

    http://opencv.willowgarage.com/documentation/cpp/feature_detection.html

    这对于您的应用程序来说可能已经足够了,而且比筛选要快。如上所述,SIFT是专利。

    另外,从在移动平台中进行性能测试开始,只需在每一帧提取特性,这样您就可以知道哪些特性可以实时运行。

        5
  •  1
  •   peakxu    14 年前

    您是否尝试过在Android端口中使用OpenCV的快速实现?我已经测试过了,它运行得非常快。

    还可以围绕检测到的快速关键点计算简化的柱状图描述符。我听说过3x3而不是标准的4x4筛。如果你用霓虹灯指令对它进行大量优化,这将是一个很好的实时工作机会。否则,我会推荐一些快速而简单的东西,比如平方和或绝对差,用于非常快的关键点周围的补丁。

    SIFT不是万能药。对于实时视频应用程序来说,通常是杀伤力过大。

        6
  •  0
  •   r0u1i    15 年前

    一如既往,维基百科是一个很好的起点: http://en.wikipedia.org/wiki/Scale-invariant_feature_transform 但是请注意,SIFT是专利产品。