j : k q ? l g h i h y k g b l ? e v a : i b k d · 2018. 7. 12. · Получение...

55
Министерство образования и науки Российской Федерации Федеральное государственное бюджетное образовательное учреждение высшего образования «Московский государственный технический университет имени Н.Э. Баумана (национальный исследовательский университет)» (МГТУ им. Н.Э. Баумана) ФАКУЛЬТЕТ ____Робототехники и комплексной автоматизации______________________ КАФЕДРА _______Системы автоматизированного проектирования____________________ РАСЧЕТНО-ПОЯСНИТЕЛЬНАЯ ЗАПИСКА К ВЫПУСКНОЙ КВАЛИФИКАЦИОННОЙ РАБОТЕ НА ТЕМУ: ___Разработка и реализация алгоритмов __________ ___безмаркерного трекинга ______________________ ______________________________________________ ______________________________________________ ______________________________________________ Студент ____РК6-82_____ _________________ ____Г.С. Зубова ___ (Группа) (Подпись, дата) (И.О.Фамилия) Руководитель ВКР _________________ __Т.М. Волосатова___ (Подпись, дата) (И.О.Фамилия) Нормоконтролер _________________ ____С.В. Грошев_____ (Подпись, дата) (И.О.Фамилия) 2018 г.

Upload: others

Post on 01-Sep-2020

4 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: J : K Q ? L G H I H Y K G B L ? E V A : I B K D · 2018. 7. 12. · Получение оценочного положения в пространстве на основе анализа

Министерство образования и науки Российской Федерации

Федеральное государственное бюджетное образовательное учреждение

высшего образования

«Московский государственный технический университет

имени Н.Э. Баумана

(национальный исследовательский университет)»

(МГТУ им. Н.Э. Баумана)

ФАКУЛЬТЕТ ____Робототехники и комплексной автоматизации______________________

КАФЕДРА _______Системы автоматизированного проектирования____________________

РАСЧЕТНО-ПОЯСНИТЕЛЬНАЯ ЗАПИСКА

К ВЫПУСКНОЙ КВАЛИФИКАЦИОННОЙ РАБОТЕ

НА ТЕМУ:

___Разработка и реализация алгоритмов __________

___безмаркерного трекинга ______________________

______________________________________________

______________________________________________

______________________________________________

Студент ____РК6-82_____ _________________ ____Г.С. Зубова ___ (Группа) (Подпись, дата) (И.О.Фамилия)

Руководитель ВКР _________________ __Т.М. Волосатова___ (Подпись, дата) (И.О.Фамилия)

Нормоконтролер _________________ ____С.В. Грошев_____ (Подпись, дата) (И.О.Фамилия)

2018 г.

Page 2: J : K Q ? L G H I H Y K G B L ? E V A : I B K D · 2018. 7. 12. · Получение оценочного положения в пространстве на основе анализа

6

АННОТАЦИЯ

Расчётно-пояснительная записка к выпускной квалификационной работе

«Разработка и реализация алгоритмов безмаркерного трекинга» содержит 56

стр., 7 гр. листов.

В работе проведен анализ алгоритмов безмаркерного трекинга и их приме-

нения в современных реалиях.

Рассмотрены существующие реализации SLAM. Сформулированы их пре-

имущества и недостатки в рамках решения задачи построения точной карты про-

странства. Представлена собственная доработка наиболее эффективного и про-

грессивного алгоритма. Описан процесс ориентирования алгоритма в простран-

стве и получения 3D координат точек карты. Разработаны методы модификации

карты, проведен анализ типов изображений, применение которых при построе-

нии карты наиболее эффективно. Разработана и реализована модификация алго-

ритма, повышающая точность и надежность работы SLAM.

Page 3: J : K Q ? L G H I H Y K G B L ? E V A : I B K D · 2018. 7. 12. · Получение оценочного положения в пространстве на основе анализа

7

СОДЕРЖАНИЕ АННОТАЦИЯ .................................................................................................................................................. 6

ВВЕДЕНИЕ ....................................................................................................................................................... 8

ЦЕЛИ И ЗАДАЧИ ............................................................................................................................................ 9

1. Аналитическая часть .............................................................................................................................. 10

1.1. Анализ метода одновременной локализации и построения карты( Simultaneous Localization

And Mapping (SLAM)) ................................................................................................................................... 10

1.1.1. Задача SLAM - frontend .............................................................................................................. 11

1.1.2. Задача SLAM - backend .............................................................................................................. 11

1.2. Виды SLAM ........................................................................................................................................ 11

1.3. Реализации SLAM .............................................................................................................................. 13

1.4. Метод DSO SLAM .............................................................................................................................. 16

1.4.1. Инициализация системы, реализующей работу алгоритма DSO-SLAM .............................. 17

1.4.2. Обнаружение ключевых точек .................................................................................................. 17

1.4.3. Исправление геометрических ошибок изображений .............................................................. 21

1.4.4. Определение положения кадра в пространстве. ...................................................................... 23

1.4.5. Представление данных в методе DSO_SLAM ......................................................................... 31

1.5. Повышение точности SLAM алгоритма. ......................................................................................... 32

1.5.1. Алгоритм замыкания петель ..................................................................................................... 32

1.6. Преобразования над облаками точек................................................................................................ 35

1.6.1. Трехмерный перенос точек карты ............................................................................................ 36

1.6.2. Трехмерное изменение масштаба точек карты ....................................................................... 36

1.6.3. Трехмерный сдвиг точек карты ................................................................................................ 37

1.6.4. Трехмерное вращение точек карты .......................................................................................... 38

1.7. Применение бинарных изображений в SLAM ................................................................................ 39

2. Практическая часть. ............................................................................................................................... 40

2.1. Сохранение Карты изучаемого пространства ................................................................................. 40

2.1.1. Хранение карты изучаемого пространства в системе ......................................................... 40

2.1.2. Сохранение карты в текстовый файл. .................................................................................. 41

2.1.3. Сохранение облака точек....................................................................................................... 43

2.2. Добавление алгоритма замыкания петель. ...................................................................................... 43

2.3. Добавление методов модификации карты ....................................................................................... 46

2.4. Работа с бинарными изображениями ............................................................................................... 51

ЗАКЛЮЧЕНИЕ .............................................................................................................................................. 56

СПИСОК ИСПОЛЬЗОВАННЫХ ИСТОЧНИКОВ ..................................................................................... 57

ПРИЛОЖЕНИЕ А .......................................................................................................................................... 59

Page 4: J : K Q ? L G H I H Y K G B L ? E V A : I B K D · 2018. 7. 12. · Получение оценочного положения в пространстве на основе анализа

8

ВВЕДЕНИЕ

Одной из важнейших задач компьютерного зрения является задача постро-

ения карты пространства, которая реализуется путём применения алгоритма од-

новременного позиционирования и построения карты местности (Simultaneous

Localization And Mapping – SLAM). Он выполняет глобальную оптимизацию по-

лучаемых с камеры данных. Минимизирует ошибку определения позиции ка-

меры и вычисления инверсной глубины ключевых точек.

Безмаркерный трекинг в последние годы становится всё более популярным

и исследуемым. В частности, он очень востребован в киноиндустрии. При съёмке

возникает необходимость в построении карты пространства. Маркерный трекинг

требует трудоёмких ручных измерений, большого количества маркеров и, соот-

ветственно, длительной подготовки съёмочных павильонов. Все эти проблемы

решаемы путём использования безмаркерного трекинга. Для построения карты в

данном случае требуется лишь откалиброванная камера и, возможно, задание по-

ложений некоторых точек для масштабирования или ориентации карты в вирту-

альном пространстве.

Сейчас существует большое количество различных реализаций SLAM. Для

построения карты, необходимой для дальнейшего применения в системе вирту-

альной реальности, наиболее важными критериями оценки работоспособности

являются точность и быстродействие. А также возможность модификации карты

в реальном времени.

Page 5: J : K Q ? L G H I H Y K G B L ? E V A : I B K D · 2018. 7. 12. · Получение оценочного положения в пространстве на основе анализа

9

ЦЕЛИ И ЗАДАЧИ

1. Анализ существующих алгоритмов безмаркерного трекинга.

2. Выбор наиболее оптимального алгоритма.

3. Разработка и реализация реализации выбранного алгоритма, анализ

и осуществление необходимых изменений и доработок:

3.1. Позиционирование в пространстве должно производиться макси-

мально точно. Например, коррекция построения может осуществляться с помо-

щью механизма замыкания петель.

3.2. Необходимо предусмотреть возможность сохранения и загрузки

карты, для дальнейшего ее использования.

3.3. Должна быть предусмотрена возможность модификации карты:

Смещения

Задания начала координат

Поворота

Масштабирования

3.4. Анализ целесообразности применения бинарных изображений вме-

сто градиентных в алгоритме и изучение их влияния на эффективность построе-

ния карты.

