Matlab,vision.peopledetector具有基于运动的多目标跟踪?

时间:2018-01-09 14:19:02

标签: matlab image-processing computer-vision detection matlab-cvst

我一直在研究只在安全摄像头视频中检测人物的方法。我想将vision.peopledetectorvision.BlobAnalysisvision.ForegroundDetector一起使用。但它不起作用。

它应该像基于运动的多目标跟踪示例,但仅用于检测人类。似乎无法运作。

到目前为止,我没有使用vision.BlobAnalysis和`vision.ForegroundDetector。它根本不准确,不能计数

video = VideoReader('atrium.mp4');
peopleDetector = vision.PeopleDetector;
videoPlayer = vision.VideoPlayer;

while hasFrame(video)
   img = readFrame(video);
   [bboxes,scores] = step(peopleDetector,img);
   D = 1;
   frame = insertObjectAnnotation(img,'rectangle',bboxes,D);
   step(videoPlayer,frame);
end

1 个答案:

答案 0 :(得分:1)

行。所以这就是我认为正在发生的事情:atrium.mp4视频的分辨率不足以使用vision.PeopleDetector进行可靠的检测。以下是我修改代码的方法:

video = VideoReader('atrium.mp4');
peopleDetector = vision.PeopleDetector;
videoPlayer = vision.VideoPlayer;

while hasFrame(video)
   img = readFrame(video);
   img = imresize(img, 3); % resize the frame to make people large enough
   [bboxes,scores] = step(peopleDetector,img);
   D = 1;
   frame = insertObjectAnnotation(img,'rectangle',bboxes,D);
   step(videoPlayer,frame);
end

我现在在视频中看到相当一致的检测,但它们仍然没有被跟踪,并且似乎有一些错误的检测(一个,特别是在视频的右下角)。为了避免这些问题,我会做一些像这个演示所做的事情:

https://www.mathworks.com/help/vision/examples/track-face-raspberry-pi2.html

本质上,此演示仅在没有检测时使用面部检测,并在检测完成后切换到跟踪。这样,您的处理循环明显更快(跟踪的计算要求比检测要低),并且您可以(通常)具有比每帧中的独立检测更高的保真度跟踪。您还可以包含一些其他启发式方法,例如>中根本没有移动。 50帧意味着误报,等等。