如何在Matlab中提取前景图像

时间:2015-11-26 05:37:42

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

我有一个.avi文件(取自Actions as Space-Time Shapes - Classification Dataset),我从中提取了.png格式的帧。现在,我想使用Matlab从这些图像中进行前景检测。

我看过一个使用vision.ForegroundDetector()的代码,但它适用于视频文件。

所以,如果有人能给我代码前景检测图像,那么我真的很感激。

这是一个框架的例子:

enter image description here

2 个答案:

答案 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 );

结果 enter image description here

答案 1 :(得分:1)

您仍然可以使用vision.ForegroundDetector。它需要图像,可以来自视频文件或单个图像文件。