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

Трекинг объектов.

Recommended Posts

Пробовал стандартные примеры из OpenCV? blobtracking, например.

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


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

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

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

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


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

Вот в этом (пост №98) :) :

http://www.compvision.ru/forum/index.php?showtopic=15&st=80

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


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

Вот в этом (пост №98) :) :

http://www.compvision.ru/forum/index.php?showtopic=15&st=80

Возможно использовать каскады Хаара для любого объекта? Я так и не нашел описание что вообще из себя представляю каскады(

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


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

Классическая схема распознавания.

Берём изображение выделяем признаки.

Затем берётся прямоугольник который накрывает некоторое под пространство.

Сверяя значение координат признаков и их количество в этом подпространстве происходит классификация. Принадлежит ли этот набор признаков к заданному классу. То есть мы решаем является этот набор признаков нашим объектом.

Идёт перебор координат прямоугольника.

Так вот в каскаде используется не нейронная сеть, а двоичные деревья решений.

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

Это значительно ускоряет обработку по сравнению с НС. И качество распознавания не сильно страдает, можно сказать практически не страдает.

Могу и ошибаться так как сам до конца не разбирался, но как-то так.

Использовать можно для любого объекта. Вернее в большинстве случаев оно вам подойдёт.

  • Like 1

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


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

А о чем статья в Wiki compvision про обучение каскадов, алгоритм ясен, но в чем его использовать? И можно статью по использованию собственных каскадов для обнаружения объектов, а не лиц, или в opencv это одно и тоже?

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


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

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


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

Примерный алгоритм таков:

1) сделать кадры с объектом слежения с разных ракурсов,

2) сделать на основе кадров файл каскада,

3) далее применять каскады cvHaarDetectObjects();

Возникает вопрос, так как объект в пространстве, его можно вращать. Но у книги с фронтальным представлением и изометрическим мало общих признаков, будет ли находить?

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


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

Хаар не будет находить. Для этого дескрипторы используют см. opencv-шный пример find_obj.cpp, там как раз плоский объект ищут.

Вот примерно оно:

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


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

Тут опять же только вид спереди, а если изометрический, то не найдет.

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


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

Этот метод допускает повороты плоскости вокруг осей. Вопрос в устойчивости детектирования дескрипторов.

А постановку задачи с картинками можно?

Может Вас вполне ArToolkit устроит.

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


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

Нужно знать что мы хотим детектировать.

Чем больше мы знаем об объекте тем надежнее детектирование.

Допустим, в кадре толпа людей, плюс к тому ездят машины и летает муха. Что здесь объект, а что фон?

Вы сами справитесь (живыми мозгами) со своей постановкой задачи при таких условиях? :crazysmile:

А комп, он ведь тупой, что ему скажешь, то и делает :)

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


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

Нужно знать что мы хотим детектировать.

Чем больше мы знаем об объекте тем надежнее детектирование.

Допустим, человек идет в толпе плюс к тому ездят машины и летает муха. Что здесь объект, а что фон?

Вы сами справитесь со своей постановкой задачи при таких условиях? :crazysmile:

Да, я не правильно разбил задачи на этапы. Все гораздо более конкретно.

Есть машина, и БПЛА, нужно написать программную часть слежения за машиной.

PS Все _Гораздо_ более конкретно чем я написал :)

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


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

Да, так понятнее :)

Я, в таком случае, посмотрел бы вначале на:

1) CamShift - требуется собрать статистику цвета машины, можно выделить мышкой в кадре для инициализации.

2) оптический поток

3) фильтр кальмана или фильтр частиц (particle filter или ConDensation)

Еще есть

blobtrack_sample.cpp

в примерах по opencv.

Очень советую посмотреть, хотя бы для того, чтобы освоиться с этой областью.

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


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

Уважаемые форумчане. Передо мной стоит следующая задача.

- есть камера, пусть она стоит в комнате - то есть неподвижный фон

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

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

