Перейти к содержимому
Compvision.ru
ale-ivan

Распознавание голов в очереди

Recommended Posts

Здравствуйте,

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

Пример удачной картинки с высокой распознаваемостью, post-722-0-90004500-1314805264_thumb.png

Пример с низкой распознаваемостью, post-722-0-87090500-1314805351_thumb.png

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

А если Kinect попробовать применить?

Отсечь по порогу на слое расстояний определенный уровень (уровень головы) и получим аккуратные круги.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Можно примерно определить площадь человека в пикселях, а после разделить площадь переднего плана на площадь человека.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Да, использовать стереокамеру было бы намного удобнее, но стоит обычная и работа только с ней(

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

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

Поделиться сообщением


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

да, трекинг я использую, но трекер тоже чудес не сделает, ему необходимо чтоб объект более - менее стабильно детектировался, поэтому он довольно часто "срывается". C цветом тоже думал, но у всех цвета разные, не представляю как это учесть..

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

C цветом тоже думал, но у всех цвета разные, не представляю как это учесть..

так как раз дело в том, что когда объект попадает в область видимости, то сначала определяется подходит ли он под описание(человек ли), затем запоминаются его признаки(цвет головы) и он сопровождается до выхода за пределы видимости.

а почему срывается?

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
а почему срывается?

срывается потому что не во всех кадрах определяется голова хафом, хотя там и компенсатор стоит,

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

blob traсking как раз по цвету, можно выделять блобы, сортировать по размеру и форме(получать головы), вычислять средний цвет и потом использовать как доп. параметр при трэкинге.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

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

и если люди будут заходить например вдвоем то будут определяться как 1 блоб

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

ну если уж 2 человека склеены вдвоем и одеты в цвет волос, то тут уж ничего не поделаешь, либо более аккуратно сегментировать, либо предусмотреть возможность разделение блоба на 2 блоба.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

а какую библиотеку лучше использовать , cvBlob или есть что то лучшее?

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

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

cvBlob вроде более понятная, но и более тормозная.(точно не уверен)

в целом наверно можно все делать и через контуры в opencv (даже в примерах помоему есть)

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

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

post-722-0-91644900-1314872798_thumb.png

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

так какой вы алгоритм сегментации используете?

покажите примеры работы.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

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

остальные это просто канни, разность кадров и пороговое для U компоненты

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

еще есть статья с такой же проблемой http://www.ifp.illinois.edu/~ashutosh/papers/ICPR00.pdf

только я никак не пойму как они сегментируют голову во 2м шаге по цвету

еще тут подобное но метод подозрительно прост и похож на хафа http://www.iadis.net/dl/final_uploads/200712C090.pdf

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Кстати! Попробуй морфологию с CV_MOP_TOPHAT и CV_MOP_BLACKHAT: пример.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

спасибо за совет!

попробовал, но оно хорошо проходит только с темными головами на фоне светлой одежды(

post-722-0-16453100-1314887615_thumb.png

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Cмотрели демо retinaDemo.cpp, которое появилось в новой версии opencv?

Сайт проекта с картинками здесь: https://sites.google.com/site/benoitalexandrevision/demonstrations

И еще, может быть оптический поток использовать?

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Можешь выложить видео на несколько минут с посетителями? Тяжело думать без фактического материала.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

насчет ретины не слышал, буду пробовать,

Можешь выложить видео на несколько минут с посетителями?

а видео пожалуйста выкладываю)

forum.rar

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

сейчас получил неплохие результаты на комбинации детектора хафа и template matching где шаблон динамически меняется детектором кругов, поглядим что из этого выйдет

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
template matching где шаблон динамически меняется детектором кругов

это как?

еще есть chamfer matching, но он довольно тормозной, если много проходов.

и active contours, но сам я его не пробовал.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
это как?

зона, которую распознал детектор хафа заносится в буфер шаблонов, потом через square difference ищется схожая зона если не сработал детектор

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Создайте учётную запись или войдите для комментирования

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

Создать учётную запись

Зарегистрируйтесь для создания учётной записи. Это просто!

Зарегистрировать учётную запись

Войти

Уже зарегистрированы? Войдите здесь.

Войти сейчас


  • Сейчас на странице   0 пользователей

    Нет пользователей, просматривающих эту страницу

×