监控视频的行人追踪

概述

  • 要求:根据提供的监控视频图像,追踪视频中行人并对其运动轨迹做出预判。

实现

  • 视频图像的行人认定为图像的前景区域,识别新人即为分割图像的前景背景,故可使用knn实现分割
  • 利用opencv的BackgroundSubtractorKNN实现的分割效果如下图所示:

这里写图片描述

  • 对分割出的前景区域,可以计算该区域的HSV颜色模型并计算反投影,再利用camshift( 原理是均值漂移算法 )实现对前景区域即行人的追踪。
  • 同样,利用opencv的cv2.CamShift() 实现效果如下:
  • 图中,红色矩形框即为camshift计算出的目标区域。

这里写图片描述

  • 最后,预判行人的运动轨迹,这里可以使用卡尔曼滤波来实现。
  • 设定卡尔曼滤波所需测量的维度是2,即为目标区域的x,y坐标。同时,设定卡尔曼滤波的维度是4,即坐标x, y以及在xy坐标下的速度vx, vy。行人的vx, vy均可认为是匀速运动(当然需要加上各自的噪声项)。
  • 根据knn实现的背景分割矩形中心来校正卡尔曼滤波器,滤波器预测的结果即为目标区域矩形的中心点。
  • 根据上述假设,利用opencv的cv2.KalmanFilter()函数可建立卡尔曼滤波器模型。
  • 下面是算法的实现效果(图中绿点即为预测结果):

这里写图片描述

Logo

欢迎加入 MCP 技术社区!与志同道合者携手前行,一同解锁 MCP 技术的无限可能!

更多推荐