Повышение производительности обнаружения известных объектов с помощью OpenCV

Я работаю над проектом, в котором мне нужно обнаружить известное изображение в сцене в «реальном времени» в мобильном контексте (, что означает, что я снимаю кадры с помощью камеры смартфона и изменяю размер кадра до 150x225 ). ]. Сама картина может быть довольно сложной. Прямо сейчас я обрабатываю каждый кадр в среднем за 1,2 с (с использованием OpenCV ). Я ищу способы улучшить время обработки и глобальную точность. Моя текущая реализация работает следующим образом:

  1. Захват кадра
  2. Преобразуйте его в оттенки серого
  3. Определите ключевую точку и извлеките дескрипторы с помощью ORB
  4. . Сопоставьте дескриптор (2NN)(объект -> сцена )и отфильтровать их с помощью теста соотношения
  5. Сопоставьте дескриптор (2NN)(сцена -> объект )и отфильтровать их с помощью теста соотношения
  6. Удаление несимметричного -совпадения с 4. и 5.
  7. Вычислите достоверность совпадения (% совпадающих ключевых точек по отношению к общему количеству ключевых точек)

Мой подход может быть неправильным, но результаты в порядке, хотя есть много возможностей для улучшения. Я уже заметил, что извлечение SURF происходит слишком медленно, и мне не удалось использовать гомографию (, это может быть связано с ORB ). Все предложения приветствуются!

11
задан Ilmari Karonen 27 October 2013 в 14:10
поделиться