Page 6: J : K Q ? L G H I H Y K G B L ? E V A : I B K D · 2018. 7. 12. · Получение оценочного положения в пространстве на основе анализа

10

1. Аналитическая часть

1.1. Анализ метода одновременной локализации и построения

карты( Simultaneous Localization And Mapping (SLAM))

Метод одновременной локализации и построения карты (SLAM от англ.

Simultaneous Localization and Mapping) — метод, используемый в мобильных ав-

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

обновления карты в заранее известном пространстве с одновременным контро-

лем текущего местоположения и пройденного пути[18].

SLAM предназначен для решения следующих задач:

1. Построение карты

2. Построение траектории движения[18]

При этом на SLAM накладываются следующие ограничения:

1. SLAM не располагает никакими данными о середе (метки, предваритель-

ная карта),

2. Среда считается статической (неподвижной).[18]

Работа SLAM может быть представлена, как последовательное повторение

следующих шагов:

1. Сканирование окружающего пространства

2. Вычисление ключевых точек каждого нового кадра

3. Определение смещения на основе сравнения текущего кадра с

предыдущим

4. Сопоставление ключевых точек текущего кадра с точками предыду-

щих кадров

5. Обновление на основе этой информации данных предыдущих кад-

ров, оптимизация положения кадров и 3D позиций точек карты

Page 7: J : K Q ? L G H I H Y K G B L ? E V A : I B K D · 2018. 7. 12. · Получение оценочного положения в пространстве на основе анализа

11

На каждом шаге построения карты новый кадр поступает в систему. При

этом система хранит ранее сделанные предположения о структуре карты про-

странства. Вся работа алгоритма разделяется на 2 части: SLAM - frontend и

SLAM - backend.

Задача SLAM - frontend заключается в анализе данных, получаемых от сен-

сора и получении на их основании предположения о положении робота в про-

странстве в данный момент времени, а также передаче этих данных SLAM-

backend.

Задача SLAM - backend заключается в оптимизации полученных от SLAM-

frontend данных с целью минимизации функции ошибки. Этот этап должен быть

независим от метода получения данных от камеры.

1.1.1. Задача SLAM - frontend

2. Анализ данных камеры и приведение их к виду, необходимому для

работы алгоритма.

3. Обнаружение ключевых точек.

4. Получение оценочного положения в пространстве на основе анализа

полученных точек и точек, обнаруженных в предыдущих кадрах.

1.1.2. Задача SLAM - backend

2. Сравнение данных, полученных в результате предполагаемого ло-

кального сдвига камеры и данных, полученных в результате поиска ключевых

точек

3. Оптимизация положения камеры и 3D позиций ключевых точек и об-

новление данных о изучаемом пространстве.

1.2. Виды SLAM

Существует 2 принципиально разных подхода к решению задачи позицио-

нирования в пространстве:

Прямая одометрия

Page 8: J : K Q ? L G H I H Y K G B L ? E V A : I B K D · 2018. 7. 12. · Получение оценочного положения в пространстве на основе анализа

12

Одометрия, базирующаяся на поиске особых объектов.

Одометрия - метод оценки положения и ориентации робота или иного

устройства с помощью анализа последовательности изображений, снятых уста-

новленной на нем камерой.

Базирующаяся на поиске особых объектов одометрия хранит геометриче-

скую модель карты. Точки в ней представлены своими 3D координатами. Опти-

мизируется функция, зависящая от положения точек в пространстве.

Рис.1. Одометрия, базирующаяся на поиске особых объектов[22]

𝑇𝑘,𝑘−1 = 𝑎𝑟𝑔𝑚𝑖𝑛𝑇 ∑ ‖𝑢𝑖′ − 𝜋(𝑝𝑖)‖𝑖 ∑

2 (1)

Здесь 𝑢𝑖 – координаты точки первого кадра, а 𝑝𝑖 – её проекции на втором

В прямой одометрии карта представляет из себя набор кадров, в каждом из

которых содержится набор особых точек. Каждая точка – это координаты клю-

чевой точки на изображении и её инверсная глубина. Оптимизируется функция

зависит от интенсивности пикселей изображения.

Page 9: J : K Q ? L G H I H Y K G B L ? E V A : I B K D · 2018. 7. 12. · Получение оценочного положения в пространстве на основе анализа

13

Рис.2. Прямая одометрия[22]

𝑇𝑘,𝑘−1 = 𝑎𝑟𝑔𝑚𝑖𝑛𝑇 ∑ ‖𝐼𝑘(𝑢𝑖′) − 𝐼𝑘−1(𝑢𝑖

)‖𝑖 𝜎

2 (2)

𝑤ℎ𝑒𝑟𝑒 𝑢𝑖′ = 𝜋(𝑇 ∗ (𝜋−1(𝑢𝑖

) ∗ 𝑑))

Здесь 𝐼𝑘 – интенсивность одного изображения, а 𝐼𝑘−1 – другого.

Таким образом, в случае прямой одометрии для получения точки, помимо

положения самого кадра, необходимо оптимизировать один параметр, а в не пря-

мой - 3

1.3. Реализации SLAM

Метод ORB_SLAM.

Это непрямой метод, базирующийся на поиске ключевых точек с помощью

FAST детектора и поиска ориентированных дескрипторов. Он производится в

несколько этапов: Отслеживание, построение локальной карты, замыкание пе-

тель, релокализация, глобальная оптимизация. Этот метод достаточно эффекти-

вен, однако, так как он использует детектор углов, то дает недостаточно точные

Page 10: J : K Q ? L G H I H Y K G B L ? E V A : I B K D · 2018. 7. 12. · Получение оценочного положения в пространстве на основе анализа

14

результаты, несмотря на хорошо реализованный алгоритм замыкания петель.

[11]

Рис.3. ORB SLAM[11]

Прямой полуразреженный метод SLAM - LSD-SLAM.

Это метод SLAM, использующий алгоритмы прямой одометрии с ча-

стично-разреженной картой. Он реализует:

Представление геометрии в виде частично-разреженной карты глубины,

оптимизацию фотометрической ошибки, замыкание петель, релокализацию, гло-

бальную оптимизацию.[19]

Рис.4. LSD SLAM[19]

Page 11: J : K Q ? L G H I H Y K G B L ? E V A : I B K D · 2018. 7. 12. · Получение оценочного положения в пространстве на основе анализа

15

Метод DSO SLAM:

Метод SLAM, использующий прямую одометрию и создающий разрежен-

ную карту местности. Создание разреженной карты делает его эффективнее LSD

SLAM, так как повышает быстродействие и уменьшает аппаратные расходы.

Метод требует достаточно серьёзной начальной инициализации. Геомет-

рическую и фотометрическую калибровки.

Поиск ключевых точек ведётся по наибольшему градиенту, применяется

фотометрическая коррекция изображения.[8]

Рис.5. DSO SLAM[8]

Если проанализировать рассмотренные алгоритмы, можно сделать выводы

о плюсах и минусах прямой одометрии и одометрии, базирующейся на поиске

ключевых точек:

Методы, базирующейся на поиске ключевых точек:

К достоинствам методов ORB_SLAM, ORB_SLAM2 можно отнести: быст-

родействие; легко удаляются шумы.

К недостаткам - неточность при гладкой текстуре, не имеющей углов; ис-

пользование малой части информации изображений

Прямые методы:

Page 12: J : K Q ? L G H I H Y K G B L ? E V A : I B K D · 2018. 7. 12. · Получение оценочного положения в пространстве на основе анализа

16

К достоинствам методов DSO_SLAM, LSD_SLAM2 можно отнести: ис-

пользование более полной информации о изображении, в связи с чем точное

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

К недостаткам - необходимость хорошей инициализации; невысокая ско-

рость, однако возможность распараллеливания.

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

следует остановить выбор при дальнейшем изучении на прямых методах. Быст-

рее и эффективнее остальных кажется DSO SLAM, так как в отличие от LSD он

обладает достаточно высоким быстродействием.

Рис.6. Сравнение SLAM

1.4. Метод DSO SLAM

Метод использует достаточно серьезную инициализацию. Для этого про-

изводится геометрическая и фотометрическая калибровки, на основе которых

вычисляются параметры камер и запоминаются в специальном классе CalibHes-

sian. Программе передаются изображения (или же они поступают в режиме ре-

ального времени), vignette изображение для фотометрической калибровки и па-

раметры камеры, с помощью которой ведётся съемка. Когда все параметры си-

стемы заданы, начинается непосредственно отслеживание. Оно включает в себя

следующие этапы:

1. Инициализация

1.1. Обнаружение ключевых точек на 1 кадре.

1.2. Оптимизация положения второго кадра с учётом точек 1 кадра.

Page 13: J : K Q ? L G H I H Y K G B L ? E V A : I B K D · 2018. 7. 12. · Получение оценочного положения в пространстве на основе анализа

17

2. Получение следующего кадра, загрузка его в систему, исправление

фотометрических и геометрических ошибок.

3. Анализ всех возможных направлений движения, оптимизация, вы-

