Система подсчета людей
Я хочу создать "систему подсчета людей" с помощью OpenCV (или Emgu CV).
Расскажите мне, как реализовать или привести меня к некоторым примерам или проектам с открытым исходным кодом.
(Я проделал определенную работу: извлечение diff, затем пороговое значение для удаления фона, использование истории движения и т.д., до сих пор нет хороших результатов.)
Изменить 1: Я считаю, что поток высоких людей (десяток из них может пройти одновременно).
Изменить 2: он должен быть не менее 80% точным. Люди идут через дверь шириной почти 5 метров. Проблема в том, что я не контролирую положение или угол камеры. Камера выкрикивает место с расстояния 10 метров на высоте 2,5 м.
Спасибо
Ответы
Ответ 1
Если вы вызываете систему подсчета людей системой, которая подсчитывает людей, которые находятся в комнате, то я рекомендую вам внедрить аппаратное обеспечение с помощью микроконтроллера с двумя лазерами (нормальные работы с лазерными игрушками) и 2 фоторезисторами. Для микроконтроллера я recomen вы используете Arduino.And затем создайте приложение С#, имеющее объект SerialPort, и прочитайте данные, которые отправляет arduino через USB. Ардуино отправит 1 для "кто-то вошел в комнату" и 0, например, "кто-то вышел из комнаты". Затем запись и статистика могут быть легко выполнены на С#.
Arduiono Site: здесь
Фоторезистор для $1: здесь
Это решение намного дешевле и проще реализовать, чем при использовании камеры с довольно хорошим качеством.
Надеюсь, я помог тебе.
Ответ 2
Проверьте детектор пешеходов HOG, который поставляется с последними версиями OpenCV ( >= 2.2).
См. modules/objdetect/src/hog.cpp
и samples/cpp/peopledetect.cpp
в источниках OpenCV. К сожалению, официальной документации пока нет.
Ответ 3
Это поможет вам подсчитать движущиеся вещи, включая людей: Проект обнаружения движения в CodeProject
Ответ 4
Являются ли люди единственными "сущностями" на сцене? Если это не так, вы заботитесь о том, чтобы рассматривать человека как-то другое, что движется по сцене? Потому что, если это так, вы можете просто подсчитать blobs, которые входят или выходят со сцены. Это может показаться немного наивным, но я возьму какое-то изображение движения, пиксели движения группы по расстоянию в кластерах. Ваша метрика расстояния может принимать во внимание некоторые ограничения, например, что люди будут "часто" стоять так, чтобы пиксели в кластере группировались вокруг какой-то линии регрессии (прямая линия, если камера выровнена с полом). Не нужно будет отслеживать их на сцене, просто замечая, когда они войдут или уйдут, хотя у вас возникнут проблемы с, например, с людьми, входящими на сцену и выходящими парами или группами... Удачи:)
Ответ 5
Это действительно зависит от положения камеры. Предполагая, что вы можете получить профили передних лиц людей на изображениях:
Эта проблема в основном заключается в обнаружении и распознавании лиц.
Есть много способов поиска лиц, но это тот подход, с которым я немного знаком.
Для обнаружения лица вам необходимо выполнить сегментацию изображения на цвете тона кожи. Это позволит извлечь участки кожи. [Оружие, сундук (для тех, кто носит V cut tops), лицо, ноги и т.д.] Затем вам нужно выстроить профили областей кожи в профиль ваших обученных лиц.
[Вам нужно будет использовать Eigenfaces для создания общего профиля того, как выглядит лицо]
Если область кожи выстраивается в линию и не отклоняется слишком далеко от профиля, тогда она считается лицом. Как только лицо будет подтверждено, добавьте его в хранилище данных собственных данных [для распознавания]. Чтобы сохранить обработку, вы можете рассмотреть возможность ограничения области поиска, если вы ищете предыдущее лицо. [Учитывая частоту кадров и последний раз, когда человек был замечен]
Если вы имеете в виду "Толпа потока", я думаю, вы просто имеете в виду плотность лиц в толпе.
Теперь вы подтвердили, что движущимся объектом в видео является человек. Теперь вам нужно только отметить это, а затем убедиться, что вы больше не считаете их новым человеком.
Этот подход: действительно зависит от вашей способности обнаруживать области лица. Это может не сработать, если люди в видео смотрят вниз, не подгоняя профиль обученных данных и т.д. Также это может быть сделано, если человек надевает солнцезащитные очки в видео. [Возможно, это будет считаться "новым лицом" ]
Ответ 6
Я думаю, что если у вас плотные люди с большим количеством окклюзий, вам нужно использовать какой-то алгоритм машинного обучения, например, вы можете использовать Implicit Model Model для функций.