Для начала я открыл файл motempl.exe - и получил эти самые "факты движения" круги которые показывают типа "вот здесь" произошло движение и двигалось оно вон туда. Окей. Поставил счетчики и невидимую границу - и типа если круг находится слева от границы но расстояние между его центром меньше порога то значит он сейчас перейдет границу и плюсую к счетчику.

1. НО возникла проблема - что у одного человека программа показывает кучу движений - ноги отдельно, руки отдельно + рюкзак на спине отдельно. И счетчики которые я поставил показывали мне что мол через границу прошел не один человек а ТРИ ( его части типа).

2. и еще одна что счетчик каждый кадр плюсовал +1 к счетчику. а мне надо просто - прошел человек - плюсую единицу!

В дополнение к этому в комнате ветер и иногда колышится растительность (дополнительные движения) - я так понимаю это убирается предварительной обработкой фона.

Вот такая задача - почитал форум - и выявил что

а)методы ЛК расчета оптического потока могут помочь мне, как это сделано например в проге lkdemo - типа выявляю движение шаблонами - и ставлю точку туда а потом рассчитываю Люкасом Канаде ... ?

б) есть blobtrack.exe (который надо изучить, и он как то помогает ) - ну я вставил видео ниче не понял про что она? ... выявляет куда объект движется?

в) движение разных частей ОДНОГО объекта можно объединить в одно движение ОДНОГО объекта контурным анализом...

г) метод конденсации - тут уместен вообще?:)

Помогите советом, с чего мне начать и куда двигатся... Вот из этих четырех пунктов мне что нибудь поможет?

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


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

HOG забыли :)

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


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

1. HOG - дополнительная библиотека для OPENCV для детекта людей?

2. в итоге - с чего начинать с чего копать?)))

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


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

1) HOG - это метод (Histogram of oriented gradients), может использоваться для детекта разных вещей. В opencv он натаскан на людей.

2) Начать лучше с книжки А.А. Лукьяница, А.Г. Шикин. "Цифровая обработка видеоизображений". В интернете есть. Там есть несколько глав, посвященных трекингу. Вот с трекингом сначала и нужно разобраться.

  • Like 1

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


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

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

Может есть какие нибудь алгоритмы помимо HOG, реализованные в OpenCV ?

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


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

Для детекта движения почитай про codebook в opencv есть готовый пример. Это для статической камеры.

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


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

Добрый день, уважаемые! Итак я прочитал книгу "А.А. Лукьяница, А.Г. Шишкин - Цифровая обработка видеоизображений" до 5-й главы. В решении моей задачи я выделяю (как в книге и было сказано) следующие три этапа

- Выделение переднего плана

- Сегментация движущихся объектов

- Трекинг объектов

Хочу сделать все по порядку, начну с выделения переднего плана. Как я прочитал есть 4 типа методов, я хочу реализовать метод временной разности , но как сказано в книге достаточно устойчиво получается выделять передний план , применив в дополнении к методу временной разности еще и вероятностный метод.

Так вот вопрос - есть уже готовая реализация этих методов на OpenCV ? может шаблон ?

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


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

Да, есть: Adaptive background mixture. Там на каждый пиксель создаётся несколько Гауссианов (нормальных распределений) и определяется к какому из них принадлежит текущее значение пикселя. если ни к какому, то пиксель переднеплановый. Ну и довольно хитрая система обновления параметров распределений. Рвботает довольно хорошо, но не быстро.

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


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

Погуглил - нашел статью на английском, там по всей видимости теория расказывается, а в openCV реализация встроенная я так понял, встроена Adaptive background mixture в структуру BackgroundSubtractorMOG, я все правильно понимаю?

в сети открытого кода нет. Скачал opencv 2.3 (сам я пользовался 2.1 до сих пор) - в samples/c нет вроде программы.

Nuzhny , где мне найти то Adaptive background mixture?))

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


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

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

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

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

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

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

Войти

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

Войти сейчас


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

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

×