具有遮罩的密集光流

问题描述 投票:2回答:1

我需要计算从高架摄像机记录的两个连续帧之间车辆的密集光流。我正在使用对象检测器进行车辆检测,并使用Farneback算法进行Python中的光流估计。当前,为整个图像计算光流。但是,我需要在检测到的车辆周围创建一个遮罩,并仅在所选区域周围计算密集的光流。这将有助于显着加快光流估计。我也可以使用任何其他形式的密集光流估计,但不能使用稀疏光流(例如,Lucas-Kanade方法)。一种选择是提取车辆区域并分别输入每个车辆区域以进行光流估计,但我正在寻找更好的解决方案。

flow = cv2.calcOpticalFlowFarneback(prvs,next, None, 0.5, 3, 15, 3, 5, 1.2, 0)

没有任何光流计算的非车辆遮盖区域的预期光流结果将为零。

python opencv opticalflow
1个回答
0
投票

不幸的是,通过掩盖或仅提供检测器的边界框来按计划加速运动估计不是一个好主意。如果使用密集的光流方法,则需要提供整个图像并计算整个图像的流场。如果通过去除覆盖图像,则会引入人为边缘,这会混淆该方法。另一方面,单独输入每个车辆区域,您将失去密集流动方法计算较大(快速)运动的能力。 Farneback之类的方法使用图像金字塔来处理较大的运动,即它们基于缩小输入图像的比例。如果区域小于此范围,则将无法计算大型运动。减少运行时间的一种可能性是将稀疏方法(例如Lucas Kanade或RLOF)应用到您的车辆区域并应用SparseToDense插值(例如OpenCV中的EdgeAwareInterpolation),并获取该区域的密集运动场。

© www.soinside.com 2019 - 2024. All rights reserved.