OpenCV-Python实战(29)——基于视觉显著性的自动多目标跟踪系统
- 0. 前言
- 1. 视觉显著性
- 2. 规划应用程序
- 2. 搭建应用程序
- 2.1 实现主函数
- 2.2 MultiObjectTracker 类
- 3. 绘制视觉显著性图
- 3.1 傅里叶分析
- 3.2 自然场景统计特征
- 3.3 使用频谱残差方法生成显著性图
- 3.4 检测场景中的原始物体
- 4. 均值漂移跟踪
- 4.1 自动跟踪足球场上的所有球员
- 5. OpenCV 跟踪 API
- 6. 综合实践
- 小结
- 系列链接
0. 前言
本节的目标是在视频序列中同时跟踪多个视觉显著物体。我们不会手动标记视频中感兴趣的物体,而是让算法自主判断视频帧中哪些区域值得跟踪。
此前,我们已经学习了如何在严格受控的场景中检测简单的感兴趣物体(例如人手),以及如何从相机运动中推断视觉场景的几何特征。在本节中,我们将探讨通过分析大量视频帧的图像统计信息,能够从视觉场景中学习到哪些内容。
通过分析自然图像的傅里叶频谱,我们将构建一个显著性图,从而能够将图像中某些在统计上具有显著性的区域标记为(潜在或实际的)原始物体。然后,我们将所有原始物体的位置输入均值漂移跟踪器,这样就可以持续跟踪物体在帧与帧之间的运动轨迹。
1. 视觉显著性
视觉显著性 (Visual Saliency) 是一个来自认知心理学的专业术语,它试图描述某些物体或项目能够立即吸引我们注意力的视觉特性。我们的大脑不断地将目光导向视觉场景中的重要区域,并持续跟踪这些区域,使我们能够快速扫描周围环境以寻找有趣的物体和事件,同时忽略那些不太重要的部分。
下图展示了一个普通RGB图像及其转换为显著性图的示例,其中统计上有趣的区域显示为亮色,其他区域显示为暗色: