Как сделать отслеживание движения объекта с помощью видео?

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

Есть ли способ сделать это с помощью OpenCV или Matlab или другого бесплатного программного обеспечения?

Спасибо


person Niroshan    schedule 15.01.2011    source источник
comment
Возможно нейросеть (вообще не уверен)...   -  person BlackBear    schedule 15.01.2011
comment
Я надеялся на более простой способ (:D) с использованием краев, углов и элементов поверхности.   -  person Niroshan    schedule 15.01.2011
comment
Тогда сопоставление с образцом выглядит единственным выбором, я думаю. Удачи в этом случае;)   -  person BlackBear    schedule 15.01.2011
comment
Это трудная проблема, которую вы пытаетесь решить.   -  person Utkarsh Sinha    schedule 24.01.2011
comment
@Utkrash Это часть моего исследования за последний год. Мой проект связан с бесплатными видео с точки зрения. И проект очень сильно зависел от этого. Я должен сделать это. Я планирую изучить методы, предложенные здесь. Вот почему я еще не принял ни одного. Я обязательно опубликую свое решение, если мне это удастся   -  person Niroshan    schedule 24.01.2011


Ответы (6)


Отслеживание — это классическая проблема компьютерного зрения, которой до сих пор посвящены исследования в компьютерных науках; вы можете быстро получить представление о состоянии дел в этой области, проверив список принятых документов на CVPR 2010 (ежегодной крупнейшей конференции по компьютерному зрению), и вы увидеть, что по этой теме все еще публикуется активная работа (ищите слово «отслеживание» в списке).

Стандартный конвейер обработки решения проблемы отслеживания работает следующим образом. Сначала изображение анализируется для извлечения значимых дескрипторов, которые охватывают соответствующие углы и другие характерные особенности изображения. Эти дескрипторы позже передаются онлайн-классификатору, который обучен обнаруживать вероятные экземпляры интересующего вас объекта в каждом кадре. Дескриптор вашего объекта может быть известен априори (т. е. вычислен в автономном режиме) из предыдущих примеров того, как выглядит объект, но обычно он обновляется в каждом кадре в соответствии с тем, что система видит с течением времени, чтобы сделать обнаружение адаптивным. к динамическому виду объекта. Наконец, чтобы выбрать из пула возможных кандидатов в каждом кадре (из тех, которые были обнаружены), такие параметры, как положение и скорость ваших объектов, оцениваются по отношению к предыдущим кадрам с использованием последовательного статистическая модель.

Существует обширная литература по компьютерному зрению о хороших дескрипторах изображений, но одними из самых популярных являются SIFT, SURF или HOG. Для классификации наиболее успешными являются два метода: машины опорных векторов или группы классификации (например, ускорение или случайные леса), а для части оценки большинство людей по-прежнему используют фильтры Калмана (это разновидность последовательных марковская модель), фильтры частиц или, в более общем плане, модели оценки плотности.

Конкретный случай, который вы описали, немного проще, чем более общая и сложная проблема отслеживания объекта с произвольной камерой и движением объекта в естественных наружных сценах, поэтому вы можете найти код в Интернете, который может работать сразу в ваших условиях, но Я сомневаюсь в этом. Как отмечали другие (насколько мне известно), не существует стандартной библиотеки, которая сразу работала бы со всеми видами объектов, фонов и движущихся пространств. Тем не менее, вы, вероятно, можете найти код для отдельных компонентов стандартного общего конвейера, описанного выше (классификаторы, банки фильтров/функций, марковские модели оценки) в Интернете.

Мое предложение: если вы заинтересованы в создании хорошей системы (т. е. такой, которая действительно работает), посмотрите веб-сайты авторов самых последних статей на ведущих ежегодных конференциях по компьютерному зрению, таких как CVPR, ICCV, ECCV и SIGGRAPH. У них, как правило, есть онлайн-код для их последней работы с некоторыми видео-примерами, и это может помочь вам понять, как их методы работают в реальных условиях.

person Community    schedule 15.01.2011

Я сомневаюсь, что для этого есть программа, готовая к использованию... по крайней мере, вам нужно будет получить пару методов или библиотек и использовать для этого не такие простые математические вычисления. Люди делают свои диссертации об этом!

Это статья, которую я недавно прочитал:

http://cobweb.ecn.purdue.edu/RVL/Research/ModelBasedTracking/index.html

Если вы думаете, что это не то, что вы ищете, перейдите по ссылкам только для того, чтобы получить больше идей;)

person nacho4d    schedule 15.01.2011

Возможно, вам поможет KLT Tracker (Kanade Lucas Tomasi). Он сообщает вам, где обнаруженные точки перемещались между изображениями. Библиотека OpenCV содержит версию KLT Tracker, но без проверки аффинной согласованности (как указано на домашней странице KLT).

person Christian Ammer    schedule 15.01.2011

Если вы хотите попробовать готовый код, есть пример файла, который поставляется с OpenCV. В OpenCV 2.1 он находится в sample/c/blobtrack.cpp, а в OpenCV 2.2 — в Samples/c/blobtrack_sample.cpp. Оба поставляются с файлами .exe, поэтому вы можете сразу же попробовать образцы, если вам случится использовать Windows. Существует старый сайт Средство OpenCV Video Surveillance/Blob Tracker, на котором описано, как работает код.

Трекер в blobtrack.cpp разделен на три этапа (скопировано из предыдущей ссылки):

  1. Дискриминатор переднего плана/фона, который помечает каждый пиксель как передний план или фон.
  2. Детектор BLOB-объектов, который группирует соседние пиксели «переднего плана» в BLOB-объекты в стиле заливки.
  3. Средство отслеживания больших двоичных объектов, которое присваивает идентификационные номера большим двоичным объектам и отслеживает их движение от кадра к кадру.

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

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

Кроме того, вы можете пройти долгий путь, используя простую технику под названием вычитание фона, если фон вашего видео статичен, то есть если единственное, что меняется от кадра к кадру, — это сама игрушечная машинка. Но я думаю, что это поможет вам только в том, что касается определения местоположения объекта, а не оценки его позы.

Примечание. Мне не удалось заставить работать образец, поставляемый с OpenCV 2.2. Тот, что поставляется с OpenCV 2.1, у меня отлично работал.

person carnieri    schedule 16.01.2011

Взгляните на TLD (очевидно, Matlab):

TLD — это отмеченный наградами алгоритм отслеживания неизвестных объектов в видеопотоках в режиме реального времени. Интересующий объект определяется ограничивающей рамкой в ​​одном кадре. TLD одновременно отслеживает объект, изучает его внешний вид и обнаруживает его всякий раз, когда он появляется на видео. Результатом является отслеживание в реальном времени, которое со временем обычно улучшается.

Лично не пользовался, но демо-видео классные.

person moooeeeep    schedule 01.04.2013

Это программное обеспечение, которое вы ищете http://www.cabrillo.edu/~dbrown/tracker/

Эти статьи могут вдохновить вас на http://www.wired.com/wiredscience/2010/10/physics-of-angry-birds/

person Simone D'Amico    schedule 15.01.2011