бор текущего положения кадров.

4. Оптимизация положений и позиций точек предыдущих кадров.

5. Вычисление ключевых точек текущего кадра.

Рассмотрим теоретическую основу этих этапов.

1.4.1. Инициализация системы, реализующей работу алгоритма DSO-

SLAM

Для инициализации системы необходимо 2 ключевых кадра. На первом

ищутся ключевые точки (механизм поиска будет рассмотрен далее) и задаётся

начальное положение всей карты – 0 глобальной системы координат. Далее опре-

деляется второй ключевой кадр. Его позиция получается путём оптимизации це-

левой функции – преобразования интенсивностей изображений текущего и

предыдущего кадров. Механизм оптимизации и его математическая часть также

будут рассмотрены далее. На основании оптимизированных параметров, а

именно: смещения кадра, поворота относительно осей глобальной системы ко-

ординат, афинных преобразований между изображениями, а также инверсных

глубин всех ключевых точек вычисляется его положение в мировой системе ко-

ординат, система инициализируется текущим ссылочным кадром. В дальнейшем

эта информация будет использована для получения положения всех кадров си-

стемы.

1.4.2. Обнаружение ключевых точек

При загрузке изображения в систему высчитываются градиенты интенсив-

ности для каждой точки – пикселя изображения. Для этого:

Изображение разбивается на прямоугольные области. В каждой области

суммируются значения градиентов внутренних точек.

Page 14: J : K Q ? L G H I H Y K G B L ? E V A : I B K D · 2018. 7. 12. · Получение оценочного положения в пространстве на основе анализа

18

Затем, изображение сжимается в 2 раза и операция повторяется. Таким об-

разом, строится пирамида Гауссиан и разностей Гауссиан.

Рис.7. Пирамида Гауссиан и разностей Гауссиан[23]

Гауссианом(или изображением, размытым гауссовым фильтром) является

изображение:

(3)

Здесь L — значение гауссиана в точке с координатами (x,y), а σ — радиус

размытия. G — гауссово ядро, I — значение исходного изображения, * — опера-

ция свертки.[23]

Разностью гауссиан называют изображение, полученное путем попиксель-

ного вычитания одного гауссиана исходного изображения из гауссиана с другим

радиусом размытия. [23]

(4)

При помощи пирамиды Гауссиан ищутся ключевые точки в так называе-

мом масштабируемом пространстве. Масштабируемым пространством изобра-

жения является набор всевозможных, сглаженных некоторым фильтром, версий

исходного изображения. Доказано, что гауссово масштабируемое пространство

является линейным, инвариантным относительно сдвигов, вращений, масштаба,

Page 15: J : K Q ? L G H I H Y K G B L ? E V A : I B K D · 2018. 7. 12. · Получение оценочного положения в пространстве на основе анализа

19

не смещающим локальные экстремумы. Степень размытия изображения гауссо-

вым фильтром может быть принята за исходное изображение, взятое в некотором

масштабе. Таким образом, поиск ключевых точек инвариантен относительно

масштаба, если производится на разных уровнях пирамиды Гауссиан. Для этого

масштабируемое пространство разбивается на несколько участков. Исходное

изображение уменьшается в N раз для N-ного уровня пирамиды. Причем N явля-

ется степенью двойки. Далее, изображение разбивается на ячейки и в них счита-

ется сумма градиентов ключевых точек, а также их направления и дескрипторы.

Направление ключевой точки вычисляется исходя из направлений градиентов

точек, соседних с особой. Все вычисления градиентов производятся на изобра-

жении в пирамиде Гауссиан, с масштабом наиболее близким к масштабу ключе-

вой точки.[23]

(5)

Направление ключевой точки находится из гистограммы направлений. Ги-

стограмма состоит из 36 компонент, которые равномерно покрывают промежу-

ток в 360 градусов, и формируется она следующим образом: каждая точка окна

(x, y) вносит вклад, равный m*G(x, y, sigma), в ту компоненту гистограммы, ко-

торая покрывает промежуток, содержащий направление градиента θ(x, y).

Направление ключевой точки лежит в промежутке, покрываемом макси-

мальной компонентой гистограммы. Значения максимальной компоненты (max)

и двух соседних с ней интерполируются параболой, и точка максимума этой па-

раболы берётся в качестве направления ключевой точки. Если в гистограмме есть

ещё компоненты с величинами не меньше 0.8*max, то они аналогично интерпо-

лируются и дополнительные направления приписываются ключевой точке.[23]

Дескриптор – это объект, однозначно описывающий ключевую точку. Он

должен отвечать следующим требованиям:

Page 16: J : K Q ? L G H I H Y K G B L ? E V A : I B K D · 2018. 7. 12. · Получение оценочного положения в пространстве на основе анализа

20

1. Повторямость. На изображениях одного и того же объекта или

сцены, сделанных с разных точек зрения и при разных условиях освещенности,

большинство признаков должно быть обнаружено.

2. Локальность. Признаки должны быть максимально локальными,

чтобы снизить вероятность перекрытий.

3. Репрезентативность. Количество признаков должно быть достаточ-

ным даже на небольшом изображении объекта.

4. Точность. Признаки должны быть точно продетектированными по

отношению к масштабу и форме объекта.

5. Эффективность. Для приложений реального времени критично,

чтобы процедура вычисления признаков не требовала значительных вычисли-

тельных затрат.

Рис.8. Нахождение дескриптора[23]

В DSO_SLAM дескриптором является вектор. Как и направление ключе-

вой точки, дескриптор вычисляется на Гауссиане, ближайшем по масштабу к

ключевой точке, и исходя из градиентов в некоторой окрестности ключевой

точки. Перед вычислением дескриптора это окно поворачивают на угол направ-

ления ключевой точки, чем и достигается инвариантность относительно пово-

рота.[23]

Каждому градиенту в окне дескриптора можно приписать три веществен-

ные координаты (x, y, n), где x — расстояние до градиента по горизонтали, y —

Page 17: J : K Q ? L G H I H Y K G B L ? E V A : I B K D · 2018. 7. 12. · Получение оценочного положения в пространстве на основе анализа

21

расстояние по вертикали, n — расстояние до направления градиента в гисто-

грамме (имеется ввиду соответствующая гистограмма дескриптора, в которую

вносит вклад этот градиент). За точку отсчета принимается левый нижний угол

окна дескриптора и начальное значение гистограммы. За единичные отрезки бе-

рутся размеры регионов по горизонтали и вертикали для x и y соответственно, и

количество градусов в компоненте гистограммы для n. Коэффициент трилиней-

ной интерполяции определяется для каждой координаты (x, y, n) градиента как

1-d, где d равно расстоянию от координаты градиента до середины того единич-

ного промежутка в который эта координата попала. Каждое вхождение гради-

ента в гистограмму умножается на все три весовых коэффициента трилинейной

интерполяции.

Дескриптор ключевой точки состоит из всех полученных гистограмм. По-

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

которых больше 0.2, урезаются до значения 0.2 и затем дескриптор нормализу-

ется ещё раз. В таком виде дескрипторы готовы к использованию. В качестве

ключевой точки выбирается та, в которой дескриптор достигает локального мак-

симума в некоторой области – ячейке. Если, при поиске ключевых точек, резуль-

татов получено значительно больше, чем необходимо, действия повторяются, но

размеры ячеек берутся большего размера, если не хватает – меньшего. После по-

лучения необходимого в некоторых пределах числа ключевых точек, часть от-

брасывается случайным образом.

1.4.3. Исправление геометрических ошибок изображений

Геометрической ошибка изображения как правило вызвана дисторсией.

Существуют два основных вида дисторсии: радиальная дисторсия и тангенци-

альная дисторсия.

Page 18: J : K Q ? L G H I H Y K G B L ? E V A : I B K D · 2018. 7. 12. · Получение оценочного положения в пространстве на основе анализа

22

Радиальная дисторсия — искажение изображения в результате неидеаль-

ности параболической формы линзы. Искажения, вызванные радиальной дистор-

сией, равны 0 в оптическом центре сенсора и возрастают к краям. Как правило,

радиальная дисторсия вносит наибольший вклад в искажение изображения.[20]

Тангенциальная дисторсия — искажения изображения, вызванные погреш-

ностями в установки линзы параллельно плоскости изображения.[20]

Рис.9. Дисторсия[20]

Для устранения дисторсии координаты пикселей можно пересчитать с по-

мощью следующего уравнения:

(6)

где (u,v) — первоначальное расположение пикселя, (ucorrected,vcorrected) — рас-

положение пикселя после устранения геометрических искажений, k1,k2,k3 — ко-

эффициенты радиальной дисторсии, p1,p2 — коэффициенты тангенциальной

дисторсии, r2=u2+v2.[20]

Точность измерения параметров камеры (коэффициенты дисторсии, мат-

рица камеры) определяется средней величиной ошибки перепроэцирования

(ReEr, Reprojection Error). ReEr — расстояние (в пикселях) между проекцией P'

