computer-vision - 光流与关键点匹配 : what are the differences?

标签 computer-vision augmented-reality opticalflow keypoint

我花了几个月的时间研究和实验关键点检测、描述和匹配的过程。在上一期中,我还深入研究了增强现实背后的概念,即“无标记”识别和姿势估计。

幸运的是,我发现以前的概念在这种情况下仍然被广泛使用。创建基本增强现实的常见流程如下,但没有详细介绍每个所需的算法:

While capturing a video, at every frame...

  1. Get some keypoints and create their descriptors
  2. Find some matches between these points and the ones inside a previously saved "marker" (like a photo)
  3. If matches are enough, estimate the pose of the visible object and play with it


也就是说,例如 this student(?) project 使用的非常简化的过程。

现在的问题是:在我个人的研究中,我还发现了另一种称为“光流”的方法。我还在研究的开始,但首先我想知道它与之前的方法有多大不同。具体来说:
  • 背后的主要概念是什么?它是否使用了之前粗略描述的算法的“子集”?
  • 在计算成本、性能、稳定性和准确性方面的主要区别是什么? (我知道这可能是一个过于笼统的问题)
  • 商业AR工具中使用较多的是哪一种? (junaio, Layar, ...)

  • 谢谢您的合作。

    最佳答案

    光流(OF)是围绕所谓的“亮度恒定假设”的方法。您假设像素 - 更具体地说,它们的强度(高达某个增量) - 没有变化,只是在变化。你找到这个方程的解:
    I(x,y,t) = I(x+dx, y+dy, t+dt)。

    裁缝系列的第一顺序是:
    I(x + dx, y+dy, t+ dt) = I (x,y,t) + I_x * dx + I_y * dy + I_t * dt。

    然后你解这个方程并得到每个像素的 dx 和 dy 位移。

    光流主要用于 trackingodometry

    upd.: 如果不是应用于整个图像,而是应用于补丁,则光流几乎与 Lucas-Kanade-Tomashi tracker 相同。

    这种方法与基于特征的方法之间的区别在于密度。对于特征点,您通常只会在特征点的位置上获得差异,而光流则对整个图像进行估计。

    缺点是 vanilla OF 仅适用于小位移。为了处理较大的图像,可以缩小图像并在其上计算 OF - “粗到细”方法。

    可以将“亮度恒定假设”更改为“描述符恒定假设”并求解相同的方程,但使用描述符值而不是原始强度。 SIFT flow 就是一个例子。

    不幸的是,我对增强现实商业解决方案了解不多,无法回答最后一个问题。

    关于computer-vision - 光流与关键点匹配 : what are the differences?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24762875/

    相关文章:

    tensorflow - 如何在 tensorflow2.0 的 keras 模型中使用 tf.train.ExponentialMovingAverage

    image-processing - 束调整和运动结构之间的概念区别是什么?

    artificial-intelligence - 我可以将字典数字化吗?

    ios - SceneKit——平移手势移动节点太快

    opencv - 光流可视化

    c++ - cv::goodFeaturesToTrack 不返回任何特征

    matlab - 计算视频帧中物体的速度 - 光流 (Matlab)

    swift - SceneKit - 如何获取 .dae 模型的动画?

    swift - 如何使用 ARKit Swift 将对象附加到相机位置?

    OpenCV 图像匹配