Визуальная одометрия (ака. Оценка Egomotion) с OpenCV
Я планирую реализовать приложение с дополненной реальности. Для одной из особенностей мне нужна оценка egomotion. Только камера движется, в пространстве с неподвижными объектами (ничего или только небольшие части будут двигаться, так что их можно игнорировать).
поэтому я много искал и читал и наткнулся на OpenCV. Википедия явно заявляет, что он может быть использован для egomotion. Но я не могу найти никакой документации о он.
- мне нужно реализовать алгоритм egomotion самостоятельно с помощью методов обнаружения объектов OpenCV? (Я думаю, это будет очень сложно, потому что объекты будут двигаться с разной скоростью в зависимости от расстояния до камеры. И мне также нужно учитывать ротацию.)
- если да, то с чего мне начать? Есть хороший пример кода Kanade-Lucas-Tomasi функция трекер с поддержкой масштабирования и вращения?
P. S.: Я также знайте о маркерных фреймворках, таких как базе платформы Vuforia, но использование маркера-это то, что я хотел бы предотвратить, поскольку это ограничивает возможные точки зрения.
обновление 2013-01-08: я узнал, что оценка Egomotion более известна как визуальная одометрия. Поэтому я обновил название.
2 ответов
вы можете найти хорошую реализацию монокулярной визуальной одометрии на основе оптического потока здесь.
он закодирован с помощью emgucv (c# opencv wrapper), но вы не найдете проблем с его преобразованием обратно в чистый opencv.
Egomotion (или визуальная одометрия) обычно основан на оптическом потоке, и OpenCv имеет некоторые анализ движения и функции отслеживания объектов для вычислять оптически подачу (совместно с детектором особенности как cvGoodFeaturesToTrack()
).
может пригодиться.
Не полное решение, но может по крайней мере заставить вас идти в правильном направлении.