Может ли SIFT выполняться в режиме реального времени?

#image-processing #data-structures #runtime #real-time #sift

#обработка изображений #структуры данных #время выполнения #в режиме реального времени #sift

Вопрос:

Существует ли какая-либо реализация SIFT на C / C , которая работает в режиме реального времени на процессоре ~ 2,2 ГГц и оперативной памяти 4 ГБ? Или какова наименьшая достижимая среда выполнения для извлечения функций и дескрипторов SIFT из ~ 2000 ключевых точек. Реализация C Эндрю Ведальди занимает около 3,5 секунд для 2000 ключевых точек.

Ответ №1:

В общем СЛУЧАЕ НЕТ. Точная реализация SIFT не может выполняться в режиме реального времени даже на современном ПК. Но есть реализации на GPU http://cs.unc.edu /~ccwu/siftgpu/.

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

Комментарии:

1. Какая-либо реализация сократила его даже до 1 секунды для ~ 2000 кейпоинов или код Эндрю Ведальди до сих пор самый быстрый без распараллеливания?

2. вы можете сравнить с реализацией OpenCV

3. OpenCV работает очень медленно, и результаты не такие хорошие, как у Эндрю Ведальди

Ответ №2:

Как сказано выше, SIFT не может выполняться в режиме реального времени. Однако вместо этого вы можете использовать двоичные дескрипторы, которые обеспечивают быструю альтернативу с немного худшей точностью и производительностью. Серию руководств по бинарным дескрипторам можно найти здесь:

Введение: http://gilscvblog.wordpress.com/2013/08/26/tutorial-on-binary-descriptors-part-1 /

КРАТКОЕ ОПИСАНИЕ: http://gilscvblog.wordpress.com/2013/09/19/a-tutorial-on-binary-descriptors-part-2-the-brief-descriptor/

СФЕРА: http://gilscvblog.wordpress.com/2013/10/04/a-tutorial-on-binary-descriptors-part-3-the-orb-descriptor/

БЫСТРЫЙ: http://gilscvblog.wordpress.com/2013/11/08/a-tutorial-on-binary-descriptors-part-4-the-brisk-descriptor/

УРОД: http://gilscvblog.wordpress.com/2013/12/09/a-tutorial-on-binary-descriptors-part-5-the-freak-descriptor/

Пример использования OpenCV: http://docs.opencv.org/doc/user_guide/ug_features2d.html

Комментарии:

1. Но SIFT — это не только дескриптор, но и детектор. И, вероятно, вы не можете найти детектор с производительностью в реальном времени, например, с разрешением 640 * 480.

2. FAST обеспечивает 10 -15 кадров в секунду с заданным разрешением

Ответ №3:

Вы можете использовать ORB, который действительно быстрый. Или настройте параметры SIFT / SURF / algorithm.

В OpenCV 3.1.0 теперь есть несколько алгоритмов, таких как KAZE и AKAZE — последний, пожалуй, самый лучший детектор и дескриптор изображений, поскольку он показывает отличные результаты с его (быстрым явным) пространством масштаба распространения. Предыдущие SIFT и SURF перемещаются в «дополнительный» репозиторий.

Тем не менее, возможно, вы хотите улучшить алгоритм сопоставления. В этом случае попробуйте использовать FLANN (также в 3.1.0).