Nuzhny 243 Report post Posted December 21, 2010 Пробовал стандартные примеры из OpenCV? blobtracking, например. Share this post Link to post Share on other sites
uchiro 0 Report post Posted December 26, 2011 Задача: программе указывается любой объект в пространстве, после программа должна отслеживать его движение, объект может вращаться, при потери и возвращении объекта из видимости также находить объект. Предполагаю что нужно использовать стерео-зрение. Только начинаю разбираться в этой теме, и хотел бы услышать в каком направлении двигаться. Share this post Link to post Share on other sites
Smorodov 578 Report post Posted December 26, 2011 Вот в этом (пост №98) : http://www.compvision.ru/forum/index.php?showtopic=15&st=80 Share this post Link to post Share on other sites
uchiro 0 Report post Posted December 26, 2011 Вот в этом (пост №98) : http://www.compvision.ru/forum/index.php?showtopic=15&st=80 Читаю, спасибо. Share this post Link to post Share on other sites
uchiro 0 Report post Posted December 27, 2011 Вот в этом (пост №98) : http://www.compvision.ru/forum/index.php?showtopic=15&st=80 Возможно использовать каскады Хаара для любого объекта? Я так и не нашел описание что вообще из себя представляю каскады( Share this post Link to post Share on other sites
Pavia00 32 Report post Posted December 27, 2011 Классическая схема распознавания. Берём изображение выделяем признаки. Затем берётся прямоугольник который накрывает некоторое под пространство. Сверяя значение координат признаков и их количество в этом подпространстве происходит классификация. Принадлежит ли этот набор признаков к заданному классу. То есть мы решаем является этот набор признаков нашим объектом. Идёт перебор координат прямоугольника. Так вот в каскаде используется не нейронная сеть, а двоичные деревья решений. Где каждый узел либо принимает объект к классу либо отвергает. Если отвергает, то остальные условия не проверяются. Переходим к следующий позиции. Это значительно ускоряет обработку по сравнению с НС. И качество распознавания не сильно страдает, можно сказать практически не страдает. Могу и ошибаться так как сам до конца не разбирался, но как-то так. Использовать можно для любого объекта. Вернее в большинстве случаев оно вам подойдёт. 1 Share this post Link to post Share on other sites
uchiro 0 Report post Posted December 27, 2011 А о чем статья в Wiki compvision про обучение каскадов, алгоритм ясен, но в чем его использовать? И можно статью по использованию собственных каскадов для обнаружения объектов, а не лиц, или в opencv это одно и тоже? Share this post Link to post Share on other sites
Smorodov 578 Report post Posted December 27, 2011 Здесь мои слайды к лекции: http://www.compvision.ru/forum/index.php?app=core&module=attach§ion=attach&attach_id=369 Здесь про Adaboost: http://www.compvision.ru/forum/index.php?showtopic=543 Share this post Link to post Share on other sites
uchiro 0 Report post Posted December 27, 2011 Примерный алгоритм таков: 1) сделать кадры с объектом слежения с разных ракурсов, 2) сделать на основе кадров файл каскада, 3) далее применять каскады cvHaarDetectObjects(); Возникает вопрос, так как объект в пространстве, его можно вращать. Но у книги с фронтальным представлением и изометрическим мало общих признаков, будет ли находить? Share this post Link to post Share on other sites
Smorodov 578 Report post Posted December 27, 2011 Хаар не будет находить. Для этого дескрипторы используют см. opencv-шный пример find_obj.cpp, там как раз плоский объект ищут. Вот примерно оно: Share this post Link to post Share on other sites
uchiro 0 Report post Posted December 27, 2011 Тут опять же только вид спереди, а если изометрический, то не найдет. Share this post Link to post Share on other sites
Smorodov 578 Report post Posted December 27, 2011 Этот метод допускает повороты плоскости вокруг осей. Вопрос в устойчивости детектирования дескрипторов. А постановку задачи с картинками можно? Может Вас вполне ArToolkit устроит. Share this post Link to post Share on other sites
uchiro 0 Report post Posted December 27, 2011 Вот, например вот это. Объект и фон могут быть любыми.Archive.zip Share this post Link to post Share on other sites
Smorodov 578 Report post Posted December 27, 2011 Нужно знать что мы хотим детектировать. Чем больше мы знаем об объекте тем надежнее детектирование. Допустим, в кадре толпа людей, плюс к тому ездят машины и летает муха. Что здесь объект, а что фон? Вы сами справитесь (живыми мозгами) со своей постановкой задачи при таких условиях? А комп, он ведь тупой, что ему скажешь, то и делает Share this post Link to post Share on other sites
uchiro 0 Report post Posted December 27, 2011 Нужно знать что мы хотим детектировать. Чем больше мы знаем об объекте тем надежнее детектирование. Допустим, человек идет в толпе плюс к тому ездят машины и летает муха. Что здесь объект, а что фон? Вы сами справитесь со своей постановкой задачи при таких условиях? Да, я не правильно разбил задачи на этапы. Все гораздо более конкретно. Есть машина, и БПЛА, нужно написать программную часть слежения за машиной. PS Все _Гораздо_ более конкретно чем я написал Share this post Link to post Share on other sites
Smorodov 578 Report post Posted December 27, 2011 Да, так понятнее Я, в таком случае, посмотрел бы вначале на: 1) CamShift - требуется собрать статистику цвета машины, можно выделить мышкой в кадре для инициализации. 2) оптический поток 3) фильтр кальмана или фильтр частиц (particle filter или ConDensation) Еще есть blobtrack_sample.cpp в примерах по opencv. Очень советую посмотреть, хотя бы для того, чтобы освоиться с этой областью. Share this post Link to post Share on other sites
Predatorxxx 5 Report post Posted January 26, 2012 Уважаемые форумчане. Передо мной стоит следующая задача. - есть камера, пусть она стоит в комнате - то есть неподвижный фон - в комнате постоянно ходят люди, посередине фрейма существует невидимая граница - при переходе любого объекта сквозь эту границу слева - направо надо прибавлять +1 к одному счетчику и справа - налево +1 к другому счетчику. ну и просто вывести на экран сколько они насчитали. Для начала я открыл файл motempl.exe - и получил эти самые "факты движения" круги которые показывают типа "вот здесь" произошло движение и двигалось оно вон туда. Окей. Поставил счетчики и невидимую границу - и типа если круг находится слева от границы но расстояние между его центром меньше порога то значит он сейчас перейдет границу и плюсую к счетчику. 1. НО возникла проблема - что у одного человека программа показывает кучу движений - ноги отдельно, руки отдельно + рюкзак на спине отдельно. И счетчики которые я поставил показывали мне что мол через границу прошел не один человек а ТРИ ( его части типа). 2. и еще одна что счетчик каждый кадр плюсовал +1 к счетчику. а мне надо просто - прошел человек - плюсую единицу! В дополнение к этому в комнате ветер и иногда колышится растительность (дополнительные движения) - я так понимаю это убирается предварительной обработкой фона. Вот такая задача - почитал форум - и выявил что а)методы ЛК расчета оптического потока могут помочь мне, как это сделано например в проге lkdemo - типа выявляю движение шаблонами - и ставлю точку туда а потом рассчитываю Люкасом Канаде ... ? б) есть blobtrack.exe (который надо изучить, и он как то помогает ) - ну я вставил видео ниче не понял про что она? ... выявляет куда объект движется? в) движение разных частей ОДНОГО объекта можно объединить в одно движение ОДНОГО объекта контурным анализом... г) метод конденсации - тут уместен вообще? Помогите советом, с чего мне начать и куда двигатся... Вот из этих четырех пунктов мне что нибудь поможет? Share this post Link to post Share on other sites
Smorodov 578 Report post Posted January 26, 2012 HOG забыли Share this post Link to post Share on other sites
Predatorxxx 5 Report post Posted January 26, 2012 1. HOG - дополнительная библиотека для OPENCV для детекта людей? 2. в итоге - с чего начинать с чего копать?))) Share this post Link to post Share on other sites
Smorodov 578 Report post Posted January 26, 2012 1) HOG - это метод (Histogram of oriented gradients), может использоваться для детекта разных вещей. В opencv он натаскан на людей. 2) Начать лучше с книжки А.А. Лукьяница, А.Г. Шикин. "Цифровая обработка видеоизображений". В интернете есть. Там есть несколько глав, посвященных трекингу. Вот с трекингом сначала и нужно разобраться. 1 Share this post Link to post Share on other sites
DoctorZelen 0 Report post Posted January 27, 2012 кстати, работал я с HOG. Как оказалось вещь довольно глюкнутая, очень много помех и ложных срабатываний. В добавок пришлось пускать все вычисления через GPU. Может есть какие нибудь алгоритмы помимо HOG, реализованные в OpenCV ? Share this post Link to post Share on other sites
tipabot 0 Report post Posted January 27, 2012 Для детекта движения почитай про codebook в opencv есть готовый пример. Это для статической камеры. Share this post Link to post Share on other sites
Predatorxxx 5 Report post Posted February 6, 2012 Добрый день, уважаемые! Итак я прочитал книгу "А.А. Лукьяница, А.Г. Шишкин - Цифровая обработка видеоизображений" до 5-й главы. В решении моей задачи я выделяю (как в книге и было сказано) следующие три этапа - Выделение переднего плана - Сегментация движущихся объектов - Трекинг объектов Хочу сделать все по порядку, начну с выделения переднего плана. Как я прочитал есть 4 типа методов, я хочу реализовать метод временной разности , но как сказано в книге достаточно устойчиво получается выделять передний план , применив в дополнении к методу временной разности еще и вероятностный метод. Так вот вопрос - есть уже готовая реализация этих методов на OpenCV ? может шаблон ? Share this post Link to post Share on other sites
Nuzhny 243 Report post Posted February 6, 2012 Да, есть: Adaptive background mixture. Там на каждый пиксель создаётся несколько Гауссианов (нормальных распределений) и определяется к какому из них принадлежит текущее значение пикселя. если ни к какому, то пиксель переднеплановый. Ну и довольно хитрая система обновления параметров распределений. Рвботает довольно хорошо, но не быстро. Share this post Link to post Share on other sites
Predatorxxx 5 Report post Posted February 6, 2012 Погуглил - нашел статью на английском, там по всей видимости теория расказывается, а в openCV реализация встроенная я так понял, встроена Adaptive background mixture в структуру BackgroundSubtractorMOG, я все правильно понимаю? в сети открытого кода нет. Скачал opencv 2.3 (сам я пользовался 2.1 до сих пор) - в samples/c нет вроде программы. Nuzhny , где мне найти то Adaptive background mixture?)) Share this post Link to post Share on other sites