на плоскость изображения точки P на поверхности объекта, и проекцией P'' этой

же точки P, построенной после устранения дисторсии с использованием пара-

метров камеры.

Page 19: J : K Q ? L G H I H Y K G B L ? E V A : I B K D · 2018. 7. 12. · Получение оценочного положения в пространстве на основе анализа

23

Камера, используемая в система заранее откалибрована.

Истинные (идеальные) координаты точки могут быть выражены из реаль-

ных (искаженных) координат и величин смещения точек вдоль осей абсцисс и

ординат соответственно.

�̅� = 𝑥 + 𝛿𝑥 (7)

�̅� = 𝑦 + 𝛿𝑦 (8)

где (х, y) - реальные координаты точки, - истинные координаты

точки, δx, δу - величины смещения точек вдоль осей абсцисс и ординат соответ-

ственно.

Величины смещения выражаются следующим образом:

𝛿𝑥 = 𝑘1x(𝑥2 + 𝑦2) + 𝑝1(3𝑥2 + 𝑦2) + 2𝑝2xy (9)

𝛿𝑦 = 𝑘1y(𝑥2 + 𝑦2) + 𝑝2(3𝑥2 + 𝑦2) + 2𝑝1xy (10)

где k1x(x2+y2) и k1y(x2+y2) - величина радиальной дисторсии,

р1(3х2+y2)+2p2xy и р2(3х2+y2)+2p1xy - величина тангенциальной дисторсии, k1, р1,

р2 - коэффициенты дисторсии.

1.4.4. Определение положения кадра в пространстве.

Этот процесс моделируется следующим образом: Задаются предположи-

тельные смещения нового кадра в пространстве. Для начала задаются варианты

изменения координат, основанные на предыдущих смещениях ключевых кадров.

Например, делается предположение, что кадр сдвинулся также, как предыдущий

кадр относительно позапрошлого. Предлагаются различные комбинации матриц

смещений 3 последних кадров системы. Далее выдвигаются предположения о

Page 20: J : K Q ? L G H I H Y K G B L ? E V A : I B K D · 2018. 7. 12. · Получение оценочного положения в пространстве на основе анализа

24

поворотах кадра относительно различных осей на различные углы. Все эти пред-

положения последовательно служат начальными приближениями при оптимиза-

ции позиции кадра и его точек в 3D пространстве. Положение каждого кадра за-

даётся его 6-ю степенями свободы и 2 фотометрическими параметрами. Фото-

метрическая ошибка в данном алгоритме задаётся нелинейной функцией преоб-

разования между 2 последовательными изображениями:

𝐼𝑖(𝑥) = 𝐺(𝑡𝑖𝑉(𝑥)𝐵𝑖(𝑥)) (11)

𝐼𝑖′(𝑥) = 𝑡𝑖𝐵𝑖(𝑥) =

𝐺−1(𝐼𝑖(𝑥))

𝑉(𝑥) (12)

B(x), V(x) – множества значений координат на изображении по осям x и y

Процесс локализации представляет из себя движение некоторого окна по

5-7 кадров. То есть в системе в 1 момент времени хранится только конечное ко-

личество кадров. Позиции этих кадров и их точек постоянно оптимизируются и

обновляются. В качестве минимизируемой функции при оптимизации использу-

ется функция разности между интенсивностями пикселей изображения. Каждое

значение ошибки связывает между собой 2 ключевых кадра (текущий и тот, в

котором ранее наблюдалась данная точка) и саму ключевую точку. Функция

ошибки есть суперпозиция ошибок во всех ключевых точках рассматриваемого

шаблона.

Рис.10. Невязки[8]

Page 21: J : K Q ? L G H I H Y K G B L ? E V A : I B K D · 2018. 7. 12. · Получение оценочного положения в пространстве на основе анализа

25

Модель камеры описывается следующей матрицей:

Здесь и далее: 𝑓𝑥 , 𝑓𝑦 – проекции фокусного расстояния на оси x и y изобра-

жения в пикселях, с𝑥, с𝑦 – координаты центра камеры в пикселях.

Рассматриваются 2 кадра: кадр, к которому привязана точка и кадр, в ко-

тором она тоже наблюдается. Будем называть их host и target

Координаты пикселя в кадре host:

где 𝑢𝑇 , 𝑣𝑇 - пиксельные координаты точки

В то же время обратная глубина этой точки:

где 𝑑𝐻 - значение глубины этой точки. Тогда проекция этой точки в target:

(13)

тогда :

Page 22: J : K Q ? L G H I H Y K G B L ? E V A : I B K D · 2018. 7. 12. · Получение оценочного положения в пространстве на основе анализа

26

- мировая координата точки и матрица относительного преобразова-

няе от host к target, R – матрица поворота кадра в глобальной системе координат,

t – смещение кадра относительно начала системы координат.

Невязка данной точки будет определяться следующей формулой:

(14)

Однако в DSO данная формула корректируется с учётом фотометрических

параметров точки:

(15)

где a и b – фотометрические параметры, t – время экспозиции кадра.

𝑤𝑝– дополнение(вес) Шура.

𝑤𝑝 = с2

с2+ ‖𝛻𝐼𝑖(𝑝)‖22 (16)

c – константа.

Якобиан оптимизируемой системы состоит из 3 подматриц: геометриче-

ский (описывает смещение кадра), светимости (градиент интенсивности) и фото-

метрический. Предполагается, что геометрические параметры и параметры све-

тимости – это гладкая функция по отношению к независимой переменной – глу-

бине, а фотометрические параметры зависят от нее недостаточно гладко, по-

этому первые 2 якобиана вычисляются только в начале каждой итерации, а фо-

тометрическая часть якобиана постоянно обновляется. Эта практика называется

First-Estimate-Jacobian (FEJ) и часто используется в VIO. Данный подход умень-

шает объём вычислений и повышает быстродействие алгоритма.

Page 23: J : K Q ? L G H I H Y K G B L ? E V A : I B K D · 2018. 7. 12. · Получение оценочного положения в пространстве на основе анализа

27

Координаты точки, проецируемой в кадр target:

(17)

(18)

Здесь и далее: u, v – координаты точки на изображении.

Очевидно:

(19)

Тогда:

(20)

здесь 1 и 3 – индексы элементов вектора смещения

(21)

(22)

(23)

Page 24: J : K Q ? L G H I H Y K G B L ? E V A : I B K D · 2018. 7. 12. · Получение оценочного положения в пространстве на основе анализа

28

Далее рассматривается якобиан остатка относительно внутренней ссылки

камеры.

(24)

(25)

(26)

(27)

Тогда:

(28)

Page 25: J : K Q ? L G H I H Y K G B L ? E V A : I B K D · 2018. 7. 12. · Получение оценочного положения в пространстве на основе анализа

29

(29)

Таким образом, получается производная точки проектирования относи-

тельно f_x. Производные от f_y, c_x, c_y могут быть введены аналогичным об-

разом.

Каждая функция ошибки есть суперпозиция ошибок в 8 точках выбранного

шаблона, то есть помимо ошибки в ключевой точке суммируются ошибки в еще

7 окружающих ее точках. [8]

Рис.11. Шаблон[8]

Предполагается, что такая интерполяция позволяет совершенно точно

найти точки один и тот же объект на 2 изображениях.

Page 26: J : K Q ? L G H I H Y K G B L ? E V A : I B K D · 2018. 7. 12. · Получение оценочного положения в пространстве на основе анализа

30

После вычисления матрицы Якоби для производных функции ошибки к

основным оптимизируемым параметрам, проводится оптимизация системы ме-

