Курсовая работа на тему: "Визуальная одометрия для широкоугольных камер: прямой подход"

У нас на сайте представлено огромное количество информации, которая сможет помочь Вам в написании необходимой учебной работы. 

Но если вдруг:

Вам нужна качественная учебная работа (контрольная, реферат, курсовая, дипломная, отчет по практике, перевод, эссе, РГР, ВКР, диссертация, шпоры...) с проверкой на плагиат (с высоким % оригинальности) выполненная в самые короткие сроки, с гарантией и бесплатными доработками до самой сдачи/защиты - ОБРАЩАЙТЕСЬ!

Курсовая работа на тему: "Визуальная одометрия для широкоугольных камер: прямой подход"

 

 

Оглавление

 

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 = ( , 𝑓 ())︁ 

 

x

 

(1)

= (p c)

𝑓 (𝜌) = 𝑎0 + 𝑎2𝜌2 + 𝑎3𝜌3 + 𝑎4𝜌4 + · · ·

Таким  образом, точка p на изображении сначала преобразуется к норма­

(‖  ‖)

 

лизованным координатам ˜ с центром c, после чего переносится вдоль оси 𝑂�

(︁            (       ))︁

 

на 𝑓    p˜   , и луч, который прoецируется камерой в точку p, задается направ­ лением    , 𝑓  ‖‖     . На практике функция 𝑓 задается конечным числом ко­ эффициентов3 𝑎0, 𝑎2, 𝑎3, . . . , 𝑎𝑁 разложения в ряд Маклорена.

3 𝑎1 = 0, т. к. требуется 𝑓 (0) = 0, чтобы 𝜋1 было гладким в центре.

 

 

 

 

 

 

 

 

 

 

 

 

            ⃦

 

Рис. 2. Проецирование точки x на изображение. В первом случае   𝜋1 (x)   = 𝑔1 (𝜃), во втором

𝜋2 (x) = 𝑔2 (˜). (�, �) — координаты на изображении.

(       )

 

У предложенной модели есть один недостаток — для того, чтобы спроеци­ ровать точку, требуется по значению 𝑓  ‖˜‖   восстановить ˜, то есть решить уравнение степени 𝑁 . Более того, в дальнейшем системе потребуются произ­ водные от корня этого уравнения по коэффициентам. Всё это слишком ресурсо­ затратно для применения в задачах реального времени. Поэтому имеет смысл последовать за [14] и отказаться от явного вычисления обратной функции, заме­ нив отображение 𝜋 близкой моделью. Авторами для этой цели были рассмотре­ ны два варианта (см. рис. 2), один из которых —модель Канналы-Брандта[17]. В рамках этой модели 𝜋 записывается так:

1                1

 

= 𝜋  (x) = 𝑔  (𝜃)      xp

xp

x

 

˜ = [︂  ]︂

 

(2)

𝜃 = arccos (˜)

𝑔1 (𝜃) = 𝑐0 + 𝑐1𝜃 + · · · + 𝑐𝑀 𝜃𝑀

Вторая использованная модель схожа с описанной выше, но полиномиальной полагается зависимость расстояния до центра на изображении от ˜:

x

= 𝜋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.    Программная реализация

 

Все описанные выше компоненты были реализованы и объединены в си­ стему визуальной одометрии. На данный момент система обрабатывает видео не в реальном времени, так как целью работы было возможно скорейшее дока­ зательство работоспособности используемых идей для одометрии.

 

5.1.    Используемые технологии

 

    Eigen[24] — Библиотека структур и алгоритмов линейной алгебры.

    Sophus[25] — Реализация геометрических групп Ли (𝑆𝑂(3), 𝑆𝐸(3)).

Разработка ведётся на языке C++. Выбор языка обусловлен, прежде всего, наличием ряда удобных математических open-source библиотек. Конкретнее, в данной работе используются:

    ceres-solver[20] — библиотека для удобного построения и автоматического решения затач нелинейной оптимизации. Её возможности включают раз­ личные алгоритмы минимизации, автоматическое дифференцирование, работу с разреженными матрицами и пр.

 

В связи с выбором C++ в проекте также используются:

 

    CMake[26] — кроссплатформенная система сборки.

    OpenCV[27] — библиотека для работы с изображениями. OpenCV содер­ жит реализацию определения ключевых точек и вычисления дескрипто­ ров ORB, которые используются в фазе инициализаци представленной системы.

    GFlags[28] — удобный парсинг флагов коммандной строки.

    GLog[29] — библиотека для логирования.

 

5.2.    Архитектура системы

 

Основные элементы алгоритма визуальной одометрии представлены на рис. 7.

Главный класс системы называется DsoSystem. Он связывает её компонен­ ты и реализует алгоритм с рис. 7. Все настройки системы представлены в виде иерархической структуры (класс Settings), которая передаётся в DsoSsystem, и части которой распределяются по компонентам системы. При этом

    За инициализацию системы отвечает класс DsoInitializer

    За отслеживание положений новых кадров — FrameTracker

    За отслеживание точек — ImmaturePoint

    За совместную оптимизацию — BundleAdjuster

Логика, связанная с выводом, отделена от логики системы. Для этого ис­ пользовался паттерн "Наблюдатель". У части компонентов системы (DsoSystem, FrameTracker, DsoInitializer) созданы интерфейсы наблюдателей, которые позволяют, среди прочего

Отслеживание точек с ключевых кадров на новом

 

Определение положения кадра

Получение нового кадра

Добавить в структуру ключевых кадров

Совместная оптимизация ключевых кадров

 

 

Отбросить старые ключевые кадры

Рис. 7. Структура алгоритма одометрии

 

    Сохранять определившуюся траекторию в файл (в дальнейшем она может быть отрисована с помощью скрипта на Python)

    Сохранять полученное облако точек

    Выравнивать правильные траектории и облака точек для сравнения с определившимися

    Показывать отладочный вывод — глубины точек на текущем кадре, пред­ полагаемые ошибки в них и пр.

 

Рис. 8. Отслеженная траектория в сравнении с ground truth

 

6.    Результаты

 

Была построена система визуальной одометрии для широкоугольной каме­ ры. При этом были решены следующие задачи:

    Проведен обзор существующих решений задачи VO.

    Выбрана и реализована подходящая модель камеры.

    Реализован подход к инициализации системы.

    Реализован подход Direct Image Alignment для отслеживания положения поступающих кадров.

    Реализовано отслеживание точек вдоль эпиполярной кривой.

    Реализован прямой подход для совместной оптимизации нескольких клю­ чевых кадров.

Система обработала синтетический датасет Multi-FoV[23] целиком. Срав­ нение полученной траектории с ground truth представлено на рис. 8.

Кроме того, на рис. 9 представлено сравнение полученного облака точек с точным облаком при запуске системы на участке датасета с двумя поворотами.

 

 

(а) Полученное облако точек

 

(б ) 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).