OpenCV实战——提取视频中的前景对象
0. 前言
当固定摄像机观察场景时,背景基本保持不变。在这种情况下,我们真正感兴趣的目标是场景中的移动物体。为了提取这些前景物体,我们需要建立一个背景模型,然后将背景模型与当前帧进行比较,检测前景物体,前景提取是智能监控应用中的基本步骤。
1. 提取视频中的前景对象
如果我们拥有场景的背景图像(即不包含前景对象的帧)可供使用,那么通过简单的图像差异提取当前帧的前景:
cv::absdiff(backgroundImage,currentImage,foreground);
将差异足够高的像素视为前景像素。但是,大多数情况下,背景图像并不容易获得,实际上,很难保证给定图像中不存在前景对象。此外,背景场景通常会随着时间而变化,例如光照条件发生了变化或者背景中添加或移除了对象。
因此,有必要动态构建背景场景的模型,可以通过观察场景一段时间完成。我们假设,大多数情况下,背景的每个像素位置都是可见的,那么简单地计算所有观察值的平均值可能是一个很好的策略。然而&#