1

Я занимаюсь некоторой работой по отслеживанию человека, я использую это dataset. Я пытаюсь прямо сейчас, чтобы извлечь передний план с использованием метода вычитания фона т.е. Mean FilterДобыча переднего плана

Мой фон как

Background

и если я пытаюсь вычитать мой текущий кадр, как этот

enter image description here

поэтому после вычитания я получаю изображение следующим образом

enter image description here

и после пороговой из 0,15 или

Я получаю эту маску

enter image description here

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

+0

Какое решение работает для вас? Здесь я сталкиваюсь с той же проблемой. –

ответ

2

Это не идеальное решение, но, возможно, вам будет достаточно - на изображении маски найдите все контуры, соедините их (обычно контуры представлены в виде векторов точек, поэтому все контуры в один вектор), а затем найдите выпуклую корпус подключенного контура (если вы используете opencv - используйте выпуклую функцию Hull http://docs.opencv.org/doc/tutorials/imgproc/shapedescriptors/hull/hull.html).

+0

Могу ли я получить больше объяснений? Каковы на самом деле контуры? Как, если я использую Matlab? –

0

Это также не идеальное решение. Уменьшите количество кадров, чтобы создать фоновое изображение в методе вычитания фона, которое может вам помочь. Или часто инициализируйте структуру вычитания фона.

0

Если вы правильно поняли, вы пытаетесь выполнить вычитание фона с использованием разностей кадров, например mean filter, как вы упомянули. Но, пожалуйста, имейте в виду, что он будет обнаруживать движущиеся переднего плана, а ручное предоставление порога затруднено. Я предлагаю вам вместо этого попробовать метод Mixture of Gaussian, который более эффективен и реализован в OpenCV.