【问题标题】:Identifying moving objects using optical flow使用光流识别移动物体
【发布时间】:2015-01-12 10:09:17
【问题描述】:

我正在尝试将移动对象与移动相机隔离开来,以便以后可以对它们应用一些进一步的处理算法,但我似乎有点卡住了。

到目前为止,我正在使用 OpenCV 并从 PyrLKOpticalFlow 获得稀疏光流。我工作的总体思路是找到与图像中的背景点移动不同的特征,然后找到这些不同移动特征的集群,将其计为移动对象,以进行进一步的跟踪/处理。我的问题是,虽然我发现了一些使用这种策略的学术论文,但到目前为止,我还没有找到一种简单的方法来为自己完成它。

使用此光流数据从移动相机检测移动物体的好方法是什么?这甚至是最好的方法,还是有一些我可能忽略的更简单的方法?

【问题讨论】:

    标签: opencv computer-vision image-segmentation object-detection opticalflow


    【解决方案1】:

    首先 - 正如我从理论上所记得的那样 - 光流实际上最适合移动相机(而不是静止场景和移动物体)。这是有道理的,因为它假设邻域像素内的流量相同。这将是您阅读 lucas kanade 方法以了解正在发生的事情的一个很好的起点。

    其次,您的问题不是要跟踪某些特征,而是要检测场景中的一些移动对象。为此,您可能需要选择dense optical flow,而不是稀疏集。如果你的场景是静止的,背景减法也是一个很好的可能性。

    【讨论】:

    • 我的问题是,对于这个应用程序,我们需要让一切运行尽可能接近实时(我们使用的相机为 15 FPS)。虽然使用密集光流会很好,但在这个和我需要为每一帧运行的其他处理之间,即使我在 GPU 上进行大部分处理,也没有足够的时间来处理它。
    • 所以你需要使用 LK 方法,网格像素选择并大致找到运动部件。动态背景减法呢?我不确定它是否在 opencv 中实现
    • 这里的动态背景减法是什么?
    【解决方案2】:

    我设法找到了一种在 OpenCV 中或多或少符合我要求的方法。

    在使用 GoodFeaturesToTrackDetector 和 PyrLKOpticalFlow(给我 prevPts 和 nextPts)找到两个连续图像之间的稀疏光流点后,我使用 findHomography 和 RANSAC 来估计由于相机移动而引起的运动,同时排除由于独立移动物体引起的异常值。然后我使用perspectiveTransform 来扭曲prevPts 以解释相机运动(给我warpedPts)。然后我可以将 warpedPts 与 nextPts 进行比较,以找到移动的对象。

    最终结果是,即使相机移动,如果物体静止,warpedPts 中的点和 nextPts 之间的变化也不大,而当跟踪点在移动物体上时,变化很大。从那里只是根据运动的接近性和相似性对运动点进行分组的问题。

    【讨论】:

      猜你喜欢
      • 2021-07-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-12-15
      • 1970-01-01
      • 2014-04-28
      • 1970-01-01
      • 2015-12-03
      相关资源
      最近更新 更多