Обнаружение людей, пересекающих линию с помощью OpenCV

Я хочу подсчитать количество людей, пересекающих линию с обеих сторон. У меня есть камера, которая размещена на потолке и снимает на пол, где проходит линия (поэтому камера видит только верхнюю часть голов людей, и поэтому это скорее обнаружение объектов, чем обнаружение людей).

Есть ли пример решения этой проблемы или подобных проблем? Чтобы я мог у них поучиться?

Редактировать 1: В любой момент линию пересекает более одного человека.


person Kaveh Shahbazian    schedule 27.04.2011    source источник
comment
Вы уверены, что больше не хотите добавлять теги к своему вопросу?   -  person karlphillip    schedule 27.04.2011
comment
На самом деле я разработчик C #, и я нашел Emgu, который является кросс-платформенной оболочкой .NET для OpenCV. Поэтому я собираюсь использовать C#. Но я подумал, что было бы неуместно добавлять другие теги, такие как C#. И я признателен, если вы предложите другие теги; заранее спасибо.   -  person Kaveh Shahbazian    schedule 27.04.2011
comment
Ну вот, добавьте: C#, Emgu, видеообработку   -  person karlphillip    schedule 27.04.2011
comment
Есть ли причина, по которой вы должны использовать OpenCV и видеокамеру? Инфракрасные фотодетекторы, которые делают именно то, что вы описываете, доступны в хозяйственных магазинах менее чем за 100 долларов.   -  person Dour High Arch    schedule 27.04.2011
comment
@Dour High Arch Здесь нет необходимости. Если это так, как вы говорите, то я буду счастлив, и дальнейшее руководство более чем ценится! Я не знал об этих камерах, и мои единственные требования описаны в вопросе: Линия и движущиеся круги (головы людей, может быть, закрытые шляпой или чем-то еще). Спасибо еще раз!   -  person Kaveh Shahbazian    schedule 28.04.2011
comment
@Kaveh, фотодетекторы очень распространены в моем родном городе. Большинство из них работают, обнаруживая прерывания в инфракрасных лучах, и используются для таких вещей, как подсчет клиентов или открытие дверей. Вы можете получить детекторы с камерами, но то, что вы описываете, не нуждается в них, если только нет требований, о которых вы нам не сообщаете. Вы можете начать с поиска в Google: google.ca/search?q=photoelectric+beam +датчик   -  person Dour High Arch    schedule 28.04.2011
comment
Это не вариант к сожалению! :(   -  person Kaveh Shahbazian    schedule 04.05.2011


Ответы (2)


Если ничто иное, как люди, не может пересечь линию, вам не нужно обнаруживать людей, вам нужно обнаруживать только движение. Существует несколько подходов к обнаружению мотоинов.

Вероятно, самый простой из них подходит для ваших целей. Вы просто вычисляете разницу между последовательными кадрами видеопотока и таким образом определяете «маску движения» и, таким образом, обнаруживаете событие пересечения строки.

В качестве усовершенствования этого «алгоритма» вы можете рассмотреть метод «скользящего среднего».

Для определения направления движения можно использовать «шаблоны движения».

Чтобы повысить точность вашего детектора, вы можете попробовать любой метод вычитания фона (что, в свою очередь, не является простым решением). Например, если есть движущийся фон, который следует отфильтровать (например, с помощью статистического обучения).

Все упомянутые алгоритмы включены в библиотеку OpenCV.

УПД:

person Andrey Sboev    schedule 27.04.2011
comment
Я не знаю названия этих алгоритмов в OpenCV или каких-либо образцов для него. Любая подсказка будет очень полезна. Спасибо - person Kaveh Shahbazian; 27.04.2011
comment
Я обновил ответ. Кстати, чтение примера кода, включенного в библиотеку OpenCV, облегчает жизнь. - person Andrey Sboev; 27.04.2011
comment
Это довольно расстраивает, что нет EMG с открытым исходным кодом. - person Maxim V. Pavlov; 25.02.2012
comment
Это довольно огорчает, что нет примера проекта с открытым исходным кодом, который просто показывал бы, как отслеживать пешеходов с помощью OpenCV (или, по крайней мере, пересекать линию). На YouTube есть тонны видео и много теоретических разговоров о том, как это делается, но нет реального реализованного примера. Если вы когда-нибудь найдете его, пожалуйста, опубликуйте его где-нибудь. - person Maxim V. Pavlov; 25.02.2012

Я не эксперт в CV на основе видео, но если вы можете свести проблему к конечному набору изображений (например, вход в кадр, стояние в очереди, выход из кадра), то вы можете использовать один из многих алгоритмов распознавания формы . Я знаю о Shape Context, который хорош, но я сомневаюсь, что он достаточно тонок для этого приложения (он не покажет разницу между головой и большинством других круглых объектов).

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

P.S. Поиск ключевых изображений может быть возможен с помощью хороших методов обнаружения движения.

person Neowizard    schedule 27.04.2011