对视频进行光流 (lk) 后,根据此数据查找对象并跟踪它们的最佳方法是什么?
这可能听起来很菜鸟,但我希望能够在物体周围定义清晰的轮廓,所以如果它是一个形状奇怪的瓶子或其他东西,就能够检测边缘。
我不确定 LK 是最好的算法,因为它计算一组稀疏的角点的运动,并且从密集的光流结果(例如 Farneback 或 Horn Schunck)中跟踪通常表现更好。计算流量后,作为第一步,您可以对其范数进行一些阈值处理(以保留移动部分),并尝试从此结果中提取连接区域。但请注意,如果您没有要跟踪的对象的模型,您的任务将不会容易。
另一方面,如果您主要对跟踪感兴趣并且可以接受一点交互性,则可以查看 camshift 示例代码,了解如何根据图像的外观选择和跟踪图像区域。
- - 编辑 - -
如果您的相机是静态的,请改用背景减法。使用OpenCV 2.4 beta,您必须在视频模块文档中查找BackgroundSubtractor 类及其子类。
另请注意,通过良好的参数选择以及 GPU 实现,光流可以是实时的(或不是很远)。在 Windows 上,您可以使用 flowlib格拉茨工业大学/Gpu4Vision 小组。 OpenCV 也有一些 GPU 密集光流,例如 gpu::BroxOpticalFlow 类。
---编辑2 ---
将单像素检测加入到大物体中是一项称为连接组件标记。有一个在 OpenCV 中实现的快速算法。所以这给了你一个管道:
- 运动检测(像素级别)---> 连接的组件。标记 ---> 对象跟踪(添加运动信息、卡尔曼滤波的可能轨迹...)。
但我们必须在这里停下来,因为我们很快就会远远超出您最初问题的范围;-)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)