тодом Гаусса-Ньютона или Левернберга-Марквардта.[12][

На итерации все остаточные элементы могут быть объединены в большое

линейное уравнение:

(30)

где J, W, r - якобиан, веса и невязки после сращивания, соответственно, а

𝛿𝑥- приращения вектора независимых параметров.

Левую часть можно записать в виде: 𝐽𝑇𝑊𝐽 = 𝐻 - матрица Гессе. Эта мат-

рица будет сохраняться в памяти в течение всего процесса оптимизации.

Известно, что матрица H на самом деле имеет особую форму (стрелочная

матрица), как показано на следующем рисунке:

Рис.12. Стрелочная матрица[8][14]

Для приведения матрицы к треугольному виду используется дополнение

Шура:

Page 27: J : K Q ? L G H I H Y K G B L ? E V A : I B K D · 2018. 7. 12. · Получение оценочного положения в пространстве на основе анализа

31

Матрицы B,E,C – обозначения соответствующих подматриц матрицы Гессе(см.

рис. 12)

Сначала решается верхняя часть, затем нижняя с использованием получен-

ных результатов:

(31)

(32)

После вычисления Δ𝑥𝑝 и Δ𝑥𝑐 делается шаг оптимизации. Оптимизация ве-

дётся, пока погрешность между шагами не будет меньше заданного значения,

или пока не будет превышено число допустимых шагов. [14]

1.4.5. Представление данных в методе DSO_SLAM

Карта:

Массив кадров frameHessians

Кадр:

Класс FrameHessian:

Положение кадра SE3(Кватернион и вектор смещения)

Массивы точек - экземпляров класса PointHessian и ImmaturePoint

pointHessians – текущие точки

pointHessiansMarginalized -точки вне зоны видимости камеры

Page 28: J : K Q ? L G H I H Y K G B L ? E V A : I B K D · 2018. 7. 12. · Получение оценочного положения в пространстве на основе анализа

32

pointHessianOutliers - ошибки

immaturePoints – сырые точки

Класс PointHessian и ImmaturePoint:

u,v координаты на кадре

инверсная глубина – число формата double

Вектор положений кадров (пройденный маршрут) allFrameHistory – поло-

жения кадров в пространстве(кватернионы и смещения).

1.5. Повышение точности SLAM алгоритма

При разработке любого алгоритма важным является достижение макси-

мально возможной точности его работы. DSO SLAM показал в этом смысле до-

статочно неплохие результаты. Однако, невозможно создать абсолютно точный

алгоритм. Выбор ключевых точек, их сопоставление в нескольких кадрах, опре-

деление позиции кадра и 3D позиций его точек всегда даёт некоторую погреш-

ность. Задача улучшения алгоритма заключается в максимальном повышении

точности локализации и построения карты. Один из методов улучшения алго-

ритма добавлен в ORB SLAM и достаточно эффективно себя в нём зарекомендо-

вал. Это алгоритм замыкания петель, действующий параллельно с построением

карты.

1.5.1. Алгоритм замыкания петель

При движении камеры по изучаемому пространству возможны ситуации

повторного возвращения в уже пройденную точку. Из-за погрешности, позиции

кадров в одном и том же месте пространства будут отличаться, а значит карта

Page 29: J : K Q ? L G H I H Y K G B L ? E V A : I B K D · 2018. 7. 12. · Получение оценочного положения в пространстве на основе анализа

33

будет сдвинута относительно самой себя. Такая ситуация корректируется

алгоритмом замыкания петель.

Рис.13. Петля[10]

Для замыкания петель удобно применять представление информации об

изображении в виде так называемой Bug of Words, далее BoW. Необходим этот

механизм для кластеризации дескрипторов точек. Это упрощает подсчёт количе-

ства вхождений каждой точки в систему. Таким образом, каждое изображение

может быть представлено в виде некоторой гистограммы частот:

Рис.14. Перевод изображения в гистограмму[2]

Сходство изображений получается из сходства гистограмм, включенных в

некоторый словарь. Словарь представляет из себя K-D бинарное дерево. При

этом на верхних уровнях записаны первые элементы дескрипторов, на вторых -

вторые и так далее. Создаётся индекс дескриптора. Каждый дескриптор имеет

Page 30: J : K Q ? L G H I H Y K G B L ? E V A : I B K D · 2018. 7. 12. · Получение оценочного положения в пространстве на основе анализа

34

вес, отображающий частоту его появления. При приходе в систему нового изоб-

ражения, оно добавляется в базу данных BoW и преобразуется в вектор дескрип-

торов - слов. Для этого в дереве ищется ближайший по расстоянию хемминга

дескриптор к текущему дескриптору ключевой точки изображения.

(33)

s - расстояние Хемминга, 𝑣1, 𝑣2 – вектора дескрипторов.

Для каждого слова в базе данных хранится список изображений, где данное

слово присутствует. Далее ищутся такие изображения, которые обладают боль-

шим количеством сходных слов с текущим исследуемым изображением. Во из-

бежание выявления соответствий между изображениями, близкими по времени,

кадры разделяются на множества и между этими множествами ищется соответ-

ствие.

(34)

η – сумма соответствий одного изображения H – сумма соответствий мно-

жества.

Если соответствие удовлетворяет заданному пределу, кадр становится кан-

дидатом на петлю и дальше происходит более серьезная геометрическая про-

верка, вычисляются расстояния между дескрипторами каждого кандидата и те-

кущего кадра. Если они достаточно малы, этот кадр остаётся в списке кандида-

тов, иначе с помощью построения дерева и алгоритма RANSAC для каждой пары

кадров ищется геометрическое преобразование между ними и количество точек,

присутствующих в обоих кадрах, то есть количество точек, проецируемых из од-

Page 31: J : K Q ? L G H I H Y K G B L ? E V A : I B K D · 2018. 7. 12. · Получение оценочного положения в пространстве на основе анализа

35

ного кадра на другой. Если оно превышает установленный порог, то кадр счита-

ется верным кандидатом на замыкание петли. Для дальнейших действий нахо-

дится максимально близкий к текущему кандидат. Далее вычисляется разность

между позицией кандидата на петлю и положением текущего кадра, и вся карта

перестраивается в соответствии с полученной погрешностью.

1.6. Преобразования над облаками точек

Для использования карты удобно иметь возможность подстраивать её по-

ворот и ориентацию. Так как о позициях кадров нам известны их матрица пово-

рота и вектор смещения, операции преобразований удобно ввести в матричной

форме.

Рассмотрим трехмерную декартовую правостороннюю систему коорди-

нат.

Рис.15. Правосторонняя декартова система координат[15]

Обобщенная матрица преобразования 4´4 для трехмерных однородных ко-

ординат имеет вид

Page 32: J : K Q ? L G H I H Y K G B L ? E V A : I B K D · 2018. 7. 12. · Получение оценочного положения в пространстве на основе анализа

36

Эта матрица может быть представлена в виде четырех отдельных частей:

Матрица 3*3 осуществляет линейное преобразование в виде изменения

масштаба, сдвига и вращения.

Матрица 1*3 производит перенос.

Матрица 3*1- преобразования в перспективе.

Скалярный элемент 1*1 выполняет общее изменение масштаба.

Рассмотрим воздействие матрицы 4*4 на однородный вектор

[x,y,z,1][15][16][17]

1.6.1. Трехмерный перенос точек карты

[𝑥, 𝑦, 𝑧, 1] ∗ 𝑇(𝐷𝑥, 𝐷𝑦 , 𝐷𝑧) = [𝑥 + 𝐷𝑥, 𝑦 + 𝐷𝑦 , 𝑧 + 𝐷𝑧, 1] [15][16][17] (35)

1.6.2. Трехмерное изменение масштаба точек карты

Рассмотрим частичное изменение масштаба. Оно реализуется следу-

ющим образом:

Page 33: J : K Q ? L G H I H Y K G B L ? E V A : I B K D · 2018. 7. 12. · Получение оценочного положения в пространстве на основе анализа

37

[𝑥, 𝑦, 𝑧, 1] ∗ 𝑆(𝑆𝑥, 𝑆𝑦 , 𝑆𝑧) = [𝑆𝑥 ∗ 𝑥, 𝑆𝑦 ∗ 𝑦, 𝑆𝑧 ∗ 𝑧, 1] (36)

Общее изменение масштаба получается за счет 4-го диагонального эле-

мента, т. е.

(37)

Такой же результат можно получить при равных коэффициентах частич-

ных изменений масштабов. В этом случае матрица преобразования такова:

1.6.3. Трехмерный сдвиг точек карты

Недиагональные элементы матрицы 3´3 осуществляют сдвиг в трех изме-

рениях, т. е.[15][16][17]

(38)

Page 34: J : K Q ? L G H I H Y K G B L ? E V A : I B K D · 2018. 7. 12. · Получение оценочного положения в пространстве на основе анализа

38

1.6.4. Трехмерное вращение точек карты

Матрица поворота вокруг оси X имеет вид

(39)

Матрица поворота вокруг оси Y имеет вид

(40)

Матрица поворота вокруг оси Z имеет вид

(41)

Результатом произвольной последовательности поворотов вокруг осей x,

y, z является матрица

Page 35: J : K Q ? L G H I H Y K G B L ? E V A : I B K D · 2018. 7. 12. · Получение оценочного положения в пространстве на основе анализа

39

Подматрицу 3*3 называют ортогональной, так как ее столбцы являются

взаимно ортогональными единичными векторами.

Матрицы поворота сохраняют длину и углы, а матрицы масштабирования

и сдвига нет.[15][16][17]

1.7. Применение бинарных изображений в SLAM

Бинарное изображение (двухуровневое, двоичное) — разновидность циф-

ровых растровых изображений, в которых каждый пиксель может представлять

только один из двух цветов.[5]

Значения каждого пикселя условно кодируются, как «0» и «1». Значение

«0» условно называют задним планом, а «1» —передним планом.

Очевидно, передача таких файлов и поиск ключевых точек на них должны

производиться быстрее и, в некоторых случаях, эффективнее. Например, при

идентификации фич( цифр, букв или других типовых объектов) изображение

специально приводится к бинарному виду. Соответственно и применение бинар-

ных изображений в SLAM должно позволить получить преимущество по вре-

мени работы. Однако, применение бинарных изображений при оптимизации и

получении 3D позиций точек и кадров невозможно, так как в качестве оптими-

зируемой функции берется преобразование между изображениями по интенсив-

ности их пикселей. Алгоритм неспособен работать только с 2 значениями пиксе-

лей. Исходя из вышесказанного можно предположить, что эффективно работать

Page 36: J : K Q ? L G H I H Y K G B L ? E V A : I B K D · 2018. 7. 12. · Получение оценочного положения в пространстве на основе анализа

40

с 2 представлениями одного изображения: искать ключевые точки и высчиты-

вать дескрипторы с бинарными файлами и производить дальнейшие операции с

градиентными.

2. Практическая часть

2.1. Сохранение Карты изучаемого пространства

2.1.1. Хранение карты изучаемого пространства в системе

Изначально, в DSO SLAM разработчиками не была предусмотрена воз-

можность сохранения карты. Однако, эта опция необходима при использовании

DSO SLAM, так как основной задачей является получение точной карты изучае-

мого пространства. В данной системе кадры представляют из себя данные о по-

зиции и наборы точек, обнаруженных на соответствующих изображениях с по-

лученными данными об их инверсной глубине. Добавим в систему еще один со-

храняемый вектор кадров vector<FrameHessians *> HistoryFrameHessians. При

поступлении в систему каждого нового изображения этот вектор будет обнов-

ляться.

Для этого написана функция

void FullSystem::addInHistory(std::vector<FrameHessian*> &frames, bool fi-

nal, CalibHessian* HCalib)

На вход подаётся массив кадров – текущие кадры системы - и откалибро-

ванные параметры камеры.

Система хранит массив кадров, находящихся в данный момент в зоне ви-

димости, а точки, принадлежащие этим кадрам также на каждом шаге алгоритма

обновляются и модифицируются. Поэтому для добавления кадра в карту необхо-

димо просматривать весь текущий массив и обновлять данные о кадре, если ин-

формация о нём уже существует, или добавлять кадр, если он только что создан.

Page 37: J : K Q ? L G H I H Y K G B L ? E V A : I B K D · 2018. 7. 12. · Получение оценочного положения в пространстве на основе анализа

41

Рис.16. Блок схема обновления карты

2.1.2. Сохранение карты в текстовый файл

Во время работы с картой, получаемой от SLAM, может возникнуть необ-

ходимость ее сохранения, для дальнейшей обработки, а затем, по истечении не-

которого времени восстановления сохраненных данных. Например, возможна

ситуация, когда необходимо использование уже построенной карты для дальней-

ших её модификаций или продолжения построения. Модификацию карты

удобно производить вручную, что не подразумевается моделью DSO-SLAM.

Этот алгоритм предназначен только для построения карты и локализации на ней,

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

обращаться к классам DSO. Для этого разумно предусмотреть сериализацию

карты, то есть сохранения всех её данных в отдельный текстовый файл. Тогда, в

другой программе можно будет создать лишь образ системы DSO SLAM и загру-

зить данные о карте, не перестраивая её заново. Для сериализации были напи-

саны специальные методы load и save во всех классах, хранящих важную инфор-

мацию. Схема хранения карты в DSO-SLAM:

Page 38: J : K Q ? L G H I H Y K G B L ? E V A : I B K D · 2018. 7. 12. · Получение оценочного положения в пространстве на основе анализа

42

Рис.17. Зависимости между классами карты DSO SLAM

Добавление методов в классы и соблюдение необходимых зависимостей:

В каждый указанный в диаграмме класс было добавлено 2 функции: load

и save. Функция save всегда получает только один параметр – файл, в который

будет сохраняться карта. Функции load передаются значения тех указателей, от

которых зависит класс( далее – класс родитель). Сначала вызываются функции

load и save высших классов. Они вызывают save и load классов, хранимых в них,

передавая им в качестве параметров ссылки на самих себя для установления об-

ратных зависимостей. В функции load классов, в которых хранится несколько

разных ссылок на FrameHessian передаётся также сам массив HistoryFrameHessi-

ans. Обусловлено это тем, что такие объекты помимо кадра – родителя так же

должны иметь информацию о кадре – ссылке. При работе DSO SLAM такие

кадры – ссылки всегда выбираются из уже обработанных системой кадров. Со-

ответственно, заведомо известно, что если объект хранит экземпляр кадра –

ссылки, то она точно будет найдена среди уже загруженных кадров. При сохра-

нении и загрузке ссылок на объекты не производится сохранение самих объек-

тов. Это могло бы привести к рекурсивному запоминанию дублируемых данных

и излишних затрат памяти. При сохранении таких ссылок в файл записывается

уникальный индекс объекта, а при загрузке, приравнивается передаваемый функ-

ции load соответствующий параметр класса – родителя.

Page 39: J : K Q ? L G H I H Y K G B L ? E V A : I B K D · 2018. 7. 12. · Получение оценочного положения в пространстве на основе анализа

43

2.1.3. Сохранение облака точек

Для дальнейшей визуализации результата удобно получать карту в виде

какого – либо понятного другим программам объекта. Например, облака точек.

В таком случае, карту можно загружать в любую систему, предназначенную для

визуализации и оценивать результат работы алгоритма. В системе хранятся по-

ложения кадров и точки в этих кадрах. Для получения их 3D позиций в глобаль-

ной системе координат необходимо:

1. Получить 3D точку в системе координат кадра:

x = (u * fxi + cxi) * depth; (42)

y = (v * fyi + cyi) * depth; (43)

z = depth * (1 + 2*sqrt(fxi * fxi + fyi * fyi)); (44)

где u, v – координаты точки на кадре, idepth –обратная глубина. fxi, fyi -

инверсные фокусные расстояния камеры, cxi, cyi- инверсные положения центра

камеры.

2. Получить точку в глобальной системе координат:

Для этого необходимо умножить координаты точки в системе координат

кадры, на матрицу преобразования – [R|t], где R – матрица поворота кадра( по-

лучается из кватерниона с помощью углов Эйлера[21]), t – вектор смещения

кадра.

2.2. Добавление алгоритма замыкания петель

Алгоритм DSO-SLAM в сравнении, приведенном в показал достаточно вы-

сокую точность. Однако, для повышения надежности и устойчивости было ре-

шено добавить в него алгоритм замыкания петель. Наиболее понятно и эффек-

тивно описан этот алгоритм в реализации ORB-SLAM2. Поэтому было решено

проанализировать реализацию loop closure в ORB SLAM и добавить в модифи-

цируемый алгоритм. Механизм замыкания петель уже был рассмотрен выше. В

сети представлена реализация базы данных Bug of Words с уже обученной биб-

Page 40: J : K Q ? L G H I H Y K G B L ? E V A : I B K D · 2018. 7. 12. · Получение оценочного положения в пространстве на основе анализа

44

лиотекой дескрипторов. Эта реализация была взята за основу. Сложность агре-

гации алгоритма из ORB SLAM в DSO заключалась в принципиальной разности

этих алгоритмов вплоть до реализации поиска дескрипторов. Библиотека

DBoW2 базируется на библиотеке OpenCV, достаточно часто используемой в

компьютерном зрении. Соответственно, представление дескрипторов и ключе-

вых точек, необходимое для этой библиотеки также должно быть представлено

классами OpenCV. Для этого в основной класс системы DSO ( FullSystem) были

добавлены следующие классы:

FullSysten:

LoopClosing – набор методов, реализующих алгоритм замыкания петель.

Vocabulary – обученный словарь дескрипторов.

FrameHessian:

Vocabulary – обученный словарь дескрипторов.

std::vector<cv::KeyPoint> mvKeys;

std::vector<cv::KeyPoint> mvKeysUn;

cv::Mat mDescriptors; - ключевые точки и дескрипторы в OpenCV формате

DBoW2::BowVector mBowVec;

DBoW2::FeatureVector mFeatVec; -особые точки и дескрипторы-слова, не-

обходимые для работы DBoW2

std::map<FrameHessian*,int> mConnectedKeyFrameWeights;

std::vector<FrameHessian*> mvpOrderedConnectedKeyFrames;

Page 41: J : K Q ? L G H I H Y K G B L ? E V A : I B K D · 2018. 7. 12. · Получение оценочного положения в пространстве на основе анализа

45

std::vector<int> mvOrderedWeights; -кандидаты на петлю, веса слов, список

весов и кандидатов, необходимые для хранение информации на этапах loop clos-

ing

PointHessian:

std::map<FrameHessian*,size_t> mObservations; - кадры, в которых также

была обнаружена данная точка.

Замыкание петель работает в отдельном потоке. Основной функцией явля-

ется функция Run(), осуществляющая весь цикл алгоритма: нахождение канди-

датов на петли в базе данных DBoW2, геометрическая проверка кандидатов и, в

случае необходимости, коррекция кадров петли. Алгоритм замыкания может

быть представлен следующей схемой:

Рис.18. Блок-схема процесса loop closing

Page 42: J : K Q ? L G H I H Y K G B L ? E V A : I B K D · 2018. 7. 12. · Получение оценочного положения в пространстве на основе анализа

46

Каждый новый кадр берется из специальной очереди

mlpLoopKeyFrameQueue . Эта очередь пополняется кадрами при приходе каж-

дого нового кадра в систему. Синхронизация потоков FullSystem и LoopClosing

осуществляется посредством mutex mMutexGBA и trackMutex. При коррекции

петли работа основного потока приостанавливается, чтобы не было внесено оши-

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

LoopClosing необходимо проинициализировать основные необходимые для за-

мыкания петель параметры. Сначала осуществляется сам трекинг кадра, преду-

смотренный системой DSO. Дальше, по уже оптимизированным и корректным

данным создаётся их копия в классах, необходимых для работы LoopClosing. В

каждом новом кадре массив pointHessians дублируется в виде векторов фич

OpenCV и высчитываются специальные, непобходимые для DBoW2 дескрип-

торы. Обновляется информация о точках – соседях. Информация об изображении

заносится в базу данных.

Рис.19. Работа loop closing

2.3. Добавление методов модификации карты

Методы модификации карты необходимы для:

Page 43: J : K Q ? L G H I H Y K G B L ? E V A : I B K D · 2018. 7. 12. · Получение оценочного положения в пространстве на основе анализа

47

1. Окончательного контроля неточностей с учётом известных заранее

данных о изучаемом пространстве. Возможно, при построении карты заранее бу-

дут известны данные о расстояниях между некоторыми особыми объектами или

точками. Для исключения ошибок дальнейшего использования результатов ра-

боты SLAM необходимо уметь корректировать карту в связи с этими данными.

Например, менять масштаб, смещать карту в начало координат, привязываясь к

определенной точке, ориентировать карту в пространстве, относительно осей ко-

ординат или координатных плоскостей.

2. Удобства использования карты. Возможно, карта будет встраиваться

в некоторое виртуальное пространство или анализироваться, исходя из уже из-

вестных данных. Тогда прежде необходимо уметь сориентировать карту в этом

пространстве.

Для этого было предусмотрено добавление методов масштабирования,

сдвига, установки в 0, и поворота относительно различных ориентиров.

Сложность реализации изменений вида масштабирование и поворот в рам-

ках данного алгоритма заключалась в том, что поворот хранится в виде кватер-

нионов. С одной стороны, это очень удобное и эффективное с точки зрения быст-

родействия любых операций над ним средство, с другой, оно ограничивает неко-

торые необходимые возможности. Как известно [16], кватернион содержит по-

ворот и должен быть нормированным, то есть кватернион предполагает исполь-

зование чистой матрицы поворота, без масштабирования. Однако, как известно

из курса линейной алгебры, любые матричные преобразования должны следо-

вать в строгой последовательности, нельзя сначала отмасштабировав точку, а за-

тем повернув и снова отмасштабировав, считать, что матрица преобразования

получится умножением матрицы масштабирования на общий поворот. Таким об-

разом, необходимо хранить общую матрицу преобразования, получаемую как

последовательное перемножение всех матриц, модифицирующих карту. Будем

хранить в системе модифицированный вектор смещения, кватернион, осуществ-

Page 44: J : K Q ? L G H I H Y K G B L ? E V A : I B K D · 2018. 7. 12. · Получение оценочного положения в пространстве на основе анализа

48

ляющий изначальный поворот карты и общую матрицу модификации. Таким об-

разом, положение кадра в пространстве будет задаваться его начальным положе-

нием, умноженным на хранимую матрицу.

Также, как было описано выше, точка пространства получается путём объ-

единения информации о положении кадра и точки на кадре. При изменении по-

ложения точки нельзя изменить только её u,v,i значения. Необходимо изменить

положение кадра. Поэтому все изменения будут применяться именно к положе-

нию кадра, а не точки.

Модификации карты:

Смещение:

Вычисляем разницу между желаемым положением точки и текущим.

Меняем положения всех кадров на полученную разницу.

Поворот относительно вектора оси или оси, заданной 2 точками карты.

Вычисляем матрицу поворота на заданный угол вокруг оси(вектора,

заданного его координатами, или точками карты, через которые он проходит)

Поворачиваем все кадры на данный угол относительно данной оси(

т.е. умножаем полученную на 1 шаге матрицу на их матрицы преобразования)

Задание принадлежности 3 точек карты плоскости( поворот) :

Вычисляем координаты 2 векторов, проходящих через заданные

точки

Вычисляем их векторное произведение

Вычисляем угол между вектором заданной плоскости и высчитан-

ным нами векторным произведением.

Поворачиваем карту так, чтобы векторы совпали( операция задаётся

с помощью кватерниона)

Page 45: J : K Q ? L G H I H Y K G B L ? E V A : I B K D · 2018. 7. 12. · Получение оценочного положения в пространстве на основе анализа

49

Масштабирование:

Выбираем 2 точки.

Высчитываем расстояние между ними.

Высчитываем отношения по всем осям между требуемым расстоя-

нием и высчитанным.

Умножаем координаты положений всех кадров на высчитанное част-

ное.

Масштабирование с заданием позиций 2 точек.

Аналогично, но сначала смещаем карту так, чтобы 1-я точка совпала с её

требуемым положением.

Так как модификации производятся не над конечным облаком точек, а над

текущим положением кадров, возможно не только менять конечную карту, но и

исправлять её в процессе построения, что отвечает требованиям поставленной

задачи.

Результаты:

Рис.20. Поворот на 90 градусов вокруг оси Y

Page 46: J : K Q ? L G H I H Y K G B L ? E V A : I B K D · 2018. 7. 12. · Получение оценочного положения в пространстве на основе анализа

50

Рис.21. Масштабирование

Рис.22. Поворот на 15 градусов относительно заданной 2 точками оси

Page 47: J : K Q ? L G H I H Y K G B L ? E V A : I B K D · 2018. 7. 12. · Получение оценочного положения в пространстве на основе анализа

51

Рис.23. Задание новой оси координат по 2 точкам

2.4. Работа с бинарными изображениями

Загрузка изображений и их дальнейшая обработка происходит с помощью

функции: getImage_internal(int id, int unused). В нее передается номер извлекае-

мого кадра.

Она имеет 2 режима: 1 – загрузка данных из архива, 2 – загрузка данных из

папки. В обоих случаях известен путь к изображениям. Загрузка производится с

помощью методов библиотеки OpenCV - imread. SLAM работает с черно-белыми

изображениями, поэтому выбирается опция CV_LOAD_IMAGE_GRAYSCALE.

Далее полученные данные обрабатываются, корректируются геометрические ис-

кажения и информация записывается в динамический массив dI, хранящий эле-

менты типа векторов размерностью 3. Первым параметром такого вектора явля-

ется интенсивность пикселя изображения, а вторым и третьим – его u,v коорди-

наты на изображении. Для загрузки бинарного файла можно использовать изоб-

ражения в уже бинарном формате или же обрабатывать градиентные изображе-

ние с помощью функции библиотеки OpenCV

Page 48: J : K Q ? L G H I H Y K G B L ? E V A : I B K D · 2018. 7. 12. · Получение оценочного положения в пространстве на основе анализа

52

adaptiveThreshold(src, dst, maxValue, adaptiveMethod, thresholdType,

blockSize, C)

Здесь:

src - изображение, переводимое в бинарный формат.

dst - результат.

maxValue - значение, которое должно быть задано, если значение пикселя

больше порогового значения.

adaptiveMethod - переменная integer - тип, представляющий адаптивный

метод, который будет использоваться. Это должно быть одно из следующих двух

значений:

ADAPTIVE_THRESH_MEAN_C - пороговое значение - среднее значение

области окрестности.

ADAPTIVE_THRESH_GAUSSIAN_C - пороговое значение представляет

собой взвешенную сумму значений окрестности, где веса являются гауссовым

окном.

tresholdType - тип используемого порога.

blockSize - размер пикселя, который используется для вычисления порого-

вого значения.

C - константа, используемая в обоих методах (вычитается из среднего или

взвешенного среднего значения).

Этот метод устанавливает все биты, интенсивность которых меньше задан-

ного порога в значение maxValue, а остальные в 0.

Page 49: J : K Q ? L G H I H Y K G B L ? E V A : I B K D · 2018. 7. 12. · Получение оценочного положения в пространстве на основе анализа

53

Для сохранения бинарных файлов изначально было решено считывать

изображение, а затем переводить его в бинарный формат. Однако, в таком случае

система оказалась неспособна работать. Возникли ошибки при оптимизации по-

зиции кадра и глубины точек.

Рис.24. Ошибка построения карты по бинарным изображениям

В связи с этим была проанализирована работа алгоритма и установлено,

что функция ошибки, зависящая от преобразований интенсивности изображений

не способна работать с бинарными файлами. Так как в целом алгоритм показал

себя весьма эффективно и устойчиво было решено не вносить никаких измене-

ний. Однако, так как обработка бинарных файлов должна давать преимущества

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

работу алгоритма на 2 части: первая – frontend – обнаружение ключевых точек,

подсчет градиентов и дескрипторов, вторая -backend– оптимизация положения и

определение глубин точек. Для работы первой части будет загружаться бинарное

изображение, для работы второй – градиентное. При этом возможно несколько

подходов: 1- в систему приходит бинарное фото. Тогда для работы с градиент-

ным необходимо будет перевести бинарное фото в градиентное путём размытия

или алгоритмов перевода. 2 – в систему приходит градиентное фото, считыва-

ется, записывается в 1 массив. Затем переводится в бинарный формат и записы-

вается во второй массив. 2 части системы будут работать с разными массивами

Page 50: J : K Q ? L G H I H Y K G B L ? E V A : I B K D · 2018. 7. 12. · Получение оценочного положения в пространстве на основе анализа

54

интенсивностей исходного изображения. Эти подходы имеют определенные не-

достатки:

1. Увеличение затрачиваемой памяти.

2. Временные затраты на загрузку и threshold изображения

Однако есть и преимущества:

1. Уменьшение времени обработки изображения на этапе обнаружения

ключевых точек.

2. Более эффективное обнаружение ключевых точек.

Так как временные затраты на запись изображения, а также затраты памяти

весьма незначительны, применение бинарных файлов достаточно эффективно в

данной системе.

Для введения использования бинарный изображений была модифициро-

вана функция getImage_internal(int id, int unused). Помимо сохранения обычного

изображения она так же вызывает adaptiveTreshold и загружает бинарную копию.

В функциях MakeMaps и всех функциях класса PixelSelector, осуществляющих

поиск ключевых заменено использование массива dI на dIb, то есть на массив с

бинарными данными.

Добавлен флаг IsBinar в класс ImageFolderReader. Этот флаг задаётся в ко-

мандной строке при запуске программы и указывает на 1 из двух режимов ра-

боты DSO SLAM: с использованием бинарных изображений и без. Если этот

флаг установлен в true, то в массив dIb записывается бинарная копия получен-

ного изображения, иначе, указателю dIb приравнивается значение указателя dI.

Далее динамический массив dIb используется для определения дескрипторов и

обнаружения ключевых точек, а dI для оптимизации позиций кадров.

Использование бинарных файлов, несмотря на временные затраты по их

загрузке, дало меньшее среднее время обработки одного кадра:

С использованием бинарных изображений: 0.087 с

Page 51: J : K Q ? L G H I H Y K G B L ? E V A : I B K D · 2018. 7. 12. · Получение оценочного положения в пространстве на основе анализа

55

Без использования бинарных изображений: 0.094 с

Рис.25. Карта с поиском точек по бинарным изображениям

Рис.26. Карта с поиском точек на градиентном изображении

Рис.27. Сравнение 2 карт. черный - поиск точек на бинарном изображении, жел-

тый - на градиентном

Page 52: J : K Q ? L G H I H Y K G B L ? E V A : I B K D · 2018. 7. 12. · Получение оценочного положения в пространстве на основе анализа

56

Не сложно заметить, что применение бинарных файлов для обнаружения

ключевых точек даёт преимущество по времени работы, а также позволяет де-

тектировать большее количество точек, а значит, строить более плотную карту

за меньшее время. Данные результаты позволяют утверждать, что применение

бинарных изображений оправдано и уместно в работе DSO SLAM.

ЗАКЛЮЧЕНИЕ

В рамках выпускной квалификационной работы были изучены существу-

ющие реализации алгоритмов безмаркерного трекинга. Рассмотрены их преиму-

щества и недостатки и выбран для дальнейшей модификации алгоритм прямой

разреженной локализации и одновременного построения карты – DSO SLAM.

Добавлено сохранение карты изучаемого пространства и её модификация. На

базе ORB SLAM изучен алгоритм замыкания петель и добавлен в DSO SLAM, в

качестве механизма повышения точности и надежности. Изучены нюансы при-

менения бинарных изображений для получения объёмной карты пространства и,

в результате их применения при детектировании ключевых точек, получен выиг-

рыш в быстродействии и информативности получаемой карты.

Page 53: J : K Q ? L G H I H Y K G B L ? E V A : I B K D · 2018. 7. 12. · Получение оценочного положения в пространстве на основе анализа

57

СПИСОК ИСПОЛЬЗОВАННЫХ ИСТОЧНИКОВ

1. Мясников В.Д. Модельно-ориентированный дескриптор поля градиента

как удобный аппарат распознавания и анализа цифровых изображений. Компь-

ютерная оптика, 2012.

2. Nishant Kejriwal, Swagat Kumar, Tomohiro Shibata High performance loop

closure detection using bag of word pairs. Robotics and Autonomous Systems, 2016.

3. Emilio Garcia-Fidalgoa, Alberto Ortiza Vision-based topological mapping and

localization methods: A survey. Preprint submitted to Robotics and Autonomous Sys-

tems, 2014.

4. Nicolò Valigi Simple bag-of-words loop closure for visual SLAM. Robotics for

developers Research, 2016.

5. Пелевин Е.Е., Балясный С.В. Использование метода Adaptive Threshold в

системе технического зрения, Т.: Технические науки, 2017.

6. Bergmann P., Wang R., Cremers D. Online Photometric Calibration of Auto Ex-

posure Video for Realtime Visual Odometry and SLAM. In IEEE Robotics and Auto-

mation Letters (RA-L), 2018.

7. Yang N., Wang R., Gao X., Cremers D. Challenges in Monocular Visual Odom-

etry: Photometric Calibration, Motion Bias and Rolling Shutter Effect. In IEEE Robot-

ics and Automation Letters (RA-L), 2018.

8. Engel J., Koltun V., Cremers D. Direct Sparse Odometry. In IEEE Transactions

on Pattern Analysis and Machine Intelligence, 2018

9. Engel J., Koltun V., Cremers D. Direct Sparse Odometry. In arXiv, 2016

10.Dorian Gálvez-López, Juan D. Tardós Bags of Binary Words for Fast Place

Recognition in Image Sequences. IEEE Transactions on Robotics, 2012.

11.Raúl Mur-Artal, J. M. M. Montiel, Juan D. Tardós ORB-SLAM: A Versatile and

Accurate Monocular SLAM System. IEEE Transactions on Robotics, 2015.

12.Boyd, S. and Vandenberghe, Convex Optimization. L.: Cambridge University

Press, 2004.

13.Haynsworth, E. V. On the Schur Complement. Basel Mathematical Notes, 1968.

Page 54: J : K Q ? L G H I H Y K G B L ? E V A : I B K D · 2018. 7. 12. · Получение оценочного положения в пространстве на основе анализа

58

14.Jin TU DSO 代码框架. [Электронный ресурс] //URL:

https://meta.tn/a/fc2433cf1a49888eb671e9cdbbfbdd8cd9203899bfcd48e151537a947

4d807db ( дата обращения: 12.04.2018)

15.Павлидис Т. Алгоритмы машинной графики и обработки изображений:

Пер. с англ. - М.: Радио и связь, 1986.

16.Роджерс Д., Адамс Дж. Математические основы машинной графики: Пер.

с англ. – М.: Мир, 2001.

17.Тихомиров Ю. Программирование трехмерной графики. – СПб: BHV –

Санкт-Петербург, 1998.

18.H. Strasdat, A.J. Davison, J.M.M. Montiel, and K. Konolige Double Window

Optimisation for Constant Time Visual SLAM Accepted for the IEEE International

Conference on Computer Vision (ICCV), 2011

19.J. Engel, T. Schöps, D. Cremers LSD-SLAM: Large-Scale Direct Monocular

SLAM . ECCV , 2014.

20.Стрелкова А.Н. Труфанов М.И. Титов Д.И. Способ калибровки дисторсии

оптико-электронного устройства [Электронный ресурс] //URL:

http://www.findpatent.ru/patent/232/2321888.html(дата посещения 11.04.18).

21.Берёзкин Е. Н. Курс теоретической механики — 2-е изд., пер. — М.: Изд-

во МГУ. 1974.

22. Scaramuzza D. Visual Odometry and SLAM: past, present, and the robust-per-

ception age. Robotics and Perception Group. 2016.

23.David G. Lowe Distinctive Image Features from Scale-Invariant Keypoints.

Computer Science Department University of British Columbia Vancouver, 2004.

Page 55: J : K Q ? L G H I H Y K G B L ? E V A : I B K D · 2018. 7. 12. · Получение оценочного положения в пространстве на основе анализа

59

ПРИЛОЖЕНИЕ A

Графические листы:

1. Цели и задачи

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

3. Реализации SLAM

4. Метод DSO-SLAM

5. Сохранение карты изучаемого пространства

6. Модификации карты изучаемого пространства

7. Алгоритм замыкания петель