Как извлечь изображение переднего плана в 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
, Он принимает изображения, которые могут прийти из видеофайла или из отдельных файлов изображений.