我有一个.avi文件(取自Actions as Space-Time Shapes - Classification Dataset),我从中提取了.png格式的帧。现在,我想使用Matlab从这些图像中进行前景检测。
我看过一个使用vision.ForegroundDetector()
的代码,但它适用于视频文件。
所以,如果有人能给我代码前景检测图像,那么我真的很感激。
这是一个框架的例子:
答案 0 :(得分:6)
由于此视频是使用稳定的相机拍摄的,因此您可以轻松进行背景减法:
%// read the video:
reader = VideoReader('daria_walk.avi');
vid = {};
while hasFrame(reader)
vid{end+1} = im2single(readFrame(reader));
end
%// simple background estimation using mean:
bg = mean( cat(4, vid{:}), 4 );
%// estimate foreground as deviation from estimated background:
fIdx = 43; %// do it for frame 43
fg = sum( abs( vid{fIdx} - bg ), 3 ) > 0.25;
现在您可以看到结果:
figure;
subplot(131); imshow( bg );
subplot(132); imshow( vid{fIdx} );
subplot(133); imshow( fg );
答案 1 :(得分:1)
您仍然可以使用vision.ForegroundDetector
。它需要图像,可以来自视频文件或单个图像文件。