Курсовая работа на тему: "Визуальная одометрия для широкоугольных камер: прямой подход"
У нас на сайте представлено огромное количество информации, которая сможет помочь Вам в написании необходимой учебной работы.
Но если вдруг:
Вам нужна качественная учебная работа (контрольная, реферат, курсовая, дипломная, отчет по практике, перевод, эссе, РГР, ВКР, диссертация, шпоры...) с проверкой на плагиат (с высоким % оригинальности) выполненная в самые короткие сроки, с гарантией и бесплатными доработками до самой сдачи/защиты - ОБРАЩАЙТЕСЬ!
Курсовая работа на тему: "Визуальная одометрия для широкоугольных камер: прямой подход"
Оглавление
1. Введение . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
2. Задачи . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
3. Обзор существующих решений . . . . . . . . . . . . . . . . . . . . 5
4. Описание компонентов системы . . . . . . . . . . . . . . . . . . . 9
4.1. Отображение проекции . . . . . . . . . . . . . . . . . . . . 9
4.2. Инициализация . . . . . . . . . . . . . . . . . . . . . . . . 9
4.3. Direct image alignment............................................................. 12
4.4. Отслеживание точек вдоль эпиполярной кривой.................... 14
4.5. Совместная оптимизация.......................................................... 17
5. Программная реализация...................................................................... 18
5.1. Используемые технологии......................................................... 18
5.2. Архитектура системы.............................................................. 19
6. Результаты............................................................................................. 21
Список литературы.......................................................................................... 23
1. Введение
Компьютерное зрение на раннем этапе своего развития оптимистично рас сматривалось как набор легких задач, которые необходимо решить, чтобы при ступить к более продвинутым проблемам вобласти искусственного интеллекта. Известная история гласит, что в 60-е годы один профессор из MIT предложил своему студенту задание на лето: тот должен был “подключить камеру к ком пьютеру и заставить компьютер описывать, что он увидел”1.
К сожалению, студент не справился. Задача “описания увиденного” вклю чает в себя восстановление геометрии пространства по набору снимков. В слу чае с неорганизованными коллекциями фотографий задачу принято называть Structure from Motion (SfM), и в этой области исследователи добились небы валых результатов: плотные трехмерные модели восстанавливаются по фото графиям, загруженным из интернета, без какой-либо информации о камерах [2, 3].
Однако развитие вычислительных мощностей позволило пойти еще даль ше, и стали появляться работы с подобной обработкой видео в реальном вре мени. Поток кадров обладает своей спецификой в сравнении с неорганизован ной коллекцией снимков: всегда одна и та же камера, гладкое движение и, как следствие, возможность достаточно точного предсказания положения камеры в пределах нескольких следующих кадров, но появились ограничения жесткого реального времени. Задача отслеживания положения камеры и восстановления окрестностей в режиме online в английскойлитературе носит название visual odometry (VO). Применения включают дополненную реальность [4], навигацию беспилотных летательных аппаратов [5] и наземных транспортных средств [6]. На последние нацелена и данная работа.
В рамках системы помощи водителю ADAS (Advanced Driver Assistance
1 В оригинале “spend the summer linking a camera to a computer and getting the computer to describe what it saw”. История взята из книги [1].
System) многие современные автомобили оснащаются набором датчиков, позво ляющих анализировать ситуацию на дороге и состояние водителя. Этот набор включает ультразвуковые датчики дляпомощи при парковке, радары и лида ры (LIDAR, Light Identification and Ranging) для обнаружения препятствий на дороге и, наконец, камеры. Использование информации, полученнной с этих камер, длярешения задачи VO, позволит определять расстояния до объектов альтернативными способами и избавит нас от необходимости установки осталь ных, более дорогостоящих датчиков.
2. Задачи
Целью данной работы является создание системы VO для работы с ши рокоугольной камерой. При создании подобной системы могут использоваться различные методы, и авторами предлагается сконцентрировать внимание на прямом подходе, при котором потребуется решить следующие подзадачи:
● Обзор существующих подходов и реализаций, выявление полезных идей.
● Рассмотрение различных моделей камеры, выбор наиболее подходящей.
● Реализация какого-либо подхода к инициализации системы.
● Реализация Direct Image Alignment для отслеживания положения посту пающих кадров.
● Получение глубин точек методом поиска вдоль эпиполярной кривой, оцен ка дисперсии результата.
● Совместная оптимизация поз и глубин на нескольких ключевых кадрах для повышения точности построенной модели.
Предполагается, что в дальнейшем проект получит развитие как система, рабо тающая с группами камер, однако подобное развитие выходиит за рамки пред ставленной курсовой работы.
3. Обзор существующих решений
Современные методы решения задач VO во многом берут своё начало в работе PTAM (Parallel Tracking and Mapping)[4], авторы которой решили опре делять положения только у точек,находящихся на подмножестве всех кадров (такие кадры стали называться ключевыми). Благодаря разряженности мно жества ключевых кадров появилась возможность использовать метод, ранее неприменимый к задачам реального времени — совместную оптимизацию (в оригинале bundle adjustment, BA).
BA предполагает минимизацию некоторой целевой функции для повыше ния консистентности модели. При этом как в упомянутой выше системе PTAM, так и в других появившихся вскоре успешных работах, основывающихся на сходных идеях (например, ORB-SLAM[7]2), природа оптимизируемой функции остается геометрической: на ключевых кадрах выбираются ключевые точки, и высказываются предположения о соответствиях этих точек на разных кадрах, после чего позиции кадров и точек в пространстве приводятся в соответствие с этими предположениями. Такие подходы вдальнейшем стали называться непря мыми (indirect), так как информация об изображении заменяется на информа цию о выбранных ключевых точках на этапе препроцессинга, и дальнейшая работа ведется только с ними.
Следующей идеей, позволившей уплотнить получаемое множество точек, стало изменение природы оптимизируемой функции. В прямых (direct) подхо дах не высказывается никакихпредположений о соответствиях точек на разных кадрах. Положения пикселей переносятся с одного кадра на другой, после чего накладывается требование фотометрической консистентности — интенсивность исходного пикселя должна сопадать с интенсивностью перенесенного, так что
2 ORB — аббревиатура-название алгоритма поиска и соотнесения ключевых точек [8]; SLAM, или Simultaneous Localization and Mapping — устоявшееся название расширения алгоритмов VOфункциональ ностью замыкания циклов, корректировки полученной модели на основании повторного появления в месте, посещенном ранее.
различия в них и составляют основу оптимизируемой функции. Эта идея была успешно использована в работах LSD-SLAM (Large Scale Direct SLAM)[9, 10] и DSO (Direct Sparse Odometry)[11].
При переходе к широкоугольным камерам непрямые подходы теряют в привлекательности — алгоритмы опредедения и соотнесения ключевых точек
[8] начинают работать хуже из-за искажений, вызванных fisheye-линзами. Пря мые подходы, наоборот, переносятся на этот случай довольно прямолинейно. У алгоритмов LSD-SLAM и DSO уже появились соответствующие аналоги — [12] и [13].
Несмотря на описанные выше проблемы сочетания indirect подходов с fisheye-объективами, пока только эти подходы были расширены на случай си стемы нескольких широкоугольных камер. У PTAM появился аналог MCPTAM (Multi-Camera PTAM)[14], у ORB-SLAM — MultiCol-SLAM[15]. Представленная работа может послужить основой для заполнения образовавшейся ниши.
Модель камеры
Ключевая особенность данной работы — использование широкоугольных камер. Угол обзора больше 180∘ позволяет охватить большую часть сцены, и совершенно необходим в случае состандартным расположением камер в ADAS системах. На рис. 1 видно, что не-широкоугольная камера, смонтированная в стандартном положении, не захватывает ценных деталей сцены.
Рис. 1. Оригинальное изображение и как оно же выглядело бы длястандартной камеры с различным горизонтальным углом обзора 𝛼
(а) Оригинал (б ) 𝛼 = 88 ∘ (в) 𝛼 = 53 ∘
Модель камеры должна предоставлять отображение проекции 𝜋 : R3 → Ω множества точек пространства на область изображения Ω ⊂ R2 и отображе ние «обратной» проекции 𝜋−1.Геометрическим местом точек пространства, ко торые 𝜋 отображает в определенную точку на изображении, является луч. В большинстве случаев достаточно использовать т. н. центрально-проективные модели, в которых все такие лучи имеют общее начало, называемое центром камеры. Тогда удобно записать «обратную» проекцию в формате 𝜋−1 : Ω → 𝑆2, как отображение, сопоставляющее точке на изображении пересечение луча, ей соответствующего, и единичной сферы 𝑆2. В дальнейшем будет использоваться именно эта нотация.
Существует несколько распространенных центральных моделей широко угольных камер. В рамках данной работы использовалась довольно общая по линомиальная модель, введенная в [16]. Эта модель использует предположение о симметричности оптической системы камеры относительно главной оптиче ской оси. В таком случае расстояние от точки на изображении до центра зави сит только от вертикального наклона луча, который проецируется в эту точку. Формально говоря, в этой модели 𝜋−1 записывается как
‖‖
𝜋−1 (p) = x
x = (p˜ , 𝑓 (‖p˜‖))︁
x
(1)
p˜ = � (p − c)
𝑓 (𝜌) = 𝑎0 + 𝑎2𝜌2 + 𝑎3𝜌3 + 𝑎4𝜌4 + · · ·
Таким образом, точка p на изображении сначала преобразуется к норма
(‖ ‖)
лизованным координатам ˜ с центром c, после чего переносится вдоль оси 𝑂�
(︁ ( ))︁
на 𝑓 p˜ , и луч, который прoецируется камерой в точку p, задается направ лением p˜ , 𝑓 ‖p˜‖ . На практике функция 𝑓 задается конечным числом ко эффициентов3 𝑎0, 𝑎2, 𝑎3, . . . , 𝑎𝑁 разложения в ряд Маклорена.
3 𝑎1 = 0, т. к. требуется 𝑓 ′ (0) = 0, чтобы 𝜋−1 было гладким в центре.
�
�
�
⃦
Рис. 2. Проецирование точки x на изображение. В первом случае 𝜋1 (x) = 𝑔1 (𝜃), во втором
𝜋2 (x) = 𝑔2 (�˜). (�, �) — координаты на изображении.
( )
У предложенной модели есть один недостаток — для того, чтобы спроеци ровать точку, требуется по значению 𝑓 ‖˜‖ восстановить ‖˜‖, то есть решить уравнение степени 𝑁 . Более того, в дальнейшем системе потребуются произ водные от корня этого уравнения по коэффициентам. Всё это слишком ресурсо затратно для применения в задачах реального времени. Поэтому имеет смысл последовать за [14] и отказаться от явного вычисления обратной функции, заме нив отображение 𝜋 близкой моделью. Авторами для этой цели были рассмотре ны два варианта (см. рис. 2), один из которых —модель Канналы-Брандта[17]. В рамках этой модели 𝜋 записывается так:
1 1
p˜ = 𝜋 (x) = 𝑔 (𝜃) xp
⃦xp⃦
‖x‖
�˜ = [︂ x ]︂
(2)
𝜃 = arccos (�˜)
𝑔1 (𝜃) = 𝑐0 + 𝑐1𝜃 + · · · + 𝑐𝑀 𝜃𝑀
Вторая использованная модель схожа с описанной выше, но полиномиальной полагается зависимость расстояния до центра на изображении от �˜:
x�
p˜ = 𝜋2 (x) = 𝑔2 (�˜)
x�
(3)
𝑔2 (�˜) = 𝑏0 + 𝑏1�˜ + · · · + 𝑏𝑀 �˜𝑀
Таблица 1. Средние ошибки репроекции для двух рассматриваемых методов
где x� означает проецирование x на 𝑂��.
4. Описание компонентов системы
4.1. Отображение проекции
По описанным выше причинам, отображение, обратное к 𝜋−1 не может быть вычислено явно, поэтому авторы рассматривали функции 𝜋1 и 𝜋2 в ка честве способов приближения отображенияпроекции. Для обеих функций 𝑔� и для различных степеней 𝑀 с помощью 𝜋−1 находилось по 2000 пар (аргумент, значение), после чего коэффициенты 𝑏� и 𝑐� оценивались линейной (по коэф фициентам) регрессией. Далее выбирались 𝑁0 = 104 случайных точек �� на изображении, и для 𝜋1,2 вычислялась среднеквадратичная ошибка репроекции
𝑒 =
(4)
Получившаяся зависимость 𝑒� от 𝑀 приведена в таблице 1. Видно, что пер
вый метод превосходит второй. Более того, учитывая, что сами изображения даны нам с гранулярностью в 1 пиксель, ошибка репроекции менее 0.5 может считаться приемлемой, так что первый методпригоден к использованию.
4.2. Инициализация
В обычном режиме визуальная одометрия работает, опираясь на данные, полученные ранее. Например, чтобы оценить положение нового кадра, в данной работе используется информация оточках с предыдущего. Для самых первых
кадров ничего подобного не предоставлено, и поэтому их обработка должна производиться отдельно.
Классический для компьютерного зрения подход к определению отности тельного положения двух кадров — использование ключевых точек, и пред ставленная инициализация, в противоположность остальной системе, является примером непрямого метода. Причина заключается в том, что нам хотелось как можно раньше получить работающие оценки для расположения точек и камер, которые можно было бы сравнивать с результатами работы основного алгоритма.
В данной реализации этот подход работает в два этапа: глобальная оцен ка движения между кадрами и глубин ключевых точек, а затем интерполяция глубин контрастных точек. Рассмотрим подробнее, что эти этапы из себя пред ставляют.
Глобальная оценка позы
Сначала на двух первых ключевых кадрах выделяются и сопоставляются ключевые точки ORB. Из-за наличия соответвствий-аутлаеров, то есть равно мерно распределенных ошибок, требуется метод отделения верно полученных пар от неверных. Для этого применяется широко распростараненный вероят ностный метод RANSAC (Random Sample Consensus)[18], выбирающий наилуч шуюминимальюную модель. Оказывается, с точностью до неоднозначности в 40 вариантов, можно определить относительное движение камеры между двумя снимками по пяти соответствиям точек на них([19], глава 6). Построенная та ким образом оценка движения и называется минимальной моделью. Для модели проверяется, сколько всего соответствий с ней согласуются, то есть у скольки геометрическая ошибка репроекции не превосходит определенного значения.
Ошибка вычисляется по формулам
2 (5)
𝑒�� (�1, �2, 𝜉) = min (︂𝑅 (�1, �2, 𝜉) , 𝑅 (︁�2, �1, 𝜉−1)︁)︂
𝑅 (�1, �2, 𝜉) = �1 − 𝜋
(︂��𝑒 (� ,𝜉)
(︁𝜋−1 (�1)
)︁)︂
2 2
репроекции
(�1,�2)∈𝑀
𝑅 (�1, �2, 𝜉) + 𝑅 (︁�2, �1, 𝜉−1)︁ (6)
где �1 и �2 — точки соответствия на первом и на втором кадрах, 𝜉 — отображение координат первого кадра на координаты второго, ��𝑒2 — функция проекции на плоскость, проходящую через центрыкамеры и луч 𝜋−1 (�2) (т. н. эпиполярная плоскость). Поскольку для �1 и �2 системе неизвестны глубины точек (расстоя ния до центра камеры), они считаются соответствующими модели, еслицентры камеры и два луча в направлениях �1 и �2 лежат на общей эпиполярной плос кости. Описанная ошибка репроекции и есть количественная мера близости к этому факту.
Полученное с помощью RANSAC движение уже достаточно близко к дей ствительности, чтобы определить, какие соответствия являются инлаерами, но ему не хватает точности для дальнейшегоиспользования. Для решения этой проблемы в данной работе производится усреднение позы по инлаерам. Кон кретнее, алгоритмом Левенберга-Марквардта минимизируется общая ошибка
где 𝑀 — множество соответствий-инлаеров. Для минимизации используется ceres-solver[20].
Интерполяция
До завершения инициализации системы теперь остается еще один шаг. Представленный выше способ оценки движения между кадрами выдает набор ключевых точек и глубины для них. Ноостальная часть системы опирается на положения контрастных точек — тех, в которых градиент изображения доста
точно велик. Использование глубин именно в таких точках критично для пря мых подходов: в противном случае основанные на дифференцировании методы оптимизации просто не будут работать. Былорешено воспользоваться интерпо ляцией на нерегулярной сетке, для которой была использована триангуляция Делоне (см. рис. 3).
При этом триангуляция производится по набору ключевых точек, и оценка на глубину в контрастной (проколотой на рисунке) точке считается линейно по трем ключевым точкам, в треугольник из которых попалаэта контрастная точка. Можно заметить искривление ребер сетки — оно вызвано тем, что рёбра являются прямыми в трехмерном пространстве, а не на изображении.
Рис. 3. Пример успешной инициализации представленной системы
4.3. Direct image alignment
Теперь, когда у системы откуда-либо появилась приблизительная карта глубин в контрастных точках кадра, появляется возможность давать точные оценки на последующие движения камеры.Техника, которой было предложено для этого воспользоваться, основывается на статье [21].
Прежде, чем формулировать задачу нелинейной оптимизации, сделаем важные замечания. Во-первых, чтобы direct-метод работал, требуется учесть автоматическую регулировку выдержки и/или размера диафрагмы на камере во время съемки. В данной работе, вслед за [11], эти эффекты математиче ски моделируются с помощью аффинного преобразования яркости. Это значит, что воптимизационной задаче у каждого кадра появляются дополнительные параметры 𝑎 и 𝑏, и «эталонная» яркость пикселя � на кадре 𝐼 становится равной e−𝑎𝐼 (�) − 𝑏. Экспонента — тоже предложение из [11], и используется для удобства параметризации. Во-вторых, для представления изображения как дифференцируемой функции 𝐼 : Ω → R, требуется какая-либо интерполяция. В данной работе используется бикубическая интерполяция [22], встроенная в ceres-solver[20].
Итак, при поиске движения, произошедшего между кадрами 𝐼1 и 𝐼2, мини мизируется фотометрическая ошибка репроекции
∑︁ 𝜌 (︂𝐼1 (�) − e𝑎 (︁𝐼2 (�′) + 𝑏)︁)︂
�∈𝑃
�′ = 𝜋 (︂𝜉 · (︁𝑑� * 𝜋−1 (�))︁)︂
(7)
где 𝐼1 — базовый кадр, 𝑃 — множество контрастных точек � с глубинами 𝑑� на нем; 𝐼2 — кадр, положение которого определяется, �′ — точка �, перенесен ная с 𝐼1 на 𝐼2. 𝜌 — функция потерь. Из-за того, что некоторые точки 𝐼1 при репроецировании на 𝐼2 попадут на новые объекты (из-за эффекта параллакса, или из-за движения в кадре), приходится учитывать наличие аутлаеров. Для уменьшения их влияния на систему и используется функция потерь.
(8)
Для того, чтобы корректно определять движения при существенном откло нении начальных данных от истины, было предложено воспользоваться идеей
(а) Точные глубины (б ) Глубины с 5% шумом Рис. 4. Отслеживание положений 40 кадров относительно общего базового
из [21]. Все изображения изначально подаются алгоритму в низком разрешении, и, после очередного этапа минимизации, разрешение повышается.
Для тестирования данного алгоритма независимо от остальной системы использовался датасет-симуляция движения автомобиля с широкоугольной ка мерой по городу Multi-FoV[23]. Посколькудатасет синтетический, у авторов была возможность предоставить точные глубины в каждом пикселе. Для обра ботки выбирались базовые кадры на моменте поворота, и в контрастных точках использовались истинные глубины с 5% шумом. Одна из оценённых траекторий представлена на рис. 4. Видно несколько мест, где алгоритм сбивался с траек тории, но возвращался на следующем жекадре.
4.4. Отслеживание точек вдоль эпиполярной кривой
С помощью метода, описанного выше, оценивается взаимное расположе ние между более старым кадром и самым новым, поступившим в cистему. Из полученной оценки определяется геометрическое место точек на новом кадре, куда могла переместиться точка � со старого — т. н. эпиполярная кривая. Сме щение точки вдоль этой кривой называется диспаритетом, из которого можно определить глубину точки.
Для определения диспаритета требуется найти на эпиполярной кривой
(а) Точка на старом кадре (б ) Эпиполярная кривая на новом Рис. 5. Отслеживание точки вдоль эпиполярной кривой
максимально похожую точку. Для этого алгоритм перебирает точки �′ с ша гом в 1 пиксель и выбирает ту, которая минимизирует ошибку репроекции:
�∈𝑁�
�𝑏𝑒�� = arg min ∑︁ 𝜌 (︁𝐼1 (� + �) − 𝐼2 (�′ + R�))︁ (9)
Где 𝑁� — паттерн разреженности. Он определяет набор из нескольких то чек в окрестности �, отслеживающихся вдоль кривой. На новом кадре паттерн поворачивается и масштабируется, в (9) это отражено умножением на R.
На рис. 5 показан пример поиска вдоль эпиполярной кривой. Цвет коди рует значение ошибки репроекции (красный для меньших значений), чёрная засечка — выбранный минимум.
Оценка погрешности
Для отсеивания некачественно определённых глубин точек требуется ме тод оценки погрешности результата отслеживания вдоль эпиполярной кривой. Было решено воспользоваться способом, представленным в статье [9]. Этот ме тод предполагает приблизительное выражение искомого диспаритета через па раметры с известной ошибкой, и использование распространения неопределен ности для выражения ошибки диспаритета. Авторами [9] предлагается учиты вать два фактора — ошибку в размещении эпиполярной кривой 𝜎� и ошибку в интенсивности пикселей 𝜎�. Формулы длярасчёта ошибок диспаритета:
𝜎𝜆,�
= ‖ 𝑔‖ 𝜎�
⟨𝑔, �⟩
𝜎𝜆,�
= 𝜎�
⟨𝑔, �⟩
(10)
Где 𝑔 — градиент нового изображения в найденной точке, � — нормированный вектор касательной к эпиполярной кривой. Общая ошибка вычисляется как
𝜎2 = 𝜎2 +𝜎2
. Здесь 𝜎� — ожидаемая ошибка в положении эпиполярной кривой,
𝜆 𝜆,� 𝜆,�
а 𝜎� — ожидаемая ошибка в интенсивности. Обе подбираются как эмпирические константы. Однако, при разумных значениях 𝜎� и 𝜎� оказывается, что вклад 𝜎𝜆,� несущественнен, поэтому в данной работеиспользовалась только компонента
𝜎𝜆,�.
Субпиксельное отслеживание
Линейная природа поиска не позволяет определить новое положение точ ки с погрешностью менее ±0.5 пикселя. Это ограничение можно ослабить, если после выбора минимума дополнительноуточнить его c помощью какого-либо ал горитма оптимизации одномерной функции. В данной работе для этого исполь зовался алгоритм Гаусса-Ньютона. При этом изображение, опять же, должно быть проинтерполировано. Сравнение работы алгоритма со включённым суб
Рис. 6. Ошибки в диспаритетах (верх) и глубинах (низ) на участке датасета Multi-FoV в зависимости от предсказанных ошибок в диспаритетах
пиксельным отслеживанием и без него представлено на рис. 6.
8
8
На графиках по оси абсцисс отложены предсказанные ошибки в диспарите те (𝜎��𝑒𝑑�𝑐�). Для каждого значения 𝜎��𝑒𝑑�𝑐� рассматривалисьточки с предсказан ной ошибкой из [𝜎��𝑒𝑑�𝑐� − 1 , 𝜎��𝑒𝑑�𝑐� + 1]. Для выбранных точек определялось
медианное значение реальной ошибки, которое и попадало на график.
Предлагается обратить внимание на следующие аспекты графиков:
1. Увеличение ошибок диспаритета при увеличении предсказанной ошибки. Это показывает осмысленность выбранной модели оценки ошибок.
2. Без уточнения ошибка в диспаритете не опускается ниже 0.5.
3. Субпиксельное уточнение даёт существенный выигрыш для оценок реаль ных глубин. При небольшой предсказанной ошибке глубины с субпиксель ным отслеживанием точнее в 2 раза.
4.5. Совместная оптимизация
Авторы системы DSO сумели повысить точность своего алгоритма, приме нив метод совместной оптимизации, сформулировав его для прямого подхода. В представленной работе было решено последовать их примеру.
Когда у системы есть набор из ключевых кадров и выбраны особенно хо рошие оценки глубин на них, станновится возможным дальнейшее уточнение положений и глубин с помощью минимизациипрямой функции ошибок:
(11)
где 𝐹 — текущее множество ключевых кадров, 𝑃 (𝐼1) — множество контрастных точек на кадре 𝐼1, �𝑏�(�) ⊆ 𝐹 ∖ {𝐼1} — множество кадров, из которых видна точка �, 𝑁� — описанный вышепаттерн разреженности.
Для того, чтобы время работы совместной оптимизации не росло со вре менем, требуется жёстко ограничить размер множества ключевых кадров 𝐹 сверху. Предполагается, что в 𝐹 попадаютнедавние кадры, каждый из кото рых, однако, должен охватывать существенно отличную от остальных часть сцены. Алгоритм отбора ключевых кадров ещё предстоит реализовать, сейчас выбираетсякаждый �-й кадр (� = 18).
5. Программная реализация
Все описанные выше компоненты были реализованы и объединены в си стему визуальной одометрии. На данный момент система обрабатывает видео не в реальном времени, так как целью работы было возможно скорейшее дока зательство работоспособности используемых идей для одометрии.
Разработка ведётся на языке C++. Выбор языка обусловлен, прежде всего, наличием ряда удобных математических open-source библиотек. Конкретнее, в данной работе используются:
● ceres-solver[20] — библиотека для удобного построения и автоматического решения затач нелинейной оптимизации. Её возможности включают раз личные алгоритмы минимизации, автоматическое дифференцирование, работу с разреженными матрицами и пр.
В связи с выбором C++ в проекте также используются:
● CMake[26] — кроссплатформенная система сборки.
● OpenCV[27] — библиотека для работы с изображениями. OpenCV содер жит реализацию определения ключевых точек и вычисления дескрипто ров ORB, которые используются в фазе инициализаци представленной системы.
Основные элементы алгоритма визуальной одометрии представлены на рис. 7.
Главный класс системы называется DsoSystem. Он связывает её компонен ты и реализует алгоритм с рис. 7. Все настройки системы представлены в виде иерархической структуры (класс Settings), которая передаётся в DsoSsystem, и части которой распределяются по компонентам системы. При этом
● За инициализацию системы отвечает класс DsoInitializer
● За отслеживание положений новых кадров — FrameTracker
● За отслеживание точек — ImmaturePoint
● За совместную оптимизацию — BundleAdjuster
Логика, связанная с выводом, отделена от логики системы. Для этого ис пользовался паттерн "Наблюдатель". У части компонентов системы (DsoSystem, FrameTracker, DsoInitializer) созданы интерфейсы наблюдателей, которые позволяют, среди прочего
Отслеживание точек с ключевых кадров на новом
Определение положения кадра
Получение нового кадра
Добавить в структуру ключевых кадров
Совместная оптимизация ключевых кадров
Отбросить старые ключевые кадры
Рис. 7. Структура алгоритма одометрии
● Сохранять определившуюся траекторию в файл (в дальнейшем она может быть отрисована с помощью скрипта на Python)
● Сохранять полученное облако точек
● Выравнивать правильные траектории и облака точек для сравнения с определившимися
● Показывать отладочный вывод — глубины точек на текущем кадре, пред полагаемые ошибки в них и пр.
Рис. 8. Отслеженная траектория в сравнении с ground truth
6. Результаты
Была построена система визуальной одометрии для широкоугольной каме ры. При этом были решены следующие задачи:
● Проведен обзор существующих решений задачи VO.
● Выбрана и реализована подходящая модель камеры.
● Реализован подход к инициализации системы.
● Реализован подход Direct Image Alignment для отслеживания положения поступающих кадров.
● Реализовано отслеживание точек вдоль эпиполярной кривой.
● Реализован прямой подход для совместной оптимизации нескольких клю чевых кадров.
(а) Полученное облако точек
(б ) ground truth
Рис. 9. Полученное облако точек в сравении с ground truth
Список литературы
1. Szeliski R. Computer Vision: Algorithms and Applications. –– Springer, 2010.
2. Frahm J. et al. Building rome on a cloudless day // Computer Vision – ECCV 2010. –– Springer, 2010. –– P. 368–381.
3. Reconstructing the world* in six days *(as captured by the yahoo 100 million image dataset) / J. Heinly, J. Schonberger, E. Dunn, JM. Frahm //CVPR. –– 2015.
4. Klein G., Murray D. Parallel tracking and mapping for small ar workspaces // 2007 6th IEEE and ACM International Symposium on Mixed andAugmented Reality. –– IEEE, 2007.
5. Engel J., Sturm J., Cremers D. Camera-based navigation of a low-cost quadro- copter // 2012 IEEE/RSJ International Conference on IntelligentRobots and System. –– IEEE, 2012.
6. Maimone M., Cheng Y., Matthies L. Two years of visual odometry on the mars exploration rovers // Journal of Field Robotics. –– 2007. –– Vol. 24, no. 3.
7. Mur-Artal R., Montiel J., Tardos J. Orb-slam: A versatile and accurate monocular slam system // Transactions on Robotics. –– 2015. –– Vol. 31, no. 5. –– P. 1147–1163.
8. Orb: An efficient alternative to sift or surf / E. Rublee, V. Rabaud, K. Kono- lige, G. Bradski // European Conference on Computer Vision. –– 2011. –– P. 2564–2571.
9. Engel J., Sturm J., Cremers D. Semi-dense visual odometry for a monocular camera // Proceedings of the IEEE international conference on computer vision. –– IEEE, 2013. –– P. 1449–1456.
10. Engel J., Schops T., Cremers D. Lsd-slam: Large-scale direct monocu- lar slam // European Conference on Computer Vision. –– Springer, 2014. –– P. 834–849.
11. Engel J., Koltun V., Cremers D. Direct sparse odometry // IEEE transac-
tions on pattern analysis and machine intelligence. –– 2018. –– Vol. 40, no. 3. –– P. 611–625.
18. Fischler M. A., Bolles R. C. Random sample consensus: A paradigm for model fitting with applications to image analysis and automated cartography // Communications of ACM. –– 1981. –– jun. –– Vol. 24, no. 6. –– P. 381–395.
19. Stewenius H. Gro¨bner Basis Methods for Minimal Problems in Computer Vision : Ph. D. thesis / H. Stewenius ; Lund University. –– Centre for Mathe- matical Sciences, Lund University, 2005. –– P. 183.
14. Harmat A., Trentini M., Sharf I. Multi-camera tracking and mapping for un- manned aerial vehicles in unstructured environments // Journal ofIntelligent and Robotic Systems. –– 2015. –– Vol. 78, no. 2. –– P. 291–317.
15. Urban S., Hinz S. Multicol-slam - a modular real-time multi-camera slam system. –– 1610.07336.
16. Scaramuzza D., Martinelli A., Siegwart R. A flexible technique for accurate omnidirectional camera calibration and structure from motion // FourthIEEE International Conference on Computer Vision Systems (ICVS’06). –– 2006. –– P. 45.
12. Caruso D., Engel J., Cremers D. Large-scale direct slam for omnidirectional cameras // IROS. –– 2015.
17. Kannala J., Brandt S. S. A generic camera model and calibration method for conventional, wide-angle, and fish-eye lenses // IEEE transactionson pattern analysis and machine intelligence. –– 2006. –– Vol. 28, no. 8. –– P. 1335–1340.
13. Omnidirectional dso: Direct sparse odometry with fisheye cameras / H. Mat- suki, L. von Stumberg, V. Usenko et al. // IEEE Robotics and Automation Letters and Int. Conference on Intelligent Robots and Systems (IROS). –– IEEE, 2018.
20. Agarwal S., Mierle K. et al. Ceres solver. –– Access mode: http:// ceres-solver.org (online; accessed: 2019-05-16).
21. Kerl C., Sturm J., Cremers D. Robust odometry estimation for rgb-d cam-
25
eras // Robotics and Automation (ICRA), 2013 IEEE International Confer- ence on / IEEE. –– 2013. –– P. 3748–3754.
22. Keys R. Cubic convolution interpolation for digital image processing // IEEE transactions on acoustics, speech, and signal processing. –– 1981. –– Vol. 29, no. 6. –– P. 1153–1160.
23. Benefit of large field-of-view cameras for visual odometry / Zichao Zhang, Henri Rebecq, Christian Forster, Davide Scaramuzza // Robotics and Au- tomation (ICRA), 2016 IEEE International Conference on / IEEE. –– 2016. –– P. 801–808.
24. Eigen — c++ template library for linear algebra. –– Access mode: http:
//eigen.tuxfamily.org/(online; accessed: 2019-05-16).
25. Sophus — c++ implementation of lie groups using eigen. –– Access mode:
http://eigen.tuxfamily.org/ (online; accessed: 2019-05-16).
26. Cmake — cross-platform build system. –– Access mode: https://cmake.org
(online; accessed: 2019-05-16).
27. Opencv — open source computer vision library. –– Access mode: https:// opencv.org (online; accessed: 2019-05-16).
28. Gflags — c++ library that implements commandline flags processing. –– Ac- cess mode: https://github.com/gflags/gflags (online; accessed: 2019-05- 16).
29. Glog — c++ implementation of the google logging module. –– Access mode:
https://github.com/google/glog(online; accessed: 2019-05-16).