4

你知道移动相机背景减法的任何来源吗?我想写类似这样的东西:http: //vimeo.com/72577177

有很多关于静止背景的运动检测的资料,但我找不到任何具有运动背景的代码示例。

编辑:我通过检测最大数量的相似向量来考虑光流和去除背景。会不会这么简单?

4

4 回答 4

3

这不是背景减法!这是对象跟踪!

观看视频。我想你正在寻找这样的东西。视频末尾有一些论文参考。搜索那些文件。

您可以在此视频和此链接中找到该视频中算法来源

祝你好运!

于 2014-03-03T07:44:15.603 回答
3

以下是关于该主题的两篇研究文章:

  • 米塔尔,A. 等 D. Huttenlocher。2000 年,《用于广域监视和图像合成的场景建模》,发表于 IEEE 计算机视觉和模式识别会议论文集 ( PDF )

  • 海曼,E. et J. Eklundh。2003 年,《移动观察者的统计背景减法》,在 IEEE 计算机视觉国际会议论文集上。( PDF )

于 2014-03-02T21:22:02.133 回答
2

实现那个视频并不难。因为移动的物体很小,背景是静止的,尽管相机移动得很慢。

首先,确定连续帧之间的运动矢量。例如,帧 t-1 中 (100,100) 处的像素在帧 t 中移动到 (103, 102)。由于背景的大部分是静态的,因此可以确定一个共同的运动矢量来描述大多数像素的运动。

其次,使用RANSAC或其他一些算法根据运动矢量找到不移动的像素。这些像素代表移动的物体。

于 2014-05-27T05:57:51.600 回答
2

您提到的链接更像是对象跟踪。但是如果你想使用 opencv 应用移动背景减法会更容易。它更像是一个运动跟踪器。

这是代码:

import cv2
import numpy as np

cap = cv2.VideoCapture("input.mp4")
out = cv2.createBackgroundSubtractorMOG2()

fourcc = cv2.VideoWriter_fourcc(*'MJPG')
output = cv2.VideoWriter('output.avi', fourcc, 20.0, (640,480), isColor=False)

while(cap.isOpened()):
    ret, frame = cap.read()

    if ret==True:
        frame = cv2.flip(frame,180)

        outmask = out.apply(frame)
        output.write(outmask)

        cv2.imshow('original', frame)
        cv2.imshow('Motion Tracker', outmask)

        if cv2.waitKey(1) & 0xFF == ord('q'):
            break

    else:
        break


output.release()
cap.release()
cv2.destroyAllWindows()

此代码允许您在视频文件中应用背景减法并保存。

于 2020-05-09T02:27:03.497 回答