Подтвердить что ты не робот

SURF и SIFT Альтернативный алгоритм отслеживания объектов для расширенной реальности

После запроса здесь и попыток как SURF, так и SIFT, ни один из них не будет достаточно эффективным, чтобы создавать точки интереса достаточно быстро, чтобы отслеживать поток с камеры.

SURF, например, занимает около 3 секунд, чтобы создавать точки интереса для изображения, что слишком медленно отслеживает видео, поступающее с веб-камеры, и будет еще хуже при использовании его на мобильном телефоне.

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

Спасибо

4b9b3361

Ответ 1

Я подозреваю, что для вашего использования SURF могут потребоваться некоторые изменения?

Вот ссылка на бумагу MIT по использованию SURF для приложений с расширенной реальностью на мобильных устройствах.

Выдержки:

В этом разделе мы представляем нашу реализация алгоритма SURF и его адаптация к мобильному Телефон. Затем мы обсудим влияние что точность имеет скорость поиск ближайших соседей и показать, что мы можем достичь порядка величины ускорение с минимальным воздействием на точность совпадения. Наконец, мы рассказывать подробности телефона реализация сопоставления изображений трубопровод. Мы изучаем производительность, использование памяти и потребление полосы пропускания на телефоне.

Возможно, вы также захотите изучить алгоритмы OpenCV, потому что они опробованы и протестированы.

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

Часть отслеживания POI оценивает свой вектор от одной точки в 2D-изображении к другому, а затем опционально подтверждает, что он все еще существует (через характеристики пикселя). Такой же подход можно использовать для отслеживания (не повторного сканирования всего изображения) для целей POI и POI-групп/объектов и изменений вращения.

В Интернете есть много документов для отслеживания объектов на 2D-проекции (во многих случаях до перекоса сервера).

Удачи!

Ответ 3

Мы используем SURF для проекта, и мы обнаружили OpenSURF для outmatch реализации OpenCV SURF с необработанной скоростью и производительностью. Мы все еще не проверяли повторяемость и точность, но это быстрее.


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

Ответ 4

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

Если вам нужен (несколько) трекер общего назначения, вы можете проверить PTAM. Сайт (http://www.robots.ox.ac.uk/~gk/PTAM/) в настоящее время недоступен, но здесь потрясающее видео об этом работает на iPhone (http://www.youtube.com/watch?v=pBI5HwitBX4)

Ответ 5

Как уже упоминалось, три секунды кажутся необычно длинными. Проверяя реализацию SURF в библиотеке Mahotas, я обнаружил, что она занимала в среднем 0,36 секунды даже при довольно больших изображениях (например, 1024x768). И это с комбинацией Python и C, поэтому я бы предположил, что некоторые другие реализации pure-C будут еще быстрее.

Ответ 6

Я нашел это хорошее сравнение алгоритмов обнаружения всех функций http://computer-vision-talks.com/2011/01/comparison-of-the-opencvs-feature-detection-algorithms-2/

Посмотрите. Это может быть полезно!

В соответствии с этим сравнением, и, как также предлагает mirror2image, FAST - лучший выбор. Но это зависит от того, чего вы действительно хотите достичь.

Ответ 7

Один из вариантов, который я использовал в ограниченных встроенных системах, - использовать более простой детектор процентных точек: например, FAST или Shi-Tomasi. Я использовал Shi-Tomasi, поскольку я настраивал FPGA и мог легко запускать его со скоростью пикселя без существенной буферизации.

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