2014-02-19 2 views
1

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

Так вот оригинальный

enter image description here

После Вычитание это от фона, фон был рассмотрен в качестве первого кадра видео, поэтому после вычитания его из Orignal изображения я получаю следующее изображение

enter image description here

так что я сделал основные пороговые и я получаю следующее изображение, которое расщепляется от дальнейших областей

enter image description here

и используя метод Стива я получаю это

enter image description here

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

EDIT

Как @ lennon310 попросил меня, чтобы загрузить цветное изображение, так вот оно

enter image description here

и, как @NKN попросил меня, чтобы загрузить краевую информацию одного и того же изображение таким образом здесь

enter image description here

+0

Ваше оригинальное изображение серый или rgb? – lennon310

+0

его rgb, я преобразовал его в серое. –

+0

Я предполагаю, что проблема возникает из-за порога, можете ли вы дать сравнение с командой edge в MATLAB и методами вроде canny или sobel. – NKN

ответ

1

Вместо буквального вычитания фона попробуйте использовать объект vision.ForegroundDetector, который является частью панели инструментов системы Vision Vision. Он реализует адаптивное фоновое моделирование смеси гауссистов, и это может дать вам более четкую сегментацию.

Сказав это, очень маловероятно, что вы получите «точный» силуэт. Некоторая ошибка неизбежна.

1

В вашем изображении результата у вас есть буксирные типы черных областей. один движется, а другой неподвижен. Итак, когда вы хотите заполнить человеческое тело, вам нужно выбрать только движущуюся область, для этой цели я предлагаю сегментировать ваше изображение, добавляя метод оптического потока, чтобы знать, где находятся движущиеся области. Это интересное учебное пособие, которое делает то, что вам нужно сделать: http://docs.opencv.org/trunk/doc/py_tutorials/py_video/py_lucas_kanade/py_lucas_kanade.html

Смежные вопросы