Как извлечь изображение переднего плана в Matlab

У меня есть файл.avi (взятый из действий как формы пространства-времени - набор классификационных данных), из которого я извлек кадры в формате.png. Теперь я хочу определить передний план по этим изображениям с помощью Matlab.

Я видел один код, который использует vision.ForegroundDetector(), но это работает для видео файлов.

Поэтому, пожалуйста, если кто-нибудь может дать мне код обнаружения переднего плана для изображений, то я буду очень благодарен.

Это пример фрейма:

введите описание изображения здесь

2 ответа

Поскольку это видео снято со стабилизированной камеры, вы можете легко сделать вычитание фона:

%// 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 );

В результате с

Вы все еще можете использовать vision.ForegroundDetector, Он принимает изображения, которые могут прийти из видеофайла или из отдельных файлов изображений.

Другие вопросы по тегам