【问题标题】:How to combine background subtraction with dense optical flow tracking in openCV python如何在openCV python中将背景减法与密集光流跟踪相结合
【发布时间】:2018-02-09 02:01:15
【问题描述】:
【问题讨论】:
标签:
python
opencv
video-processing
【解决方案1】:
使用密集光流方法,背景减去帧将无济于事,但可以使用稀疏光流。
密集光流:
Gunner Farneback 的光流方法通过使用当前帧和先前帧来跟踪帧中的所有像素(坐标)。因此称为稠密光流。
因此,您只需通过用于跟踪的帧即可。因此,如果您通过背景减去帧(黑色和白色)。该算法将不起作用,因为所有像素都将具有相同的强度(0 或 255)。并且不会为算法跟踪提供任何好的特征。
因为算法会追踪帧中的所有像素。跟踪过程也很慢。
稀疏光流:
Lucas Kanade 的光流方法使用当前和以前的帧以及良好的特征来跟踪。这样您就必须传递特定的像素才能让算法进行跟踪。因为它只跟踪指定的像素。它被称为稀疏光流。
要找到这些功能,您可以使用不同的方法。其中一些正在
goodFeaturesToTrack、Harris corners等。您可以通过以下方式使用背景减法找到这些特征。
第 1 步: 使用 MOG 或 GMG 进行背景减法
第 2 步:使用减去背景的帧查找轮廓。
第 3 步: 将您刚刚找到的轮廓点或找到的轮廓的中心像素或轮廓内的所有点(以有利者为准)传递给 Lucas Kanade 方法(稀疏光流)以及灰度帧,而不是减去背景的帧。
由于背景减帧只能用于寻找特征。
希望这会有所帮助!