Задача определения собственного местоположения является одной из важнейших задач робототехники. Компьютерное зрение может предо-ставить альтернативу существующим методам, таким как GNSS, доступной только вне помещений и имеющей низкую точность в условиях плотной городской застройки, а использование обычных камер позволяет создавать дешёвые решения, в отличие от использования более продвинутых оптических систем, например, лидаров. Алгоритмы определения положения камеры используются в таких областях как SLAM, создание 3В-реконструкций и дополненная реальность. В частности, данная работа была проведена в рамках проекта компании Системы Компьютерного Зрения по созданию приложения дополненной реальности, которое должно работать в пределах целого города.
В данном проекте существует реконструкция города в виде облака точек, и возникает задача определения положение пользователя относительно неё, с помощью изображения, содержащего часть городских построек. Так как задача предполагает работу с пользовательскими устройствами (мобильными телефонами, планшетами), предполагается, что внутренние параметры камеры неизвестны. А задача дополненной реальности задаёт необходимость работы алгоритма в реальном времени.
Проект, в котором проводилась данная работа, использует популярную open-source библиотеку компьютерного зрения COLMAP [9, 8], решающую задачи Structure-from-Motion (SfM) и много-видового стерео. Данная библиотека в среднем показывает лучшие результаты, относительно других аналогичных открытых библиотек [1], однако её реализация определения положения некалиброванной камеры относительно облака точек потенциально не является оптимальной ни по времени, ни по точности, так как содержит перебор параметров камеры.
Так как задачи реального времени накладывают сильные ограничения на работу алгоритмов, возникла необходимость оптимизации решения описанной задачи в библиотеке COLMAP.
1. Постановка задачи
Целью данной работы является модификация библиотеки COLMAP оптимальным алгоритмом локализации некалиброванной камеры относительно облака 3D точек.
Для достижения цели были поставлены следующие задачи:
1. Обзор и реализация алгоритмов, решающих задачу оценки позы камеры.
2. Сравнение производительности и точности выбранных алгоритмов.
3. Интеграция алгоритмов в библиотеку COLMAP [9, 8].
В ходе данной работы были достигнуты следующие результаты:
• приведён обзор алгоритмов оценки поз P3.5Pf [11] и P4Pf [6] и выполнена их реализация на языке MATLAB (https://github.
com/emironovich/pnpf_uncalibrated)
• реализации P3.5Pf и P4Pf были перенесены на язык C++ (https://github.com/emironovich/pnpf_uncalibrated_lib) и встроены в библиотеку COLMAP (https://github.com/emironovich/colmappnpf_alteration);
• реализации алгоритмов были протестированы на основе бенчмарка ETH3D[10], в результате чего было выяснено, что алгоритм P4Pf превосходит реализации COLMAP и P3.5Pf по метрикам точности и по времени исполнения, а также, что реализация P3.5Pf уступает двум другим реализациям по точности, производя большее количество выбросов, однако превосходит COLMAP по времени исполнения;
• был предпринят эксперимент по оценке поз в одинарной точности, однако было установлено, что одинарной точности не хватает для корректной работы алгоритмов, и вычисления следует проводить в двойной точности.
Автор выражает благодарность Дмитрию Александровичу Корчёмкину, принимавшему большое участие в создании этой работы, и без вклада которого она не была бы возможна.