ale-ivan 0 Жалоба Опубликовано August 31, 2011 Здравствуйте, недавно столкнулся с задачей подсчета количества людей в очереди на кассу с камеры на потолке. Для этого необходимо достаточно точно распознавать верхушки голов. Сейчас задача решается сначала вычитанием фона, выделением абсолютного градиента и обработкой всего этого преобразованием хафа для кругов. Результат неплохой, но недостаточный, плохо определяются головы, сливающиеся с полом и одеждой, а также быстро движущиеся. Буду очень благодарен за любые советы и подсказки. Пример удачной картинки с высокой распознаваемостью, Пример с низкой распознаваемостью, Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Smorodov 579 Жалоба Опубликовано August 31, 2011 А если Kinect попробовать применить? Отсечь по порогу на слое расстояний определенный уровень (уровень головы) и получим аккуратные круги. Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Nuzhny 243 Жалоба Опубликовано August 31, 2011 Можно примерно определить площадь человека в пикселях, а после разделить площадь переднего плана на площадь человека. Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
ale-ivan 0 Жалоба Опубликовано September 1, 2011 Да, использовать стереокамеру было бы намного удобнее, но стоит обычная и работа только с ней( С площадью тоже пробовал но получается хуже чем с головами - некоторые люди сегментируются очень большой площадью, некоторые маленькой, еще много детей) Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
mrgloom 242 Жалоба Опубликовано September 1, 2011 мне кажется точнее будет использовать какой нить трэкинг(хотя и сложнее наверно), типа человек заходит в поле зрения камеры счетчик увеличивается и там он сопровождается до выхода из поля зрения, хотя если люди довольно плотно стоят, то все будет сливаться, но хотя можно трекать именно голову(цвет+форма) Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
ale-ivan 0 Жалоба Опубликовано September 1, 2011 мне кажется точнее будет использовать какой нить трэкинг(хотя и сложнее наверно), типа человек заходит в поле зрения камеры счетчик увеличивается и там он сопровождается до выхода из поля зрения, хотя если люди довольно плотно стоят, то все будет сливаться, но хотя можно трекать именно голову(цвет+форма) да, трекинг я использую, но трекер тоже чудес не сделает, ему необходимо чтоб объект более - менее стабильно детектировался, поэтому он довольно часто "срывается". C цветом тоже думал, но у всех цвета разные, не представляю как это учесть.. Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
mrgloom 242 Жалоба Опубликовано September 1, 2011 C цветом тоже думал, но у всех цвета разные, не представляю как это учесть.. так как раз дело в том, что когда объект попадает в область видимости, то сначала определяется подходит ли он под описание(человек ли), затем запоминаются его признаки(цвет головы) и он сопровождается до выхода за пределы видимости. а почему срывается? Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
ale-ivan 0 Жалоба Опубликовано September 1, 2011 а почему срывается? срывается потому что не во всех кадрах определяется голова хафом, хотя там и компенсатор стоит, а по цвету, как точно определить цвет головы, если мы ее не всегда можем выделить.. Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
mrgloom 242 Жалоба Опубликовано September 1, 2011 blob traсking как раз по цвету, можно выделять блобы, сортировать по размеру и форме(получать головы), вычислять средний цвет и потом использовать как доп. параметр при трэкинге. Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
ale-ivan 0 Жалоба Опубликовано September 1, 2011 блобы хорошо будут работать на контрастных людях, но когда цвет волос и одежды похожий, можно будет выделить только все тело целиком( и если люди будут заходить например вдвоем то будут определяться как 1 блоб Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
mrgloom 242 Жалоба Опубликовано September 1, 2011 ну если уж 2 человека склеены вдвоем и одеты в цвет волос, то тут уж ничего не поделаешь, либо более аккуратно сегментировать, либо предусмотреть возможность разделение блоба на 2 блоба. Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
ale-ivan 0 Жалоба Опубликовано September 1, 2011 а какую библиотеку лучше использовать , cvBlob или есть что то лучшее? Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
mrgloom 242 Жалоба Опубликовано September 1, 2011 я думаю проблема в сегментации, еще бы неплохо перед сегментацией использовать медианную фильтрацию или фильтр кувахара. cvBlob вроде более понятная, но и более тормозная.(точно не уверен) в целом наверно можно все делать и через контуры в opencv (даже в примерах помоему есть) Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
ale-ivan 0 Жалоба Опубликовано September 1, 2011 всяческую фильтрацию использую, на вход детектора подаю 4 разных контура, см приложение Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
mrgloom 242 Жалоба Опубликовано September 1, 2011 так какой вы алгоритм сегментации используете? покажите примеры работы. Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
ale-ivan 0 Жалоба Опубликовано September 1, 2011 делаю маску вычитанием из фона(нижнее левое внутри большого окна), потом налаживаю ее на абсолютный взвешенный градиент, получается крайнее левое входное изображение остальные это просто канни, разность кадров и пороговое для U компоненты Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
ale-ivan 0 Жалоба Опубликовано September 1, 2011 еще есть статья с такой же проблемой http://www.ifp.illinois.edu/~ashutosh/papers/ICPR00.pdf только я никак не пойму как они сегментируют голову во 2м шаге по цвету еще тут подобное но метод подозрительно прост и похож на хафа http://www.iadis.net/dl/final_uploads/200712C090.pdf Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Nuzhny 243 Жалоба Опубликовано September 1, 2011 Кстати! Попробуй морфологию с CV_MOP_TOPHAT и CV_MOP_BLACKHAT: пример. Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
ale-ivan 0 Жалоба Опубликовано September 1, 2011 спасибо за совет! попробовал, но оно хорошо проходит только с темными головами на фоне светлой одежды( Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Smorodov 579 Жалоба Опубликовано September 1, 2011 Cмотрели демо retinaDemo.cpp, которое появилось в новой версии opencv? Сайт проекта с картинками здесь: https://sites.google.com/site/benoitalexandrevision/demonstrations И еще, может быть оптический поток использовать? Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Nuzhny 243 Жалоба Опубликовано September 1, 2011 Можешь выложить видео на несколько минут с посетителями? Тяжело думать без фактического материала. Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
ale-ivan 0 Жалоба Опубликовано September 2, 2011 насчет ретины не слышал, буду пробовать, Можешь выложить видео на несколько минут с посетителями? а видео пожалуйста выкладываю)forum.rar Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
ale-ivan 0 Жалоба Опубликовано September 5, 2011 сейчас получил неплохие результаты на комбинации детектора хафа и template matching где шаблон динамически меняется детектором кругов, поглядим что из этого выйдет Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
mrgloom 242 Жалоба Опубликовано September 5, 2011 template matching где шаблон динамически меняется детектором кругов это как? еще есть chamfer matching, но он довольно тормозной, если много проходов. и active contours, но сам я его не пробовал. Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
ale-ivan 0 Жалоба Опубликовано September 5, 2011 это как? зона, которую распознал детектор хафа заносится в буфер шаблонов, потом через square difference ищется схожая зона если не сработал детектор Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах