如何在多个摄像头中跟踪人物?

时间:2014-11-07 20:15:37

标签: opencv computer-vision

这是设置:一个相当大的房间,天花板上安装了4个鱼眼摄像头。没有盲点。每个摄像机覆盖范围与另一个覆盖范围重叠。

这个想法是跟踪这些摄像机的人。到目前为止,一个blob提取算法到位,它将人们检测为blob。这是一个相当不错的工作算法,可以很好地检测个人。我正在使用OpenCV API。

跟踪人们的意思是 - 说,摄像机1识别两个人,比如人A和人B.现在,这两个人从摄像机1的覆盖范围移动到cam1和cam2的覆盖范围的重叠区域并且进入只有cam2覆盖的区域,cam2应该能够将它们识别为同一个人A和B cam1将它们识别为。

这是我以为我会做的 - 1)相机以15fps的速度渲染图像,我认为帧的尺寸为1920x1920。

2)在每个相机中单独识别斑点,并为每个斑点提供唯一标签。

3)现在关于重叠 - 计算一个仿射变换矩阵,它将一个摄像机帧上的像素映射到另一个摄像机的帧上 - 这不需要对每个帧进行 - 这可以在整个过程开始之前完成,作为预处理步骤。因此,实时地,每当我检测到重叠区域中的斑点时,我所要做的就是将变换矩阵应用于cam1中的像素,并查看cam2中是否存在相应的斑点,并为它们提供相同的标签。 / p>

所以,问题:

1)这个系统会给我一个糟糕的工作系统,可以很好地跟踪人吗?

2)因此,对于仿射变换,我是否必须将鱼眼转换为直线图像? (我的回答是肯定的,但我不太确定) 请随意指出可能的错误以及为什么某些事情可能在我描述的过程中不起作用。欢迎另外的建议! TIA

1 个答案:

答案 0 :(得分:0)

1- blob提取不足以跟踪特定对象,对于人们的情况我建议HoG - 或至少在blob提取之前进行背景扣除,因为所有相机都有场景。

2- opencv< = 2.4.9使用针孔模型进行立体视觉。因此,在使用opencv方法进行任何校准之前,您的鱼眼图像必须首先是converted to直线图像。您也可以尝试使用other approaches进行自我校准

版本3.0.0将支持fisheye model。它处于alpha阶段,你仍然可以下载并尝试一下。