2017-02-03 4 views
0

Я беру два кадра из своего видео. Один из них - это фон, а следующий - это рамка, на которую я применил вычитание фона. Третье изображение - результат после вычитания фона. Вот я только получая рубашку человека, а не всего тела.Не получается подходящее изображение после вычитания фона

Код для Backgorund вычитания

v = VideoReader('test.mp4'); 
n = get(v,'NumberOfFrames'); 
back = read(v,30); 
y = read(v,150); 
imshow([y;back;y-back]); 
+0

Пожалуйста, предоставьте исходные изображения, чтобы мы могли вам помочь. Вы также не выполняете вычитание фона должным образом. Для этого требуется наличие маски, которая обозначает то, что отличается от эталонного кадра, и индексирование в новый кадр для извлечения выбранных пикселей. – rayryeng

ответ

0

, как белые имеет, вероятно, более высокое значение (в каждом канале может быть? Я не знаю, как формат ваших данных). Вы получаете отрицательные значения, которые, как я полагаю, обрезаны до 0 (черный). Посмотрите, как ваша рубашка зеленая, когда вы вычеркиваете из нее красный (доска в фоновом режиме).

Вы должны замаскировать фон, проверив, что изменилось, а затем удалите все, что не изменилось.

может быть что-то вроде

diff =y-back 
if (element of diff unequal 0) then set element to 1 
noback = diff .* y 

небольшой пример я писал:

back = rand(4) 
y = back 
y(5) = 0.6    %put something in front of the background 
y(7) = 0.7    %put something in front of the background 
mask = zeros(4) 
mask(find(y-back)) = 1 %set values that are different in y to 1 
noback = mask.*y   %elementwise multiplication to mask out the background 

Вы, возможно, придется использовать что-то другое, чем найти для маски, потому что изображение не будет 100% то же самое , но это должно показать общий подход.

+0

Тип данных изображения uint8.Can вы объясняете использование знака –

+0

'noback' должен быть просто картиной без фона. (так же, как ваша «спина»). И чтобы убедиться, что вы просто умножаете каждый пиксель на 0 или 1 (двоичную матрицу) в зависимости от того, есть ли изменения со спины. –

+0

@ Аноопсаджу это сработало? –