Система визуального и картографирования одной камеры

17

Некоторое время назад я увидел демонстрацию маленького «игрушечного танка» с установленной на нем одной камерой. Этот танк мог ездить по полу и обнаруживать предметы, а затем двигаться / поворачивать, чтобы избежать их. Интересно то, что в нем использовалась система видеонаблюдения с одной камерой и, насколько я помню, использовалось преимущество того, что пол был плоским. а затем, используя скорость, с которой объект перемещался в сцене относительно двигателей и направлений движения, оценивали и, следовательно, наносили на карту сцену.

Может кто-нибудь прислать мне указатели, что искать, чтобы получить больше информации об этом, или некоторые указатели на базы кода, которые могут это сделать.

Причина, по которой я спрашиваю, состоит в том, что это была система с одной камерой несколько лет назад (5+) и, следовательно, (насколько я помню) была относительно низкая вычислительная нагрузка. Я собирался попробовать это на Raspberry PI, чтобы построить машину / танк, который отображает комнату или набор комнат.

Бен
источник
2
Добро пожаловать в робототехнику Бен. Пожалуйста , ознакомьтесь Как попросить и тур по некоторым намекам о том , как писать практические вопросы к ответственности на основе реальных проблем , с которыми вы сталкиваетесь . Спасибо,
Марк Бут

Ответы:

4

Трудно сказать, что именно они делали, но здесь вы можете использовать следующие термины: оптический поток » и « эгоизм ». Звучит так, как будто может быть обнаружение и сопоставление некоторых функций (что-то вроде SURF или SIFT) или сегментирование переднего / заднего фона.

OpenCV , вероятно, является наиболее широко используемой кодовой базой для компьютерного зрения, в ней много функций для анализа движения . OpenCV должен работать на Raspberry Pi, хотя ваши алгоритмы могут быть ограничены вычислительной мощностью.

WildCrustacean
источник
4

Основываясь на WildCrustcean ответ «s другой Possiblity будет стерео видения . В то время как мы часто думаем о стереозрении как об использовании двух камер, методам действительно нужны только изображения, смещенные в пространстве, и модель смещения. Другими словами, я могу сделать снимок, переместить, затем сделать еще один снимок. Поскольку я знаю преобразование между этими двумя изображениями, я могу использовать методы стереозрения для вычисления расстояния до точки на изображении.

DaemonMaker
источник
2
Я думаю, что техника, о которой вы говорите, называется «Структура из движения».
Козуч
1

Это могло бы использовать Parellel Tracking и Mapping PTAM . PTAM является реализацией задачи одновременной локализации и картирования (SLAM), которая использует одну камеру для построения 3D-карты мира и локализации путем отслеживания визуальных функций.

Однажды моя команда экспериментировала с использованием пакета PTAM в ROS .

Мы работали с Ubuntu на Intel Atom, и, насколько я помню, он не слишком загружал процессор. Мы не использовали его, в основном потому, что не смогли найти достаточно функций в среде, где будет работать наш робот.

Robz
источник
0

В общем, вы не можете извлечь метрическое расстояние измерения из одного изображения, если у вас нет дополнительной информации о мире. Например, если вы знаете, что мир плоский (или вы можете обнаружить дно, которое является плоской областью), то вы можете оценить гомографию.

Гомография - это проективное преобразование между плоскостями (матрица 3х3). Учитывая внутреннюю калибровку камеры, вы можете разложить эту плоскостную гомографию на вращение и перемещение. Перевод в масштабе. Вы можете решить эту неоднозначность шкалы, зная расстояние от камеры до пола (плоскости).

Когда у вас есть гомография, вы можете обнаружить объекты, которые не находятся на плоскости. Гомография позволяет вам деформировать первое изображение на второе. Объекты на плоскости будут выровнены и будут иметь небольшую ошибку. Объектов не на самолете не будет выравниваться. Это называется параллакс.

Одним из способов реализации этого может быть

  1. Извлечение функций из обоих изображений.
  2. Сопоставьте функции или отследите их.
  3. Оцените гомографию, используя RANSAC.
  4. Разложить гомографию на вращение и перевод с помощью калибровки.
  5. Деформируйте первое изображение на
    второе. Пикселей с большими ошибками нет на полу и могут быть
    препятствия.

Большинство строительных блоков реализованы в opencv (см. Http://docs.opencv.org/modules/calib3d/doc/camera_calibration_and_3d_reconstruction.html. ).

Удачи.

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

bendervader
источник