【问题标题】:Occlusion handling in object tracking对象跟踪中的遮挡处理
【发布时间】:2021-02-09 17:16:11
【问题描述】:

我正在实现基于运动的对象跟踪程序,该程序使用背景减法、卡尔曼滤波器和匈牙利算法。除遮挡外,一切正常。当两个对象彼此足够接近时,背景减法会将其识别为这两个对象之一。在它们拆分后,程序会正确识别这两个对象。我正在寻找可以检测遮挡的解决方案/算法,如以下示例中的点 c) 所示。

在使用背景减法时,我将不胜感激任何涉及遮挡检测问题的参考或代码示例。

【问题讨论】:

  • 请分享代码-到目前为止您尝试了什么。
  • 我假设您将这些图像作为视频。一种方法是跨多个帧跟踪单个对象。如果两个对象突然合并在一起,您可以假设它仍然是两个对象。如果他们已经作为一个 blob 进入框架,这将不起作用。另一种方法可能是尝试腐蚀你得到的面具。如果经过几次侵蚀迭代后,斑点分开,那么您就知道它们很可能是两个靠得很近的物体。这只有在它们只有一点重叠时才有效。

标签: python opencv computer-vision kalman-filter background-subtraction


【解决方案1】:

使用机器学习算法的对象检测应该可靠地区分这些对象,即使有明显的遮挡。您还没有分享任何关于您的环境的信息,所以我不知道您有什么样的限制,但是使用 ML 方法,我将如何解决您的问题。

import cv2
from sort import *

tracker = Sort() # Create instance of tracker (see link below for repo)

cap = cv2.VideoCapture(0)
while(True):
    ret, frame = cap.read()

    # Not sure what your environment is, 
    #but get your objects bounding boxes like this
    detected_objects = detector.detect(frame) #pseudo code
    
    # Get tracking IDs for objects and bounding boxes
    detected_objects_with_ids = tracker.update(detected_objects)
...

上面的例子使用了这个Kalman Filter and Hungarian algorithm,它可以实时跟踪多个对象。

同样,不确定您的环境,但您可以找到pre-built object detection algorithms on the Tensorflow site

【讨论】:

    猜你喜欢
    • 2013-03-15
    • 2017-10-30
    • 2021-01-31
    • 1970-01-01
    • 2023-03-04
    • 2013-04-20
    • 2011-02-15
    • 2015-04-02
    • 2021-07-26
    相关资源
    最近更新 更多