Вы находитесь на странице: 1из 79

4

ОГЛАВЛЕНИЕ

ВВЕДЕНИЕ……………………………………………………………………….6
ГЛАВА 1…………………………………………………………………………..9
1.1 Основные понятия…………………………………………………………9
1.1.1 SLAM……………………………………...……..…….................……9
1.1.2 Bag of Words……………………………..…………………..……….20
1.1.3 Bundle Adjustment……………………..………………..……………18
1.1.4 Вычисление оптического потока
по методу Лукаса-Канаде………………...……………………………..…20
1.2 Анализ существующих подходов к VSLAM на основе локальных
признаков…..………………………………………………………………….23
ГЛАВА 2…………………………………………………………………………27
2.1 Прослеживание пар сопоставленных точек…………………………….27
2.2 Предлагаемый алгоритм…………………………………………………31
2.2.1 Основная схема……………………………………..……….……….31
2.2.2 Выделение точек и сопоставление точек…………...……………...35
2.2.3 Критерии отсева и триангуляция……………………...……………37
2.2.4 Оптимизация позы………………………………………...…………39
2.2.5 Узнавание точек……………………………………………...………41
2.3 Критерий довыделения ключевых точек………………………………..43
2.4 Критерий перевычисления дескрипторов……...……………………….49
2.5 Оптимизация карты………………………………………………………57
ГЛАВА 3…………………………………………………………………………60
3.1 Описание экспериментов………………………………………………...60
3.2 Применяемое оборудование…………………………………………….62
5

3.3 Выбранные для экспериментов общедоступные базы


стереоизображений…………………………………………………………..65
3.3.1 KITTI…………………………………………………………………65
3.3.2 EURoC ……………………………………………………………….66
ГЛАВА 4………………………………………………………………………...68
4.1 Результаты работы алгоритма в реальном времени…………………...68
4.2 Результаты работы алгоритма на общедоступных базах
стереопоследовательностей……………………………………………....…73
4.2.1 KITTI…………………………………………………………………73
4.2.2 EuRoc………………………………………………………………...75
ЗАКЛЮЧЕНИЕ………………………………………………………………...79
СПИСОК ЛИТЕРАТУРЫ…………………………………………………......81
6

ВВЕДЕНИЕ

В течение последнего десятилетия в подавляющем большинстве сфер и


направлений технологического развития, затрагивающих многие стороны
человеческой жизни: от умной бытовой техники до автопилотируемых средств
транспорта появляется необходимость в надёжных методах построения карты
окружающего пространства для последующей локализации и отслеживания
местанахождения в нём некотороых представляющих интерес объектов. С
ростом спроса на подобные технологии растёт и обилие исследований,
разработок по этой теме.
На момент написания данной работы уже существует широкий перечень
алгоритмов SLAM (Simultaneous localization and mapping - одновременная
локализация и построение карты), направленных на решение вопросов
затрагиваемой проблематики. Среди них существуют как варианты,
опирающиеся исключительно на информацию со стереокамеры, так и
варианты, комбинирующие данные, полученные с 2D-камеры, с данными,
полученными из дополнительных источников информации, таких как,
например, IMU (англ. Inertial measurement unit – инерциальное измерительное
устройство), лазерных сканеров, тактилных датчиков и других видов сенсоров.
В направлении SLAM, где применяется исключительно оптическая
информация (VSLAM – Visual SLAM), применяют различные методы
извлечения, описания и сопоставления признаков. Ключевые точки
выделяются на левом и правом кадре, вычисляются описывающие их вектора,
сопоставляются сначала внутри стереопары для осуществления их
триангуляции, а потом между стереопарами – для вычисления относительной
матрицы транформации, соответствующей пространственному сдвигу камеры
за временной интервал, вычисленный по временным меткам обрабатываемых
7

изображений. Получив такую матрицу, можно рассчитать абсолютные 3D-


координаты этих точек, а значит и разместить их в карте. Однако процедуры
извлечения и сопоставления признаков могут быть охарактеризованы как
вычислительно затратные, а значит их осуществление для каждой новой
приходящей стереопары представляет собой проблему, связанную с
быстродействием реализованного алгоритма.
Исходя из предположения о малом значении относительного изменения
позы камеры между доступными для обработки кадрами и малом значении
перепада яркости между ними, можно предположить, что может существовать
алгоритм VSLAM, использующий метод вычисления оптического потока по
методу Лукаса-Канаде для отождествления отслеживаемых ключевых
областей без необходимости их выделения и сопоставления для каждой
стереопары.
В данной работе будет предложен вариант такого алгоритма,
представлены результаты проведённых экспериментов, согласно выводам из
которых будут рассмотрены его ограничения и специфика применения.
Цель работы заключается в разработке и исследовании алгоритма
VSLAM, использующего метод вычисления оптического потока по методу
Лукаса-Канаде для сопоставления ключевых областей между поступающими
на вход стереокадрами. В соответствии с этой поставленной целью
формулируются следующие задачи:

- Обзор существующих решений и исследований;


- Разработка логической структуры алгоритма;
- Реализация и тестирование;
- Анализ промежуточных результатов и выявление слабых сторон
алгоритма;
8

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


алгоритма;
- Перепроектирование структуры алгоритма с учётом требуемых
изменений;
- Внедрение и тестирование;
- Анализ результатов.
9

ГЛАВА 1

1.1 Основные понятия

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


касающиеся методов построения карты в целом и предлагаемого в этой работе
варианта в частности. Будет раскрыто само понятие алгоритмов SLAM, а
также изложена основная суть широко использующихся в них методов,
которые, в том числе, являются неотъемлемой частью предлагаемого решения.
А именно, способ обнаружения мест замыкания траектории при помощи
вычисления так называемого “мешка слов” (Bag of Words) у отождествляемого
кадра и метод оптимизации получаемой карты посредством выравнивания
“пучков” (Bundle Adjustment) в целях минимизации ошибки репроекции
занесённых в карту точек. Помимо этого, будет кратко рассмотрено само
понятие оптического потока и применяемый способ его вычисления для
прослеживания точек, так как именно на этом основывается ключевая часть
предлагаемого алгоритма.

1.1.1 SLAM

Simultaneous Localization and Mapping (англ. Одновременные


локализация и построение карты) – задача в области навигации в
роботототехнике и других, смежных областях науки. Она состоит в создании
агентом карты незнакомого ему пространства и отслеживании им (агентом)
своего положения в нём [1-3]. Несмотря на кажущуюся невозможность
реализации алгоритма, одновременно редактирующего карту и
пользующегося ей для навигации, существует несколько общеизвестных
10

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


погрешности в условиях ограниченного времени и вычислительных ресурсов.
В основном алгоритмы SLAM создаются исходя из возможностей
доступного на практике оборудования, а значит не претендуют на идельную
точность результатов. Опубликованные на данный момент подходы находят
своё применение в самоуправляемых автомобилях, беспилотных летательных
аппаратах, автономных подводных суднах, планетоходах и небольших
бытовых роботах и даже в хирургии [4]. Задача SLAM заключается в том,
чтобы, опираясь на имеющиеся последовательные наблюдения, получаемые с
различных датчиков 𝑜𝑡 за некоторые отдельно взятые промежутки времени 𝑡,
вычислить приблизительные координаты агента 𝑥𝑡 и карту окружающей
сцены 𝑚𝑡 . Все эти виличины носят вероятностный характер, а значит можно
сказать, что задача состоит в вычислении: 𝑃(𝑚𝑡 , 𝑥𝑡 |𝑜1:𝑡 ). После применения
правила Байеса к этой формуле получается уравнение, позволяющее
вычислять каждое следующее значение апостериорной вероятности
положения агента:

𝑃(𝑥𝑡 |𝑜1:𝑡 , 𝑚𝑡 ) = ∑ 𝑃(𝑜𝑡 |𝑥𝑡 , 𝑚𝑡 ) ∑ 𝑃(𝑥𝑡 |𝑥𝑡−1 )𝑃 (𝑥𝑡−1 |𝑚𝑡 , 𝑜1:𝑡−1 )/𝑍,
𝑚𝑡−1 𝑥𝑡−1

где 𝑃(𝑥𝑡 |𝑥𝑡−1 ) − функция перемещения.


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

𝑃(𝑚𝑡 |𝑥𝑡 , 𝑜1:𝑡 ) = ∑ ∑ 𝑃(𝑚𝑡 |𝑥𝑡 , 𝑚𝑡−1 , 𝑜𝑡 )𝑃(𝑚𝑡−1 , 𝑥𝑡 |𝑜1:𝑡−1 , 𝑚𝑡−1 )


𝑥𝑡 𝑚𝑡

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


переменными, частное оптимальное решение может быть найдено при
помощи EM-алгоритма.
Статистические методы, использующиеся для аппроксимации
вышеуказанных уравнений, включают в себя такие методы Монте Карло, как:
11

фильтр Калмана и фильтр частиц. Они позволят вычислить приблизительное


значение функции апостериорной вероятности для положения робота и
конфигурации карты [5], [6]. Методы аппроксимации множеств,
основывающиеся на распространении ограничения интервалов, применяются
для нахождения множества, включающего в себя положение робота и
приближенное состояние карты [7], [8].
Методы оценки апостериорного максимума в целом и Bundle adjustment
в частности – это ещё один популярный подход, применяемый в SLAM,
использующем информацию с поступающих с камер изображений,
позволяющий аппроксимировать траекторию движения агента и положения
ключесвых точек карты в пространстве, что позволет улучшить качество
создаваемой карты. BA применяется в таких системах, как ARCore компании
Google, пришедшей на смену их предыдущему проекту дополненной
реальности Tango. Методы оценки апостериорного максимума помогают
вычислить наиболее вероятное обоснование наблюдаемых положений робота
и состояния карты, опираясь на данные с сенсоров, вместо того чтобы
пытаться найти всю функцию апотстериорной вероятности.
Алгоритмы SLAM и по сей день остаётся активной областью изысканий.
Зачастую почвой для подобных разработок становятся новые накладываемые
на алгоритм требования или предположения, диктуемые практическими
нуждами отрасли применения, либо связанные со спецификой используемого
оборудования. Большинство систем SLAM можно рассматривать именно в
контексте этих ограничений, взятых за основу при их проектировании.
Топологические карты – способ представления окружающего
пространства, отражающих общую структурную связность (топологию)
картографируемой среды, то есть не ставящих задачи построения
геометрически точной карты [9]. Методы на основе сетчатых карт, напротив,
12

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


дискретизированных ячеек (обычно кубических) и по ходу алгоритма строят
предположения об их заполненности. Для облегчения вычислений ячейки
считаются статистически независимыми между собой. При таком
предположении, 𝑃(𝑚𝑡 |𝑥𝑡 , 𝑚𝑡−1 , 𝑜𝑡 ) принимают значение 1 в случае, если
ячейки новой карты соответствуют наблюдению с сенсоров 𝑜𝑡 в положении 𝑥𝑡 ,
и 0, если не соответствуют.
Современные самоуправляемые автомобили в основном упрощают
задачу картографирования за счёт использования больших объемов заранее
собранной географической информации. Подобные массивы данных даже
могут включать в себя такие подробные данные, как, например, отдельные
элементы дорожной разметки, присутствующие на некотором участке карты,
или описание растительности по краям дороги. Также может использоваться
географически размеченная визуальная информация, такая, предоставляемая,
например, Google StreetView. В некоторых случаях такие подходы и вовсе
позволяют превратить задачу SLAM в простую задачу локализации в готовой
карте.
Алгоритмы SLAM обычно используют информацию с нескольких
различных типов сенсоров. Именно технологический прогресс в области
устройств-датчиков и служил зачастую двигателем новых технологий SLAM
[10]. Статистическая независимость показаний сенсоров – необходимое
условие, позволяющее бороться с дрейфом и зашумленностью получаемых на
вход данных. Разные виды используемых устройств порождают разные виды
SLAM, оперирующих на предположениях и ограничениях, наиболее
отвечающих именно этим типам устройств. Например, при использовании
лазерного сканирования получаемые облака точек столь плотны, что делают
задачу их выравнивания и соединения в цельную карту легко решаемой
13

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


использовании тактильных сенсоров эти облака, наоборот, весьма
разреженны, так как содержат лишь информацию о точках, находящихся в
непосредственной близости от агента, а значит здесь требуются заранее
заданные и более жёстко определённые модели движения.
Сенсорные модели SLAM делятся на оные, основанные на обработке
ключевых областей и основанные на обработке данных, получаемых
напрямую с датчиков. Ключевыми областями служат ярковыраженные
объекты сцены, местоположение которых может быть выявлено сенсором.
Ими могут быть, например, точки Wi-fi доступа или радио-маяки. А методы,
работающие с “сырыми” данными не используют предположений о наличии в
окружающей сцене таких областей.
В качестве оптических сенсоров могут использоваться одномерные и
двумерные лазерные дальномеры, 3D LIDAR высокого разрешения, 2D и 3D
сонары и, наконец, 2D-камеры (одна и более). Начиная с 2005 года в области
VSLAM (Visual SLAM) ведутся многочисленные исследования,
использующие именно обычные 2D-камеры в качестве основных сенсоров
VSLAM-устройства в виду увеличения степени их доступности и
распространённости на мобильных устройствах [11]. Визуальные LIDAR-
сенсоры позволяют получить достаточно информации о находящихся в
области их видимости объектах для извлечения из них ключевых областей.
Другие недавно возникшие виды SLAM включают в себя: тактильный SLAM,
SLAM [12], основанный на радарах [13], wifi-SLAM.
Для некоторых задач, где требуется локализация агента вне замкнутых
помещений, нужда в алгоритмах SLAM исчезла в виду существования
высокоточных GPS-сенсоров. С точки зрения SLAM их можно рассматривать
как датчики местоположения, степень достоверности результатов которых
14

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


вероятностного вывода. Однако GPS-сенсоры могут не работать в местах
вооружённых конфликтов, а именно такие места зачастую представляют
интерес с точки зрения робототехники.
Член 𝑃(𝑥𝑡 |𝑥𝑡−1 ), входящий в состав вышеуказанной формулы, отражает
кинематику используемой модели, обычно включающей в себя комманды,
посылаемые роботу. В эту модель могут быть встроены его возможности по
передвижению для повышения качества данных в условиях зашумлённости
показаний сенсоров. Динамическая модель достигает баланса, взвешивая
вклады всех датчиков, и формирует карту, отражающую положение и
ориентацию робота в пространстве как некоторое облако вероятностей. В
случае 2D-роботов кинематика описывается в виде комманд двух типов: о
повороте и о двежении вперёд, встраиваемых в модель с учётом шума в
показаниях, порождаемого мотором. К сожалению распределение,
формируемое независимыми шумами по значениям угла и смещения, не
отвечает нормальному (Гауссовому) закону, однако оно может быть им
аппроксимировано. Существует и альтернативный подход, член 𝑃(𝑥𝑡 |𝑥𝑡−1 )
может быть опущен, а данные одометрии, получаемые с колёс после каждой
команды интерпретированы как показания одного из сенсоров.
Замыкание петель – это задача распознавания уже посещённой агентом
ранее зоны окружающей сцены и последующей оптимизации уже построенной
до момента замыкания карты. Её решение может быть сопряжено с рядом
трудностей, связанных с возможным назначением низких значений приоров
местоположения в результате ошибок алгоритма или модели. Обычно методы
замыкания петель используют вторичный алгоритм, использующий
некоторый критерий сходства двух показаний датчиков и сбрасывающий
показания приоров в случае нахождения совпадения с одним из предыдущих
15

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


осуществлено при помощи так назывемого мешка слов (Bag of Words),
вектора, формируемого из выделенных на изображении признаков. При
нахождении достаточного количества общих слов между наблюдениями, их
можно считать принадлежными одной области карты.
Многие учёные и исследователи сталкиваются с проблемами при
попытках реализации алгоритмов SLAM на практике, так как для
картографирования достаточно обширных сцен требуется большая
вычислительная мощность, позволяющая принять и обработать такой объём
сенсорной информации [14]. Цитата статьи на эту тему, датируемой 2008
годом: “SLAM – одна из фундаментальных задач робототехники, при этом
создаётся такое впечатление, что все предложенные ныне подходы не
позволяют надёжно строить карты областей большого размера, в основном из-
за роста вычислительных затрат алгоритмов, а также из-за накоплении разного
рода ошибок и шума в уже сформированной карте” [15]. В основном
полноценные трёхмерные SLAM-решения, действительно, представляются
вычислительно требовательными, так как используют фильтры частиц,
различные дополнительные техники оптимизации карты и сложные
метрически-топологические представления наблюдений.
Роботы со встроенными вычислительными устройствами зачастую не
могут использовать полноценный SLAM именно по этой причине, так как
находятся в невыгодном положении относительно вычислительной мощности.
В 2007 году был представлен быстрый и легко переносимый алгоритм
OrthoSLAM, сводящий окружающую сцену к набору ортогональных
плоскостей [16]. Картографирование лишь таких плоскостей позволяет ему
достаточно близко воссоздать большую часть помещений. Таким образом,
OrthoSLAM сводит задачу SLAM к задаче линейной аппроксимации.
16

1.1.2 Bag of words

Модель “мешка слов” (Bag of Words) в контексте задач из области


компьютерного зрения обычно применяется для классификации изображений
путём представления извлечённых из них признаков в качестве слов. В сфере
обработки текста под вектором BoW подразумевают вектор, содержащий
число появлений слов в некотором блоке, то есть гистограмму над некоторым
словарём. В компьютерном зрении под термином “bag of visual words” (англ.
мешок визуальных слов) понимают аналогичный вектор частот появления
локальных признаков обрабатываемого изображения. Для представления
изображения в модели BoW можно интерпретировать его, как некоторый блок
текста. В таком случае, необходим метод выделения некоторых его частей в
качестве “слов”. Обычно это осуществляется в три шага: выделение
признаков, их описание и генерация словаря [22]. Можно сказать, что модель
BoW осуществляет трансформацию в гистограммное представление,
основанное на независимых признаках [23].
В результате выделения признаков каждое изображение оказывается
описано некоторым количеством его локальных областей. Методы
представления признаков далее используются для конвертирования этих
полученных областей в так называемые дескрипторы, вектора чисел,
содержащие описание характерных свойств некоторой ключевой области.
Хороший дескриптор должен быть в какой-то степени инвариантен к яркости,
повороту, масштабированию и аффинным преобразованиям. Одним из
популярных типов дескрипторов, например, является SIFT (Scale-invariant
feature transform) [24]. SIFT формирует из каждой ключевой области 128-
мерный вектор. Таким образом, при использовании этого типа дескриптора
17

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


мерных векторов чисел.
Финальный шаг BoW-модели состоит в трансформации полученных
векторов в “кодовые слова”. “Словом” в данном случае называется группа
достаточно схожих между собой ключевых областей. Для этой трансформации
можно использовать один из методов кластеризации образов, например, метод
k средних [25]. Кодовыми словами же, в таком случае, называют центры
получившихся кластеров. Тогда количество этих кластеров можно назвать
размером (или мощностью) словаря.
Таким образом каждая выделенная ключевая область оказывается
отнесённой к одному из кодовых слов из используемого BoW-словаря, что
позволяет получить искомую гистограмму.
18

1.1.3 Bundle Adjustment

Задача выравнивания пучков (Bundle Adjustment, далее BA) может быть


сформулирована, как задача одновременного уточнения 3д-координат
геометрии сцены, параметров относительного движения и оптических
характеристик камеры, использованной для получения обрабатываемых
изображений, запечатлевающих некоторые 3D-точки с разных ракурсов.
Уточнение происходит в соответствием с критерием оптимальности,
основанном на вычислении ошибки репроекции точек на наблюдающие их
кадры. Этот алгоритм получил своё название в честь пучков света,
отражающихся от элементов сцены и попадающих на оптический сенсор
камеры, именно за счет выравнивания этих пучков с учётом структурных
особенностей сцены и параметров наблюдения и достигается оптимальное
состояние системы.
BA почти всегда выступает в роле заключительного шага итерации
любого, основанного на выделении признаков алгоритма трёхмерной
реконструкции. Его назначение сводится к задаче оптимизации, поставленной
над 3D-структурой и параметрами её наблюдения (т.е. поза камеры,
калибровочные параметры, коэффициенты дисторсии), решение которой
позволит приблизить создаваемую алгоритмом карту к оптимальному виду с
учётом ограничивающих предположений и определённого уровня
зашумлённости данных [19]. Если ошибка на изображении распределена в
соответствии с гауссианой, математическое ожидание которой равно нулю, то
в таком случае BA выступает в качестве аппроксиматора максимума
правдоподобия [20].
Задача BA сводится к минимизации функции ошибки репроекции,
вычисляемой между наблюдаемыми и предсказанными 2D-координатами
19

ключевых точек, выражаемой в виде суммы квадратов большого количества


нелинейных вещественных функций. Поэтому минимизация осуществляется
при помощи нелинейных методов наименьших квадратов. Среди оных метод
Левенберга-Маркардта зарекомендовал себя как показывающий наиболее
успешные результаты, так как он относительно прост в реализации и
применяет эффективную стратегию погашения колебаний схождения, что
позволяет ему достаточно быстро сходится к решению в пределах широкого
диапазона возможных начальных значений. Итеративно линеаризуя
минимизируемую функцию в окрестности текущей предварительной оценки,
алгоритм Левенберга-Маркардта осуществляет решение линейных систем, а
именно, так называемых “нормальных уравнений“. В процессе решения
подзадач минимизации внутри алгоритма BA нормальные уравнения имеют
структуру достаточно разреженных блоков, это происходит из-за малой
взаимосвзянности параметров различных 3D-точек и камер. Этот факт может
быть использован для получения преимущества, состоящего в весьма
значительной экономии вычислительной мощности, так как в таких случаях
может быть применен разреженный вариант алгоритма Левенберга-
Маркардта, использующий паттерн нулей нормальных уравнений для того,
чтобы избегать операций над нулевыми элементами.
Алгоритм BA можно описать, как процесс взаимного выравнивания
приблизительных оценок структурных параметров сцены в целях нахождения
конфигурации, достаточно точно предсказывающей координаты
наблюдаемых точек на обрабатываемых изображениях.
Выражаясь более формально [21], положим, что есть 𝑛 точек, видимых
в 𝑚 наблюдениях, а 𝐱 𝑖𝑗 – проекция 𝑖-той точки на 𝑗-тое изображение. Пусть
переменная 𝑣𝑖𝑗 принимает значение 1, если 𝑖-тая точка зарегистрирована на 𝑗-
20

том изображении, в противном же случае она принимает значение 0. Также


предположим, что каждая камера 𝑗 параметризована вектором 𝒂𝑗 , а каждая 3D-
точка параметризована вектором 𝒃𝑖 . Алгоритм выравнивания пучков
минимизирует функцию общей ошибки репроекции относительно всех 3D-
точек и параметров камеры, а именно:
𝑛 𝑚
𝑚𝑖𝑛 2
𝒂𝑗 , 𝒃𝑖 ∑ ∑ 𝑣𝑖𝑗 𝑑(𝐐(𝒂𝑗 , 𝒃𝑖 ), 𝐱 𝑖𝑗 ) ,
𝑖=1 𝑗=1

где 𝐐(𝒂𝑗 , 𝒃𝑖 ) – предсказанная проекция точки 𝑖 на изображение 𝑗,


𝑑(𝑥, 𝑦) – евклидово расстояние между точками изображения,
представленными в виде векторов 𝑥 и 𝑦. Довольно очевидно, при этом, что BA
не только минимизирует физически значимый критерий, но и по определению
устойчив к отсутствию проекций некоторых точек.

1.1.4 Вычисление оптического потока по методу Лукаса-Канаде

В компьютерном зрении метод Лукаса-Канаде – это широко


применяемый дифференциальный метод вычисления оптического потока,
разработанный Брюсом Д. Лукасом и Т. Канаде. За основу алгоритма берётся
предположение о константности оптического потока в пределах локальной
окрестности некоторого пиксела, для всех соседних пикселов производится
решение основных уравнений оптического потока с применением критерия
наименьших квадратов [17], [18].
Совмещая информацию, полученную от нескольких соседствующих
пикселов, метод Лукаса-Канаде может разрешить заложенную в уравнения
неопределённость. Кроме того, этот подход в большей степени устойчив к
зашумлённости изображения, чем точечные методы. С другой стороны, так
21

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


областей, он не может вычислять оптический поток внутри однородных
участков изображения.
В метод Лукаса-Канаде заложено предположение о небольшой величине
общего сдвига между двумя кадрами, в локальной же области некоторой
рассматриваемой точки p он и вовсе считается константным. Таким образом,
можно считать, что уравнение оптического потока должно быть истинно для
всех точек внутри окна с центром в точке p. А именно, локальный вектор
скорости потока (𝑉𝑥 , 𝑉𝑦 ) должен удовлетворять:
𝐼𝑥 (𝑞1 )𝑉𝑥 + 𝐼𝑦 (𝑞1 )𝑉𝑦 = −𝐼𝑡 (𝑞1 )
𝐼𝑥 (𝑞2 )𝑉𝑥 + 𝐼𝑦 (𝑞2 )𝑉𝑦 = −𝐼𝑡 (𝑞2 )

𝐼𝑥 (𝑞𝑛 )𝑉𝑥 + 𝐼𝑦 (𝑞𝑛 )𝑉𝑦 = −𝐼𝑡 (𝑞𝑛 ),
где 𝑞1 , 𝑞2 , … , 𝑞𝑛 – пикселы внутри окна, а 𝐼𝑥 (𝑞1 ), 𝐼𝑦 (𝑞1 ), 𝐼𝑡 (𝑞1 ) – частные
производные изображения 𝐼 по положению 𝑥, 𝑦 и по времени 𝑡, вычисляемые
в точке 𝑞𝑖 в текущее время. Эти уравнения можно также записать в
матричном представлении 𝐴𝑣 = 𝑏, где
𝐼𝑥 (𝑞1 ) 𝐼𝑦 (𝑞1 ) −𝐼𝑡 (𝑞1 )
𝐼 (𝑞 ) 𝐼𝑦 (𝑞2 ) 𝑉𝑥 −𝐼 (𝑞 )
𝐴= 𝑥 2 𝑣 = [𝑉 ] 𝑏=[ 𝑡 2 ]
⋮ ⋮ 𝑦 ⋮
[𝐼𝑥 (𝑞𝑛 ) 𝐼𝑦 (𝑞𝑛 )] −𝐼𝑡 𝑛 )
(𝑞
Данная система имеет больше уравнений, чем неизвестных переменных.
Метод Лукаса-Канаде находит общее решение системы по принципу
наименьших квадратов. А именно, он решает систему 2 на 2:
𝐴𝑇 𝑉𝑣 = 𝐴𝑇 𝑏 или 𝑣 = (𝐴𝑇 𝐴)−1 𝐴𝑇 𝑏,
где 𝐴𝑇 – транспонированная матрица 𝐴. А значит в развернутом виде эта
система выглядит так:
22

−1
∑ 𝐼𝑥 (𝑞𝑖 )2 ∑ 𝐼𝑥 (𝑞𝑖 ) 𝐼𝑦 (𝑞𝑖 ) − ∑ 𝐼𝑥 (𝑞𝑖 ) 𝐼𝑡 (𝑞𝑖 )
𝑉𝑥 𝑖 𝑖 𝑖
[𝑉 ] = [ ] [ ],
𝑦 2
(𝑞 ) (𝑞
∑ 𝐼𝑦 𝑖 𝐼𝑥 𝑖 ) ∑ 𝐼𝑦 𝑖 (𝑞 ) − ∑ 𝐼𝑦 (𝑞𝑖 ) 𝐼𝑡 (𝑞𝑖 )
𝑖 𝑖 𝑖

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


проходят значения от 𝑖 = 1 до 𝑛. Матрица 𝐴𝑇 𝐴 часто называется
структурным тензором изображения в точке p.
23

1.2 Анализ существующих подходов к VSLAM на основе


локальных признаков

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


2003 году А. Дж. Дэвисоном и назван MonoSLAM [26]. MonoSLAM считается
характерным представителем методов на основе фильтров. В его алгоритме
движение камеры и структура карты аппроксимируются с использованием
расширенного фильтра Калмана. Движения камеры в шести степенях свободы
и 3D-положения ключевых точек представлены в виде вектора состояния
фильтра. В модель предсказания заложено предположение о равномерности
движения. И в зависимости от движения камеры в вектор состояния
добавляются новые ключевые точки. Инициализация карты происходит по
распознаванию некоторого заранее известного объекта. В алгоритме
задействованы признаки типа SURF (Speeded Up Robust Features – англ.
ускоренные устойчивые признаки), позволяющие выделять и сопоставлять
ключевые точки в несколько раз быстрее, чем SIFT, и обладают большей
устойчивостью к трансформациям изображения.
Проблемой такого подхода можно считать вычислительную сложность,
нарастающую с ростом размера картографируемой области. В случаях
объемных, открытых сцен вектор состояния становится очень большим из-за
огромного количества отслеживаемых ключевых точек, что не позволяет
применять этот метод в реальном времени. Кроме того, стоит упомянуть,
зависимость этого метода от начальных условий сцены, а именно
необходимость наличия в ней инициализирующего объекта.
Эта проблема была частично разрешена методом PTAM (Parallel
Tracking And Mapping) [27], в котором процесс трекинга и построения карты
были разделены на два параллельных потока, что снизило степень влияния
24

роста карты на скорость процесса вычисления положения камеры. Именно


такой структуры алгоритма продолжают придерживаться и современные
многопоточные алгоритмы VSLAM.
В PTAM исходная карты реконструируется по методу 5 точек [28]. В
процессе трекинга добавленные в карту точки проецируются на изображение
для осуществления отождествления им 2D-точек. Для их выделения
использовался детектор GFTT (Good Features To Track – англ. хорошо
подходящие для прослеживания признаки), использующий алгоритм Харриса
и метод распознавания углов для нахождения наиболее выразительных
ключевых областей изображения, а для описания – дескриптор BRISK (Binary
Robust Invariant Scalable Keypoints – англ. бинарные инвариантные
масштабируемые ключевые точки). 3D-координаты точек считаются после их
выделения в так называемых ключевых кадрах, характеризующихся
достаточным значением диспаратности, необходимым для произведения
триангуляции. Понятие ключевых кадров в контексте SLAM и использование
BA для оптимизации карты было впервые введено в PTAM. Именно
возможность обработки большого количества ключевых точек выгодно
отличает методы на основе BA от методов на основе фильтра Калмана.
Таким образом, геометрическая согласованность карты поддерживаетя
при помощи BA, проводимом на ключевых кадрах. Стоит заметить, что этот
метод оптимизации сопряжён с неизбежной проблемой локальных минимумов
из-за огромного количества оптимизируемых параметров. Для уменьшения
погрешности, привносимой этим обстоятельством в карту, используется Loop
Closing (англ. замыкание циклов). А именно, при возвращении камеры в уже
посещённое ранее место алгоритм замыкает карту и производит глобальное
выравнивание поз камер и ключевых точек посредством BA, что позволяет
частично коспенсировать накопившуюся в карте погрешность.
25

Одной из самых полных реализаций алгоритмов VSLAM долгое время


остаётся ORB-SLAM2, предложенный в 2016 году Р. Мюр-Арталом [29].
Помимо большого числа незначительных улучшений здесь был
имплементирован собственный детектор признаков для последующего их
описания при помощи дескриптора ORB (Oriented FAST and Rotated BRIEF –
англ. ориентированный FAST и повёрнутый BRIEF), обладающего
повышенной скоростью работы, и алгоритм замыкания циклов для
локализации и построения карты в реальном времени. Кроме того, была
добавлена возможность стерео-трекинга.
В 2017 году был предложен PRO-SLAM [30], представляющий скорее
инженерный интерес, так как в нём алгоритмы принципиально аналогичные
указанным выше были реализованы значительно меньшими ресурсами, при
этом показывая соизмеримые по качеству результаты.
Все упомянутые выше методы применяют выделение ключевых
областей и сопоставление их векторов признаков для каждого наблюдения,
содержащего старые отслеживаемые, либо новые триангулируемые точки. В
последующих главах данной работы будет предложен метод, позволяющий
пропускать эти вычислительно затратные процедуры на большинстве
итераций алгоритма.

Выводы по главе:
- Существует множество уже разработанных алгоритмов, относящихся
к группе визуальных методов SLAM;
- В каждом из них процедуры выделения, описания и сопоставления
ключевых областей происходят в каждом обрабатываемом кадре;
- Столь частого выполнения этих затратных процедур можно избежать
путём отслеживания пар сопоставленных точек;
26

- Это прослеживание может быть осуществлено при помощи метода


вычисления оптического потока Лукаса-Канаде [17].
27

ГЛАВА 2

2.1 Прослеживание пар сопоставленных точек

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


перепады яркости, значительный смаз, а временной интервал между ними
относительно невелик, можно предположить, что пара сопоставленных между
левым и правым кадрами точек после прослеживания по методу Лукаса-
Канаде по-прежнему будет содержать соответствующие друг другу ключевые
области. Взяв за основу эти предположения, а также постулировав, что вектор
оптического потока между двумя изображениями равен вектору приращения
их координат за промежуток времени между кадрами, можно доказать
возможность использования метода Лукаса-Канаде для прослеживания
ключевых областей между обрабатываемыми стереокадрами. Для этого
понадобится формула проекции 3D-точки на плоскость изображения:
𝑥
[ 𝑦 ] = 𝐾с 𝐻с 𝑋𝑝 ,
𝑤
где 𝐾с – калибровочная матрица камеры, 𝐻с – матрица гомографии,
содержащая некоторое положение камеры (то есть её текущий вектор
смещения 𝑡с и матрицу поворота 𝑅с ), а 𝑋𝑝 – 3D-координаты точки (𝑥, 𝑦, 𝑧, 1)𝑇 .
Спроецируем некоторую 3D-точку 𝑋𝑝 на плоскость левой камеры с
калибровочной матрицей 𝐾𝑙 в некотором положении 𝐻𝑙 :

𝑓𝑙𝑥 0 𝑐𝑙𝑥 1 0 0 𝑥 𝑓𝑙𝑥 𝑥 + 𝑐𝑙𝑥 𝑥𝑙


0 𝑦
𝐾𝑙 𝐻𝑙 𝑋𝑝 = [ 0 𝑓𝑙𝑦 𝑐𝑙𝑦 ] [0 1 0 0] [ 𝑧 ] = [𝑓𝑙𝑥 𝑦 + 𝑐𝑙𝑦 ] = [ 𝑦𝑙 ]
0 0 1 0 0 1 0 1 𝑧 𝑤𝑙
28

Тогда 2D-координаты точки будут таковы:


𝑓𝑙𝑥 𝑥 + 𝑐𝑥
𝑢𝑙 𝑧
𝑃𝑙 = [𝑣 ] = [ ]
𝑙 𝑓𝑙𝑥 𝑦 + 𝑐𝑦
𝑧
Аналогично, спроецируем ту же точку на правую камеру и получем её
2D-координаты. Стоит заметить, что правая матрица гомографии положения
камеры отличется от левой, так как правая камера отстоит от левой на
некоторое расстояние 𝑏, называемое стереобазой.
𝑓𝑟𝑥 0 𝑐𝑟𝑥 1 0 0 𝑏 𝑦 𝑥 𝑓𝑟𝑥 (𝑥 + 𝑏) + 𝑐𝑟𝑥 𝑥𝑟
𝐾𝑟 𝐻𝑟 𝑋𝑝 = [ 0 𝑓𝑟𝑦 𝑐𝑟𝑦 ] [0 1 0 0] [ 𝑧 ] = [ 𝑓𝑟𝑥 𝑦 + 𝑐𝑟𝑦 ] = [ 𝑦𝑟 ]
0 0 1 0 0 1 0 1 𝑧 𝑤𝑟
𝑓𝑟𝑥 𝑥 + 𝑓𝑟𝑥 𝑏 + 𝑐𝑟𝑥
𝑢𝑟 𝑧
𝑃𝑟 = [ 𝑣 ] = [ ]
𝑟 𝑓𝑟𝑥 + 𝑐𝑟𝑦
𝑦
𝑧
Теперь сдвинем стереокамеру и посчитаем новые положения левой и
правой проекций:
𝑓𝑙𝑥 0 𝑐𝑙𝑥 𝑟11 𝑟12 𝑟13 𝑡𝑙𝑥 𝑥
𝑦

𝐾𝑙 𝐻𝑙 𝑋𝑝 = [ 0 𝑓𝑙𝑦 𝑐𝑙𝑦 ] [𝑟21 𝑟22 𝑟23 𝑡𝑙𝑦 ] [ ]
𝑧
0 0 1 𝑟31 𝑟32 𝑟33 𝑡𝑙𝑧 1
𝑓𝑙𝑥 (𝑟11 𝑥 + 𝑟12 𝑦 + 𝑟13 𝑧 + 𝑡𝑙𝑥 ) + 𝑐𝑙𝑥 𝑥𝑙 ′
= [𝑓𝑙𝑥 (𝑟21 𝑥 + 𝑟22 𝑦 + 𝑟23 𝑧 + 𝑡𝑙𝑦 ) + 𝑐𝑙𝑦 ] = [ 𝑦𝑙 ′ ]
𝑟31 𝑥 + 𝑟32 𝑦 + 𝑟33 𝑧 + 𝑡𝑙𝑧 𝑤𝑙 ′
𝑓𝑟𝑥 (𝑟11 𝑥 + 𝑟12 𝑦 + 𝑟13 𝑧 + 𝑡𝑟𝑥 ) + 𝑐𝑟𝑥 𝑥𝑟 ′
𝐾𝑟 𝐻𝑟 ′ 𝑋𝑝 = [𝑓𝑟𝑥 (𝑟21 𝑥 + 𝑟22 𝑦 + 𝑟23 𝑧 + 𝑡𝑟𝑦 ) + 𝑐𝑟𝑦 ] = [ 𝑦𝑟 ′ ]
𝑟31 𝑥 + 𝑟32 𝑦 + 𝑟33 𝑧 + 𝑡𝑟𝑧 𝑤𝑟 ′
29

𝑥𝑙 ′ 𝑥𝑟 ′
𝑢𝑙 ′ 𝑤′ 𝑢𝑟 ′ 𝑤′
𝑃𝑙 = [ ′ ] = 𝑙′ ,

𝑃𝑟 = [ ′ ] = 𝑟′

𝑣𝑙 𝑦𝑙 𝑣𝑟 𝑦𝑟
[𝑤𝑙 ′ ] [𝑤𝑟 ′ ]
Тогда, если:
𝑥𝑙 ′ 𝑓𝑙𝑥 𝑥 + 𝑐𝑥

𝑉𝑙𝑥 𝑢𝑙 ′ − 𝑢𝑙 𝑤𝑙 ′ 𝑧 ∆𝑢
𝑉𝑙 = [𝑉 ] = [ ′ ]= ′ = [ 𝑙]
𝑙𝑦 𝑣𝑙 − 𝑣𝑙 𝑦𝑙 𝑓𝑙𝑥 𝑦 + 𝑐𝑦 ∆𝑣𝑙

[𝑤𝑙 ′ 𝑧 ]
𝑥𝑟 ′ 𝑓𝑟𝑥 𝑥 + 𝑓𝑟𝑥 𝑏 + 𝑐𝑟𝑥

𝑉𝑟𝑥 𝑢𝑟 ′ − 𝑢𝑟 𝑤𝑟 ′ 𝑧 ∆𝑢
𝑉𝑟 = [𝑉 ] = [ ′ ]= ′ = [ 𝑙]
𝑟𝑦 𝑣𝑟 − 𝑣𝑟 𝑦𝑟 𝑓𝑟𝑥 𝑦 + 𝑐𝑟𝑦 ∆𝑣𝑙

[ 𝑤𝑟 ′ 𝑤𝑟 ]
где 𝑉𝑙 и 𝑉𝑟 – вектора оптического потока между левым и правым кадрами
соответственно, то:
𝑢 + ∆𝑢𝑙 𝑢𝑙 + 𝑉𝑙𝑥
𝑃𝑙 ′ = [ 𝑙 ] = [𝑣 + 𝑉 ]
𝑣𝑙 + ∆𝑣𝑙 𝑙 𝑙𝑦

𝑢 + ∆𝑢𝑟 𝑢𝑟 + 𝑉𝑟𝑥
𝑃𝑟 ′ = [ 𝑟 ] = [𝑣 + 𝑉 ]
𝑣𝑟 + ∆𝑣𝑟 𝑟 𝑟𝑦

А значит, если допустить очевидную истинность того, что 2D-проекции


некоторых ключевых областей сцены при незначительном смещении камеры
так же незначительно меняют свой внешний вид, то должен существовать
метод их прослеживания между множественными стереокадрами при помощи
некоторого алгоритма вычисления оптического потока. На рисунке 1
представлена иллюстрация того, как точки прослеживаются при помощи
метода Лукаса-Канаде и оставляют за собой следы, соответствующие их 2D-
траекториям.
30

Рис 1 – Иллюстрация прослеживания пар 2D-точек между стереоизображениями.


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

2.2 Предлагаемый алгоритм

В данном разделе будет описан предлагаемый алгоритм, созданный на


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

2.2.1 Основная схема

Основным отличием алгоритма от ближайших аналогов, как уже было


упомянуто в первой главе, выступает отсутствие необходимости выделения
новых ключевых точек на каждой следующей стереопаре. Это преимущество
позволяет не выполнять вычислительно затратные процедуры выделения и
сопоставления ключевых точек на большинстве итераций. Схема алгоритма,
созданного с учётом этого отличия представлена ниже на рисунке 3, а на
рисунке 2 показана схема ближайшего аналога – алгоритма ORB-SLAM2.

Рис 2 – Схема алгоритма ORB-SLAM2.


32

Рис 3 – Cхема предлагаемого алгоритма.

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


обратить внимание на нововведения алгоритма, внесённых в структуру ввиду
его специфики. Для наглядности эти нововведения помечены зелёным цветом
на предложенной схеме.
Первым из них выступает наличие процедуры прослеживания, суть
которой заключается в нахождении новых положений присутствующих на
предыдущей стереопаре 2D-точек при помощи вычисления оптического
потока по методу Лукаса-Канаде. Важно заметить, что она полностью
заменяет собой процедуру сопоставления точек между стереопарами, которая
есть на исходной схеме.
Во-вторых, был добавлен условный переход, определяющий
33

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


стереопаре на основе некоторого критерия. Очевидно, что его отсутствие на
первой схеме подразумевает необходимость выполнения значительной части
алгоритма, захватываемой этим переходом, на каждой итерации, когда как на
новой схеме эта часть может иногда, а точнее, чаще всего, вообще не
выполняться. Несмотря на простоту, которой, кажется, может обладать такой
критерий (например, обычный фиксированный порог по числу оставшихся
точек), его создание на самом деле представляет собой не столь тривиальную
задачу.
В-третьих, из-за особенностей разбираемого алгоритма отдельно взятая
ключевая точка оказывается описана некоторым вектором признаком отнюдь
не во всех своих наблюдениях, так как не на каждом стереокадре, где она
присутствует, происходила процедура сопоставления признаков, а значит и не
было необходимости вычислять дескрипторы соответствующих ключевых
областей. Это нежелательная ситуация, потому что некоторые процедуры
алгоритма, такие как: узнавание точек локальной карты и замыкание циклов,
осуществляют дополнительные сопоставления векторов признаков. И во
время одного из таких сопоставлений дескриптор некоторой точки может
оказаться “неактуальным”, несоответствующим внешнему виду локальной
области отдельно взятого наблюдения, так как вычислен он был задолго до
текущего кадра, при последнем выделении точек, а с тех пор ракурс мог
значительно измениться, наложив слабоафинные преобразования на эту
область. Как вариант, можно их всё же вычислять и сохранять, но, как уже
было сказано, процесс описания ключевых областей представляется весьма
затратным, а значит его избыточный запуск нежелателен. В таком случае,
возникает необходимость в неком критерии перевычисления отдельных
дескрипторов.
34

Более подробно проблематика критериев довыделения ключевых точек


и перевычисления дескрипторов будет затронута в соответствующих разделах
этой главы.
Помимо этих трёх важных отличий, можно заметить одно менее
значительное. А именно, инициализация происходит в случае набора
достаточного числа не просто выделенных и сопоставленных, но и прошедших
порог триангуляции пар точек. Эта мера позволяет предотвратить ситуацию,
когда было найдено много пар ключевых точек, но большая часть из них была
выделена на столь удалённых или, наоборот, близких объектах, что стереобазы
или фокусного расстояния используемой стереокамеры оказывается
недостаточно для качественного их отслеживания, и в итоге большая их часть
очень быстро теряется. А при подходе, указанном на новой схеме, такая
ситуация невозможна, так как такие точки будут отсеяны, и инициализация не
произойдёт.

2.2.2 Выделение и сопоставление точек

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


решение использовать FAST (Features from Accelerated Segment Test – англ.
признаки, извлечённые при помощи ускоренной сегментной проверки), а в
качестве дескриптора – ORB. Выбор пал именно на них ввиду их высокой
скорости вычисления, позволяющей не тормозить остальные процедуры
алгоритма, и относительно качественными результатами, выражающихся в
достаточно большом количестве верных сопоставлений. Конечно, эти
особенности, выгодно отличающие ORB на фоне ближайших аналогов, имеют
и обратную сторону. А именно, этот используемый в предлагаемом алгоритме
дескриптор отнюдь не является устойчивым к слабоаффинным
35

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


прослеживании во время того, как камера меняет ракурс наблюдения этих
областей. Этот недостаток, к счастью, можно частично покрыть при помощи
своевременного перевычисления дескрипторов, описанного подробнее в
последующих разделах. Однако это решение нельзя назвать панацеей, так как
перевычисленными дескрипторами будут обладать только точки, которые
наблюдались с соответствующих ракурсов на протяжении процесса
построения карты. Если же точка наблюдается с некоторого ракурса впервые
и при этом ещё не была отождествлена со своей первоначально выделенной
копией, то, скорее всего, узнана она уже не будет, что породит локальное
дублирование карты. Описанный выше эффект можно отнести к слабым
сторонам предлагаемого алгоритма.
Важным условием, накладываемым на поступающие на вход алгоритма
стереопары, является отстутсвие на них искажений, связанных с дисторсией
линз камер, а также их обязательная ректифицированность. В противном
случае, используемый метод сопоставления даст на выходе значительно
меньше пар ключевых точек, которые, даже если пройдут отсевы, будут
неверно триангулированы.
Помимо обязательной ректификации входные изображения также могут
проходить дополнительную предобработку, позволяющую извлечь больше
характерных признаков. А чем больше признаков выделено, тем больше
потенциальное число найденных сопоставлений, рост количества которых
повышает точность вычисления относительной позы камеры, а значит и
повышает качество создаваемой карты.
36

Рис 4 – Результаты выделения и сопоставления ключевых точек.


Слева – без предобработки (160 точек), справа - с предобработкой CLAHE (303 точки).

На рисунке 4 можно увидеть пример положительного эффекта, оказываемого


предобработкой по методу CLAHE (Contrast limited adaptive histogram
equalization) [31]. Каждая из цветных точек изображения имеет пару на правом
кадре стереопары.
В пункт “Выделение точек” основной схемы также входит и процесс
вычисления их ORB-дескрипторов. Но важно заметить, что в случае
использования одного из методов предобработки, трансформированные
изображения должны применяться исключительно для выделения ключевых
точек, но не для вычисления их векторов признаков, так как в результате
предобработки представляющие интерес локальные области могут
претерпевать искажения, способные помешать будущему отождествлению
уже добавленных в карту точек.
37

2.2.3 Критерии отсева и триангуляция

После каждой операции выделения и сопоставления точек


получившиеся пары должны проходить дополнительный отсев во избежание
добавления неверно триангулированных точек в карту. В предлагаемом
алгоритме предусмотрено несколько уровней отсева точек. Первый из них –
отсев по методу RANSAC. На основе полученных пар точек аппроксимируется
фундаментальная матрица, затем не удовлетворяющие ей точки
отбрасываются. Помимо отсева сопоставлений внутри стереопары, этот метод
также применяется для отбора корректных прослеженных при помощи
оптического потока пар ключевых точек.
Как уже упоминалось в предыдущем подразделе, обязательным
требованием к подаваемым на вход изображениям является их
ректифицированность. Имея в виду это условие, можно использовать его как
дополнительное ограничение, накладываемое на сопоставленные пары. А
именно, любая пара, точки которой отстоят по вертикали на расстояние,
превышающее некоторый заданый порог, может считаться неверно
сопоставленной и быть отброшенной, так как, учитывая взаимное
расположение левой и правой камер, положения 2D-точек должны отличаться
лишь по горизонтальной составляющей, если ректификация была произведена
без ошибок.
При условии, что полученные пары 2D-точек были выделены на
изображениях, прошедших всю необходимую предобработку, триангуляция
полученных точек осуществляется при помощи формулы:
38

𝑏(𝑢 − 𝑐𝑥 )
𝐷
𝑥
𝑏𝑓𝑥 (𝑣 − 𝑐𝑦 )
𝑦
X𝑝 = [ 𝑧 ] = 𝐷𝑓𝑦
𝑤 𝑏𝑓𝑥
𝐷
[ 1 ]

Получив положение точки в трёхмерном пространстве в виде однородных


координат, можно поделить 𝑥, 𝑦 и 𝑧 на компоненту 𝑤 и тем самым перевести
его в декартову систему координат для последующего добавления в карту.
Эта процедура может также рассмотриваться в качестве одного из
применяемых критериев отсева сопоставленных ключевых областей.
Например, получение отрицательного значения на месте координаты 𝑧,
неопровержимо свидетельствует о некорректности подлежащей проверке
пары точек. Кроме этого, при наличии информации о стереобазе использумеой
между камерами, их фокусном расстоянии и разрешении получаемых
изображений, можно сделать предположение о минимальном и максимальном
расстоянии до точек, координаты которых могут вычислены с некоторой
минимально необходимой точностью. А значит в случае получения в
результате триангуляци координат, не отвечающих пределам допустимой
дальности, пара точек также может быть исключена из рассмотрения.
39

2.2.4 Оптимизация позы

Оптимизацией позы в контексте описываемого в данном разделе


алгоритма называется процесс нахождения относительной матрицы
трансформации, преобразующей положение камеры в момент снятия
предыдущего стереокадра в положение камеры в момент снятия текущего.
Вычисляется она с использованием некоторого алгоритма оптимизации,
минимизирующего ошибку репроекции 3D-точек на соответствующие им
прослеженные 2D-точки. Посредством итеративного отсева оптимизатор
добивается максимально возможного числа точек, удовлетворяющих
заданному порогу ошибки репроекции, так как точность вычисления
относительной матрицы трансформации прямопропорциональна итоговому
количеству прошедших этот отсев точек. Иными словами, чем больше точек
было передано на вход алгоритму оптимизации, тем более исчерпывающе
описана решаемая им задача, тем точнее будет достигнутое решение.
На рисунке 5 схематично показан процесс оптимизации позы.
40

Рис 5 – Оптимизация позы.


Синий – проекции точек на исходное положение камеры (𝐶1 ),
зелёный – проекции точек на новое предполагаемое положение камеры (𝐶2 ),
удовлетворяющие порогу ошибки репроекции, красный – не удовлетворяющие.

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


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

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


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

2.2.5 Узнавание точек

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


добавленные в карту точки могут быть выделены повторно и продублировать
свои ранее обработанные аналоги. Этот эффект нежелателен и ведёт, во-
первых, к понижению качества карты, и, во-вторых, к возможному её
переполнению, что негативно отразится на производительности алгоритма.
Для борбы с этой проблемой в алгоритме присутствует механизм узнавания .
Для контроля связанности наблюдений в алгоритме используется граф
совидимости, создаваемый на основе конкретных точек, наблюдаемых в
кадрах. При наличии достаточного количества общих ключевых точек между
двумя наблюдениями налаживается связь в таком графе, отражающая их
схожесть и ассоциирующая их с одним и тем же местом окружающей сцены.
Это позволяет производить поиск среди кадров и точек, представляющих
интерес в рамках некоторого отдельно взятого шага алгоритма. В частности,
наличие графа совидимости даёт возможность построения так называемой
локальной карты, представляющей из себя совокупность наблюдений, в
которых запечатлены те же точки, что и в текущем кадре, а так ж
е их непосредственных соседей. После составления списка подпадающих под
42

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


проецируются на текущую стереопару. В случае удовлетворения точкой двум
условиям: близость её 2D-проекции к проекции нововыделенной точки и их
взаимная близость в пространстве признаков, она считается узнанной и не
будет триангулирована и добавлена в карту ещё раз. На рисунке 6
представлена иллюстрация этого процесса.

Рис 6 – Узнавание точек.


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

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


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

2.3 Критерий довыделения ключевых точек

В процессе построения карты при использовании метода прослеживания


точек при помощи вычисления соответствующих им векторов оптического
потока встаёт вопрос о том, как часто и при каких условиях запускать
процедуру выделения ключевых точек. Причём, слишком частое довыделение
может привести к значительному замедлению алгоритма и потере всех
преимуществ, связанных с малой вычислительной затратностью, а слишком
редкое – к неточной карте или вовсе к потере трекинга, а следовательно и к
полной остановке процесса её построения. А значит, необходим надёжный и
достаточно интеллектуальный критерий, позволяющий производить
выделение точек с оптимальной, соответствующей текущей скорости
смещения наблюдаемой области окружающей сцены периодичностью.
В процессе разработки и тестирования описываемого алгоритма было
экспериментально проверено три критерия довыделения: периодический,
пороговый и по соотношению.
Периодический - самый простой критерий довыделения. Точки
выделяются регулярно через заданный интервал времени. Если установить
длину этого интервала в значение, равное длине промежутка между
поступающими на вход стереопарами, полученный вариант трекинга будет
выделять новые точки на каждом новом стереокадре, при этом прослеживая
уже выделенные до тех пор, пока они не выйдут за пределы кадра.
При использовании порогового критерия подсчитывается число
прошедших все отсевы точек, после чего результат сравнивается с некоторым
пороговым значением. В случае, если порог превышает полученное
количество, происходит довыделение новых ключевых точек.
44

В критерии по соотношению, как и в пороговом критерии,


подсчитывается число “хороших” точек 𝑁, после чего оно делится на их
количество, наблюдавшееся сразу после последнего выделения, 𝑀.
𝑁
Получившееся соотношение сравнивается с некоторым заданным порогом.
𝑀
В ходе данной работы были проведены эксперименты с использованием
разных критериев довыделения. В данной главе будут представлены их
результаты.

Рис. 7 – График зависимости количества отслеживаемых кл. точек от времени (сверху),


график зависимости числа отсеянных точек от времени (снизу).
Критерий довыделения: периодический (раз в секунду).
На верхнем графике: Синий – число точек, прошедших отсев по всем критериям, рыжий –
число вышедших за кадр точек, серый – число отсеянных точек, жёлтый - число
довыделенных точек.
На нижнем графике: Синий – число отсеянных по оптическому потоку точек, рыжий –
число отсеянных методом RANSAC, серый – число отсеянных по эпиполярному
ограничению, жёлтый - число отсеянных по триангуляции, темно-синий – число
отсеянных в процессе оптимизации позы.

На рисунке 7 представлено два графика: зависимости количества


отслеживаемых ключевых точек от времени и зависимости числа отсеянных
45

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


критерий с длиной интервала, равной одной секунде. Как видно из верхнего
графика, в какой-то момент число точек, проходящих все проверки, упало до
нуля, после чего оно долго не поднималось. Это число снова увеличилось
только в момент, когда последовательность дошла до уже запечатленного на
более ранних кадрах места. Логично предположить, что это произошло из-за
того, что применяемый здесь критерий не зависит от текущего числа
качественных точек, их число начало резко падать, а время следующего
довыделения ещё не пришло, и все точки были утеряны.

Рис. 8 – График зависимости количества отслеживаемых кл. точек от времени (сверху),


график зависимости числа отсеянных точек от времени (снизу).
Критерий довыделения: периодический (каждые 300 миллисекунд)

На рисунке 8 представлены результаты следующего эксперимента, где


длина используемого критерием интервала была сокращена до 300
миллисекунд. Как видно, в этот раз число точек продержалось несколько
дольше, но всё равно в какой-то момент упало до нуля. Такой результат
46

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


критерий вообще не учитывает текущее состояние трекинга.

Рис. 9 – График зависимости количества отслеживаемых кл. точек от времени (сверху),


график зависимости числа отсеянных точек от времени (снизу).
Критерий довыделения: пороговый (порог: 150 точек)

На рисунке 9 показаны графики, полученные в эксперименте, в течение


которого использовался пороговый критерий. Значение порога было
установлено в значение 150. Как можно заметить, число отслеживаемых точек
выглядит гораздо стабильнее, чем на предыдущих экспериментах. Как только
их становится слишком мало, срабатывает пороговый критерий и добавляются
новые точки. Однако есть подозрение, что теперь довыделение срабатывает
слишком часто, что понижает производительность алгоритма.
47

Рис. 10 – График зависимости количества отслеживаемых кл. точек от времени (сверху),


график зависимости числа отсеянных точек от времени (снизу).
Критерий довыделения: по соотношению (порог: 0,3)

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


по соотношению. Как видно на графике, число отслеживаемых точек до нуля
не опускалось и держалось довольно стабилно на протяжении всей
последовательности. Базовый порог был установлен в значение 0,3.
Результаты аналогичного эксперимента, но с пониженным порогом
представлены на рисунке 11. Картина в целом вполне схожая, только график
заметно “чище”, что говорит о том, что довыделение срабатывало немного
реже, чем в предыдущем эксперименте.
48

Рис. 11 – График зависимости количества отслеживаемых кл. точек от времени (сверху),


график зависимости числа отсеянных точек от времени (снизу).
Критерий довыделения: по соотношению (порог: 0,2)

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


не улучшили. Похоже, что именно значение, равное 0,2, даёт наилучшие
результаты на конкретной стереопоследовательности.
Исходя их этих результатов, можно заключить, что использование
критерия довыделения ключевых точек по соотношению является
предпочтительным на фоне применения остальных двух вариантов критериев,
по крайней мере, на конкретной стереопоследовательности. Более того,
тестирование показало, что на подавляющем большинстве
последовательностей именно этот вид критерия показывал наиболее
качественные результаты. Отрицательной стороной использования такого
критерия является необходимость подбора значения введённого порога.
Метод автоматического вычисления данного порога можеть стать темой
будущих исследований.
49

2.4 Критерий перевычисления дескрипторов

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


алгоритма, связанной с использованием оптического потока для
прослеживания ключевых точек, возникает необходимость в перевычислении
дескрипторов некоторых отдельно взятых точек, локальная область которых
значительно поменяла внешний вид при смене ракурса камеры.
В качестве критерия перевычисления дескриптора точки было решено
использовать некоторую меру, отражающую степень отличия ракурсов её
наблюдения камерой в момент вычисления дескриптора.
Вполне очевидно, что, так как выделяемые во время трекинга точки
лежат на плоскостях объектов окружающей сцены, и внешний вид этих
плоскостей может значительно отличаться при их обозрении с разных
ракурсов, значит может значительно отличаться и дескриптор,
соответствующей им 2D-точки.

Рис. 12 – Схема наблюдения ключевой точки k камерой с ракурса С1.


Угол α показывает доступные пределы изменения угла наблюдения этой точки,
при которых не возникает необходимости перевычислять её дескриптор.
50

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


точки k камерой в положении C1 (вид сверху). Пределы возможного изменения
угла наблюдения этой точки до того, как дескриптор должен быть
перевычислен, помечены углом α.

Рис. 13 – Схема наблюдения ключевой точки k камерой с нового ракурса С2,


имеющего отклонение от предыдущего угла наблюдения большее, чем угол α.

На рисунке 13 показана ситуация, когда заданный порог отклонения


угла наблюдения α был превышен на величину ε, а значит точке должен быть
присвоен новый вычисленный дескриптор.
Помимо угла наблюдения на внешний вид точки может заметно влиять
расстояние от неё до запечатлевающей её камеры.
51

Рис. 14 – Схема наблюдения ключевой точки k камерой, находящейся на расстоянии r1 от


неё, с ракурса С1. Величина d показывает доступные пределы изменения дальности
наблюдения этой точки, при которых не возникает необходимости перевычислять её
дескриптор.

На рисунке 14 показана схема наблюдения отдельно взятой


ключевой точки k камерой в положении C1. Пределы возможного изменения
дальности наблюдения этой точки до того, как дескриптор должен быть
перевычислен, помечены величиной d.

Рис. 15 – Схема наблюдения ключевой точки k камерой с ракурса С1.


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

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


котором вычисление нового дескриптора точки не требуется. В трёхмерном
пространстве эта область имеет форму фигуры, представляющей из себя
разность двух шаровых секторов, радиус которых различается на удвоенную
величину d, а угол, образуемый высотой и боковым ребром одного из них,
равен ранее упомянутому углу α. Таким образом, параметризуемая этими
двумя величинами область, задаёт искомый критерий необходимости
перевычисления дескриптора ключевой точки.

Рис. 16 – Схема наблюдения ключевой точки k камерой с разных ракурсов.


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

На рисунке 16 показан пример применения описанного выше критерия.


Ракурсы C4 и C5 вызовут перевычисление дескриптора ключевой точки k. Для
каждого из этих ракурсов будет создана новая область “актуальности”,
соответствующего им дескриптора. Результат добавления новых областей
показан на рисунке 16.
53

Рис. 17 – Схема наблюдения ключевой точки k камерой с трёх разных ракурсов.


Каждому из этих ракурсов соответствует своя область “актуальности” дескриптора.

Как видно на рисунке 17, результирующие области могут пересекаться


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

Рис. 18 – Схема зон использования дескрипторов, соответствующих ракурсам камеры,


показанных на рисунке 15. Красный цвет - зона ракурса C1, зелёный – зона ракурса C5,
синий – зона ракурса C4.
54

На рисунке 18 показаны области, отражающие выбор дескриптора ключевой


точки при использовании алгоритма, отдающего приоритет важности степени
отклонения угла наблюдения между ракурсами.
На рисунке 19 представлен график, демонстрирующий рост числа
узнаваний ключевых точек карты с понижением введённого порога
отклонения угла наблюдения α. Стоит заметить, что измерение производилось
на последовательности, где камера вращалась вокруг некоторой сцены,
ключевые точки которой постоянно меняли внешний вид из-за
слабоаффинных преобразований ввиду значительно изменения ракурса их
наблюдения.

1800
1700
1600
1500
1400
1300
1200
1100
1000
35 34 33 32 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0

Рис. 19 – График зависимости числа успешных узнаваний ключевых точек


от значения порога отклонения угла наблюдения.
По вертикали – число узнаваний, по горизонтали – угол α (в градусах)

Как видно, значения порога, не превышающие 7-ми градусов, почти не дают


прироста числа узнаваний. Далее, по мере приближения порога к нулю это
число резко растёт вплоть до максимального значения, равного 1744-м
узнаваниям, достигаемого при перевычислении дескрипторов на каждой
итерации.
На рисунке 20 показан график, аналогично демонстрирующий рост
55

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


порога, регулирующего перевычисление в случае изменение масштаба
ключевой области. Измерение производилось на последовательности, где
значительно менялось расстояние до наблюдаемых точек, но не угол их
наблюдения и где использование порога по отклонению угла не давало
результатов. Важно заметить, что значение порога для каждого отдельно
взятого ракурса наблюдения вычисляется с использованием коэффициента
масштабирования s, при превышении которого провоцируется
перевычисление. А именно, перевычисление происходит в случае, если ни
одно из предыдущих наблюдений не удовлетворяет условию:
𝑟 𝑟 1
<𝑠 и >𝑠,
𝑟𝑖 𝑟𝑖

где r – расстояние до точки из текущего положения камеры, а ri – расстояние


до точки из i-ого наблюдения.

1300
1200
1100
1000
900
800
700
600
500
2.5 2.4 2.4 2.3 2.3 2.2 2.1 2.1 2.0 1.9 1.9 1.8 1.8 1.7 1.6 1.6 1.5 1.4 1.4 1.3 1.3 1.2 1.1 1.1 1.0

Рис. 20 – График зависимости числа успешных узнаваний ключевых точек


от значения порога отклонения расстояния наблюдения.
По вертикали – число узнаваний, по горизонтали – коэффициент масштабирования s.

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


лишь при минимальном значении исследуемого порога, что вполне логично.
56

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


расстояния наблюдения также положительно сказывается на количестве
успешных отождествлений.
Число узнанных точек напрямую влияет на качество построения карты,
так как, чем больше точек будет успешно узнано, тем меньше их будет
продублировано в карте. Из этого можно сделать вывод о том, что введённый
критерий перевычисления работает и положительно сказывается на качестве
создаваемой карты при определённых значениях порогов.
Подбор значений этих порогов должен осуществляться с учётом
производительности алгоритма, так как при значениях, соответствующих
наибольшему числу узнаваний, она значительно снизится и алгоритм потеряет
свои преимущества, вычисляя дескрипторы на каждой итерации
57

2.5 Оптимизация карты

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


процессу оптимизации карты в схожих VSLAM-системах, таких как, например
ORB-SLAM2. Поэтому он не будет описан излишне подробно, в данном
разделе будет дан лишь краткий обзор трёх основных методов оптимизации:
объединение точек, локальная оптимизация и замыкание циклов.
Объединение точек – процесс совмещения некоторых 3D-точек в одну
по причине их близости в карте и в пространстве признаков. В пределах
наблюдений, находящихся по соседству в графе совидимости, происходит
взаимное проецирование наблюдаемых в них точек. В случае совпадения
проекций некоторой 3D-точки с одной из пар 2D-точек кадра проверяется их
взаимное расстояние в пространстве признаков. Если порог сходства
оказывается пройден, эти 3D-точки объявляются одной и той же точкой, а
вторая удаляется из карты. При этом во всех наблюдениях, в которых есть
связь с одной из них, теперь налаживается связь с оставшейся точкой. Этот
процесс весьма схож с процессом узнавания точек, только вместо того, чтобы
узнавать старые точки в новом наблюдении, он, наоборот, узнаёт более новые
точки в более старых.
Локальная оптимизация – оптимизация наблюдений, признанных
локальными по отношению к текущему кадру, составляющими локальную
карту. Они передаются в алгоритм оптимизации, совершающий BA на этой
группе кадров, входящих в неё. Использование такого подхода позволяет
значительно увеличить качество создаваемой карты. Таким образом, чем
больше раз наблюдалась некоторая точка, тем больше раз она участвовала в
процессе локальной оптимизации, а значит, тем точнее и её найденные 3D-
58

координаты.
Замыкание циклов – процесс поиска совпадающих ключевых точек с
ранее занесёнными в карту. При помощи BoW-вектора, вычисляемого для
текущего кадра, алгорим формирует список наблюдений-кандидатов, в
которых потенциально будут найдены точки, аналогичные текущим. При
успешном нахождении общих точек с одним из таких кандидатов,
вычисляется матрица относительного преобразования из положения камеры,
соответствующего кадру-кандидату в текущее положения камеры. После
этого происходит объединение узнанных точек, а затем полная оптимизация
карты при помощи BA. Замыкание циклов позволяет компенсировать ошибку,
накопленную в карте за время, затраченное на пролёт камеры по кругу. Стоит
заметить, что факт срабатывания такого замыкания может служить неплохим
критерием завершения построения карты, так как после нахождения нового
независимого наблюдения некоторых точек и минимизации ошибки
репроекции на всех кадрах карта находится в состоянии локального минимума
функции суммарной ошибки.

Выводы по главе:
- Предложенный алгоритм обладает преимуществом, связанным с
отсутствием необходимости выделения, описания и сопоставления ключевых
областей на каждом новом стереокадре, но требует введения двух
вспомогательных критериев: довыделения точек и перевычисления
дескрипторов;
- Среди трёх введенных и исследованных типов критериев довыделения
точек наиболее гибким оказался критерий по соотношению, именно ему было
отдано предпочтение при реализации алгоритма;
59

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


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

ГЛАВА 3

3.1 Описание экспериментов

В данной главе будет представлено описание проведённых с


использованием созданного в рамках данной работы алгоритма
экспериментов, использованного оборудования и выбранных общедоступных
баз стереоизобажений.
Описанный в предыдущих главах алгоритм был реализован на языке
C++ с использованием библиотек: OpenCV, fbow и g2o. OpenCV – самая
популярная библиотека классов для решения задач в области компьютерного
зрения и обработки изображений. Fbow – ускоренная версия библиотеки
DBoW, позволяющей осуществлять формирование BoW-словаря и мешка
слов, проводить с их помощью поиск среди добавленных в карту стереокадров.
G2O – библиотека, позволяющая формулировать задачи оптимизации в виде
фактор-графа. На её основе были реализованы используемые в алгоритме
механизмы оптимизации карты.
Тестирование описанного в предыдущих главах алгоритма построения
карты было решено разделить на две составляющие: эксперименты в реальном
времени и эксперименты на записанных заранее последовательностях с
известной истинной траекторией движения камеры. В рамках первых главным
образом замерялась скорость, с которой работал запущенный алгоритм, так
как качество оптического трекинга и построения карты в таких экспериментах
представлялось возможным оценить только по корректности определения
поворота, так как его истинное значение можно получить с гироскопа,
устанавливаемого на устройство в рамках эксперимента. Во вторых же делался
61

упор на точность воссоздания траектории (а значит и создаваемой карты) в


виду наличия информации об истинной траектории движения устройства, на
котором была записана используемая стереопоследовательность, а значит и в
виду наличия возможности оценки степени ошибочности, полученных при
помощи рассматриваемого алгоритма результатов. Для этого было
произведено вычисление значения среднеквадратичного отклонения
полученных 3D-координат от истинных, прилагающихся к
стереопоследовательностям выбранных для экспериментов баз.
62

3.2 Использованное оборудование

При проведении экспериментов в реальном времени алгоритм был


запущен с использованием специального оборудования, позволяющего
получать синхронизированные сереоизображения, снабжённые временными
метками и значениями истинного поворота с гироскопа для оценки отклонения
ориентации в полученной траектории. Помимо этого устройство было
снабжено экраном и линзами, позволяющими выводить изображение
виртуальной сцены, соответствующее текущему апроксимированному
алгоритмом положению стереокамеры, для оценки пользователем качества
трекинга и скорости обновления изображения.
Целью этих экспериментов было получение представления о
корректности работы частей алгоритма и его производительности,
демонстрируемой при запуске на конкретном оборудовании. Для этого
производились запуски на разных конфигурациях алгоритма, иногда с
полностью отключенными некоторыми его частями. На рисунке 21
представлено фото использованного в экспериментах оборудования.
Оценка получаемой в результате карты производилась с использованием
специальной программы-инструмента, позволяющей визуализировать и
просматривать историю построения и оптимизации карты. С учетом
наблюдаемых в ней различий между картами, полученными на разных
запусках, делались выводы относительно корректности и целесообразности
применения отдельных частей алгоритма.
63

Рис. 21 – Использованное в экспериментах устройство

Все эксперименты проводились при использовании C++-реализации


алгоритма, запущенной на компьютере c параметрами, указанными в таблице
1.
Операционная система Windows 10 64-bit
Процессор Intel(R) Core(TM) i7-3770 CPU @ 3.40GHz
Видеокарта GeForce GTX1070 Ti
Объём оперативной памяти 16 GB
Табл. 1 – Характеристики компьютера, на котором запускался алгоритм.

В качестве оптического датчика использовалась стереокамера с


характеристиками, соответствующими таблице 2.
64

Тип оптического сенсора Монохромный сенсор MT9V024


Тип затвора Глобальный
Фокус Фиксированный
Разрешение 752 х 480
Стереобаза 60 мм
Макс. частота кадров 60 кадров в секунду
Табл. 2 – Характеристики стереокамеры, размещённой на устройстве.

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


NGIMU, выдающий актуальное значение кватерниона до 400 раз в секунду.
Это значение применялось для более частой подачи обновлённой позы
устройства на экран. То есть несмотря на то, что алгоритм ещё не получил
следующую стереопару, а значит не мог пока посчитать новое положение
устройства, наблюдаемый в шлеме поворот соответствовал истинной
ориентации головы участника эксперимента.
65

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

Для оценки точности воссоздания траектории движения камеры


использовались две известные общедоступные базы
стереопоследовательностей: KITTI и EuRoC.

3.3.1 KITTI

Последовательности, входящие в состав базы KITTI [32], записаны с


проезжающего по городским улицам автомобиля, на котором установлены две
синхронизированные черно-белые камеры, расположенные в 52-ух
сантиметрах друг от друга. База насчитывает 22 стереопоследовательности, к
11-ти из которых прилагаются данные об истинной траектории, снятые с
инерциальной навигационной системы также расположенной на крыше
автомобиля. Изображения сняты в оттенках серого, их размеры составляют
1382 пикселов в ширину и 512 в высоту.
Эти стереопоследовательности хорошо подходят для тестирования
качества работы методов VSLAM, в первую очередь благодаря большому
расстоянию между используемыми камерами, позволяющему точнее
триангулировать сопоставленные пары ключевых точек. Кроме того, во
многих из них автомобиль несколько раз проезжает мимо одного и того же
места, что позволяет проверить работу механизма, отвечающего за замыкание
петель и глобальную оптимизацию карты. Последовательности имеют
относительно большую продолжительность, а значит также подходят для
проверки работоспособности алгоритма в условиях обширных карт.
66

3.3.2 EuRoC

В отличие от KITTI последовательности базы EuRoC [33] сняты в


закрытых помещениях при помощи дрона, снабжённого стереокамерой и
инерциальным датчиком. Представляют из себя наборы пар изображений в
оттенках серого размером 752 на 480 пикселов. Истинная траектория в шести
степенях свободы снималась при помощи системы Vicon [34].
Несмотря на то, что стереопоследовательности EuRoC в первую очередь
предназначены для тестирования совмещённых инерциально-оптических
систем одометрии и построения карты, они подходят и для оценки качества
работы чисто оптических методов, хотя и имеют ряд характерных
недостатков, отрицательно сказывающихся на работе алгоритмов типа
VSLAM. А именно, в виду специфики, связанной с использованным для
съёмки оборудованием и характером траектории камеры, на многих
стереопарах присутствует значительный смаз и периодические перепады
яркости. Как показали результаты экспериментов, которые будут рассмотрены
более подробно в следующей главе, эти особенности действительно негативно
сказываются на результатах работы процедуры прослеживания точек
посредством вычисления оптического потока, стоящей в основе
предлагаемого алгоритма. Тем не менее, эти стереопоследовательности
широко использовались для оценки качества работы аналогичных чисто
оптических методов SLAM, что позволяет сравнить получаемые результаты с
результатами ближайших аналогов.
67

Выводы по главе:
- Эксперименты, проводимые над предлагаемым алгоритмом логично
поделить на две группы: эксперименты в реальном времени и эксперименты
на стереопоследовательностях с известной истинной траекторией;
- Во время экспериментов в реальном времени следует замерять лишь
скорость работы алгоритма ввиду отсутствия объективных критериев
точности при работе в таких условиях;
- В качестве используемых в экспериментах баз
стереопоследовательностей с известной истинной траекторией подходящими
представляются две: EuRoC и KITTI ввиду их общедоступности и
применимости для оценки точности работы предлагаемого визуального
алгоритма SLAM.
68

ГЛАВА 4

В данной главе представлены результаты описанных в предыдущей главе


экспериментов, проведённых с использованием С++-реализации
предлагаемого алгоритма.

4.1 Результаты работы алгоритма в реальном времени

В рамках этих экспериментов проводилсь запуски реализованного


алгоритма, направленные на оценку его работоспособности и применимости в
области VR-трекинга. Комфорт использования исследуемого метода при
подаче вычисляемой им позы устроства на экран шлема оценивался при
помощи экспертов, надевавших этот шлем на время проведения эксперимента.
Плавность движения, видимого на экране, а также его соответствие
манипуляциям участника эксперимента уже позволяли делать некоторые
выводы о качестве получаемой карты. Но для осуществления более
обоснованного анализа результатов в рамках данной работы был создан
специальный иструмент, позволяющий просматривать историю модификации
создаваемой карты с разных ракурсов. С его помощью были визуализированы
карты, построенные в течение экспериментов. Пример такой карты можно
увидеть на рисунке 22.
69

Рис. 22 – Пример результата построения карты.

Как видно на рисунке, построенная карта имеет очертания помещения, а


траектория, состоящая из ключевых наблюдений выглядит плоской, так как во
время эксперимента человек не нагибался и не подпрыгивал, ходя по кругу со
шлемом на голове. Просматривая историю построения такой карты можно
сделать ценные наблюдения, связанные с используемыми методами
оптимизации карты.
На рисунке 23 можно увидеть иллюстрацию процесса объединения
точек.
70

Рис. 23 – Объединение точек.

Стоит обратить внимание на то, что объединяемые точки, соединённые для


наглядности линиями, образуют ярко выраженный радиальный узор, что
говорит о том, что причиной дублирования этих точек стала ошибка в
вычислении значения их относительной координаты Z. Именно такие точки
зачастую подвергаются объединению.
На рисунке 24 показан результат успешного замыкания цикла:

Рис. 24 – Замыкание цикла. (вид сбоку)


Слева – до замыкания, справа – после.
71

Стоит обратить внимание на то, как вся траектория выровнялась, сделавшись


более плоской, а также на резкий скачок траектории в месте замыкания.
Первое говорит о том, что карта выправилась, то есть накопленная в ней за
время прохода по кругу ошибка была успешно компенсирована, а второе о
том, что это изменение дошло до текущего кадра и что далее карта будет
строиться с учётом результата этой оптимизации. На рисунке 25 показано то
же самое замыкание но уже сверху.

Рис. 25 – Замыкание цикла. (вид сверху)


Сверху – до замыкания, снизу – после.

Серым цветом на этом рисунке показаны связи между кадрами, отражающие


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

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


В течение эксперимента происходило измерение времени вычисления
алгоритмом результата очередной итерации. На рисунке 26 можно увидеть
график, построенный на основе этих замеров в сравнении с аналогичным
графиком результатов ORB-SLAM2.

150

100

50

0
667

1629

2517
1
75
149
223
297
371
445
519
593

741
815
889
963
1037
1111
1185
1259
1333
1407
1481
1555

1703
1777
1851
1925
1999
2073
2147
2221
2295
2369
2443

2591
2665
2739
2813
Рис. 26 – График зависимости времени работы алгоритма от номера итерации.
Синий – ORB-SLAM2, Рыжий – предлагаемый алгоритм.

На графике видно, что кривая, соответствующая времени работы


предлагаемого алгоритма, удерживается в районе отметки 20 мс, то есть в
среднем алгоритм позволяет получать актуальную позу устройства 50 раз в
секунду. Итерация ORB-SLAM2 работает около 50 мс, а значит выдаёт позу
всего 20 раз в секунду.
Как и ожидалось, благодаря нововведениям предлагаемого алгоритма
его итерация в среднем занимает значительно меньше вычислительного
времени.
73

4.2 Результаты работы алгоритма на общедоступных базах


стереопоследовательностей
4.2.1 KITTI

Алгоритм был опробован на шести последовательностях базы KITTI.


Результаты вычисления среднеквадратичной ошибки в сравнении с
соответствующими показателями схожего алгоритма, а именно ORB-SLAM2,
представлены в таблице 3.

Среднеквадратичная ошибка
траектории, м
Последовательность
Предлагаемый
ORB-SLAM2 (stereo)
алгоритм
stream_00 2,5 3,9
stream_01 13,2 11,8
stream_02 4,7 8,2
stream_04 1,7 0,4
stream_05 2,1 0,9
stream_06 1,2 1,1

Табл. 3 – Сравнение результатов алгоритмов SLAM-ONE и ORB-SLAM2


на базе стереопоследовательностей KITTI.

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


А на последовательностях stream_00 и stream_02 даже превзошёл показатели
ORB-SLAM2, оказавшись точнее. В основном алгоритм всё же даёт чуть менее
точные результаты. Объяснением этому может служить как фундаментальные
особенности алгоритма, так и недостатки конкретной реализации.
На рисунке 27 можно увидеть сравнение истинных траекторий с
полученными.
74

Рис. 27 – Траектории, полученные предлагаемым алгоритмом в сравнении с истинными.


Синий – траектория KITTI, рыжий – результат работы алгоритма.
75

4.2.2 EuRoC

Алгоритм был также опробован на одиннадцати последовательностях


базы EuRoC. Результаты представлены в таблице 4.

Среднеквадратичная ошибка
траектории, м
Последовательность
Предлагаемый
ORB-SLAM2 (stereo)
алгоритм
V1_01 (easy) 0,129 0,088
V1_02 (medium) 0,074 0,065
V1_03 (difficult) 0,045 0,134
V2_01 (easy) 0,046 0,069
V2_02 (medium) 0,087 0,066
V2_03 (difficult) 0,214 -
MH_01 (easy) 0,148 0,036
MH_02 (easy) 0,094 0,046
MH_03 (medium) 0,152 0,043
MH_04 (difficult) 0,353 0,119
MH_05 (difficult) 0,149 0,139

Табл. 4 – Сравнение результатов алгоритмов SLAM-ONE и ORB-SLAM2


на базе стереопоследовательностей EuRoC.

Результаты, опять же, соизмеримы, но обгоняют результаты ORB-SLAM2 на


трёх последовательностях. Стоит заметить, результата ORB-SLAM2 на
последовательности “V2_03” в таблице нет, так как алгоритм с ней не
справился вовсе в отличие от предлагаемого алгоритма.
На рисунках 28 и 29 можно увидеть сравнение истинных траекторий с
полученными.
76

Рис. 28 – Траектории, полученные предлагаемым алгоритмом в сравнении с истинными.


Синий – траектория EuRoC, рыжий – результат работы алгоритма.
77

Рис. 29 – Траектории, полученные предлагаемым алгоритмом в сравнении с истинными.


Синий – траектория EuRoC, рыжий – результат работы алгоритма.

Результаты значительно более заметно отличаются от истинных, чем на


последовательностях базы KITTI, что вполне ожидаемо, если принять во
внимание характер стереопоследовательностей, входящих в эту базу, которые
несомненно накладывают повышенную нагрузку на визуальные алгоритмы
SLAM.
78

Выводы по главе:
- Высокую производительность можно назвать сильной стороной
предлагаемого алгоритма, исходя из результатов сравнения скорости его
работы со скоростью работы его ближайшего аналога;
- При упомянутой высокой производительности алгоритма, его точность
соизмерима с точностью ORB-SLAM2, а на некоторых последовательностях и
вовсе опережает его;
79

ЗАКЛЮЧЕНИЕ

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


трёхмерной карты окружающего пространства на основе вычисления
оптического потока по методу Лукаса-Канаде. Проведённые эксперименты
показали его возможную применимость в области виртуальной или
дополненной реальности, и в других смежных областях, так как он показал
сравнимые с аналогами результаты на общедоступных базах
стереопоследовательностей и при этом позволял получать новое положение
устройства в пространстве не реже, чем 50 раз в секунду. Этот показатель
более чем в два раза превышает аналогичные показатели ближайшего аналога
– алгоритма ORB-SLAM2. Стоит заметить, что такой частоты безусловно
недостаточно для комфортного восприятия человеком в шлеме, тем не менее,
есть способы, позволяющие увеличить эту частоту до желаемой.
Во-первых, наибольшим образом на ощущения пользователя сказывается
именно частота обновления поворота, истинное значение которого можно
получать с гироскопа с гораздо более высокой частотой (при наличии такового
на устройстве).
Во-вторых, сам алгоритм может быть в значительной степени
оптимизирован и ускорен до показателей по предварительным оценкам
превышающие представленные как минимум в два раза. В основном это может
быть достигнуто путём асинхронного запуска части алгоритма,
непосредственно занимающейся работой с картой. Помимо этого безусловно
существует множество способов дополнительной оптимизации.
В-третьих, в алгоритме может найти своё применение один из методов
предсказания, который бы позволил выдавать предсказанную позу между
80

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


В-четвёртых, алгоритм может быть расширен модулем инерциального
трекинга, что позволит не только повысить частоту получения результатов, но
и точность трекинга, так как дополнительная информация, поступающая с
правильно откалиброванного инерциального датчика, понизит ошибку,
содержащуюся в создаваемой карте.
На качество работы алгоритма явно отрицательно сказывается тип
применяемых дескрипторов, а именно - ORB. Сильной стороной этого вида
представления векторов признаков ключевых областей является высокая
скорость его вычисления, чего нельзя сказать о его устойчивости к
слабоафинным преобразованиям. При относительно незначительном
изменении ракурса наблюдения некоторые точки могут так сильно поменять
своё описание, что их дистанция в пространстве признаков воспрепятствует
их отождествлению. И даже применение критерия перевычисления
дескрипторов, предложенного в данной работе, решает эту проблему лишь
частично, так как он способен повлиять только на уже содержащиеся в карте
ключевые точки. А при попытках релокализации этого не достаточно, ведь
особенности ORB могут не позволить узнать посещённую ранее область
только потому, что ракурс её текущего наблюдения в некоторой степени
отличается от ракурса в момент её последнего появления в кадре.
Многие из проблем предлагаемого алгоритма вполне могут быть решены
дополнительными эвристическими подходами, применением
дополнительного или более точного оборудования.
81

CПИСОК ЛИТЕРАТУРЫ

1. Durrant-Whyte H., Bailey T. Simultaneous localization and mapping: part I // IEEE


Robotics & Automation Magazine. 2006. Vol. 13(2). P. 99–110.
2. Durrant-Whyte H., Bailey T. Simultaneous localization and mapping: part II // IEEE
Robotics & Automation Magazine. 2006. Vol. 13(3). P. 108–117.
3. Cadena C., Carlone L., Carrillo H., Latif Y., Scaramuzza D., Neira J., Reid I., Leonard
J.J. Past, Present, and Future of Simultaneous Localization and Mapping: Toward the
Robust-Perception Age // IEEE Transactions on Robotics. 2016. Vol. 32(6). P. 1309–
1332.
4. Mountney P., Stoyanov D., Davison A., Yang G-Z. Simultaneous Stereoscope
Localization and Soft-Tissue Mapping for Minimal Invasive Surgery // Lecture Notes in
Computer Science. 2006. P. 347–354.
5. Julier S., Uhlmann J. Building a Million-Beacon Map // Proceedings of ISAM
Conference on Intelligent Systems for Manufacturing. 2001.
6. Csorba M., Uhlmann J. A Suboptimal Algorithm for Automatic Map Building //
Proceedings of the 1997 American Control Conference. 1997.
7. Jaulin L. A nonlinear set-membership approach for the localization and map building of
an underwater robot using interval constraint propagation // IEEE Transactions on
Robotics. 2009. Vol. 25. P. 88–98.
8. Jaulin L. "Range-only SLAM with occupancy maps; A set-membership approach // IEEE
Transactions on Robotics. 2011. Vol. 27(5). P. 1004–1010.
9. Cummins M., Newman P. FAB-MAP: Probabilistic localization and mapping in the
space of appearance // The International Journal of Robotics Research. 2008. Vol. 27(6).
P. 647–665.
10. Magnabosco M., Breckon T.P. Cross-Spectral Visual Simultaneous Localization And
Mapping (SLAM) with Sensor Handover // Robotics and Autonomous Systems. 2013.
Vol. 63(2). P. 195–208.
11. Karlsson N., Di Bernardo E., Ostrowski J., Goncalves L., Pirjanian P., Munich M. The
vSLAM Algorithm for Robust Localization and Mapping // International Conference on
Robotics and Automation. 2005.
12. Fox C., Evans M., Pearson M., Prescott T. Tactile SLAM with a biomimetic whiskered
robot // International Conference on Robotics and Automation. 2012.
13. Marck J.W., Mohamoud A., Houwen, E., van Heijster R., Indoor radar SLAM A radar
application for vision and GPS denied environments // Radar Conference. 2013.
14. Brynjolfsson E., McAfee A. The Second Machine Age: Work, Progress, and Prosperity
in a Time of Brilliant Technologies // W. W. Norton & Company. 2014. P. 52.
15. Aulinas J. "The SLAM Problem: A Survey // Conference on Artificial Intelligence
Research & Development. 2008. P. 363–71.
16. Nguyen V., Harati A., Siegwart R. A lightweight SLAM algorithm using Orthogonal
planes for indoor mobile robotics // Intelligent Robots and Systems. 2007. Vol. 13(3).
P. 658–663.
17. Lucas B. D., Kanade T. An iterative image registration technique with an application to
stereo vision // Imaging Understanding Workshop. 1981. P. 121–130.
82

18. Bruce D. L. Generalized Image Matching by the Method of Differences: дис. д-ра. наук.
Питтсбург, 1985.
19. Triggs B., McLauchlan P., Hartley R., Fitzgibbon A. Bundle Adjustment — A Modern
Synthesis // International Workshop on Vision Algorithms. Springer-Verlag. 1999. P.
298–372.
20. Lourakis M.I.A., Argyros A.A. SBA: A Software Package for Generic Sparse Bundle
Adjustment // ACM Transactions on Mathematical Software. 2009. Vol. 36(2). P. 1–30.
21. Hartley R.I., Zisserman A. Multiple View Geometry in computer vision (2nd ed.) //
Cambridge University Press. 2004.
22. Fei-Fei L., Perona P. A Bayesian Hierarchical Model for Learning Natural Scene
Categories // IEEE Computer Society Conference on Computer Vision and Pattern
Recognition. 2005. Vol. 2. P. 524.
23. Fei-Fei L., Fergus R., Torralba A. Recognizing and Learning Object Categories, CVPR
2007 short course // The Conference on Computer Vision and Pattern Recognition. 2007.
24. Vidal-Naquet M., Ullman S. Object recognition with informative features and linear
classification // Ninth IEEE International Conference on Computer Vision. 1999.
P. 1150–1157.
25. Leung T., Malik J. Representing and recognizing the visual appearance of materials using
three-dimensional textons // International Journal of Computer Vision. 2001. Vol. 43(1).
P. 29–44.
26. Davison A.J., Reid I.D., Molton N., Stasse O. MonoSLAM: Real-Time Single Camera
SLAM // Pattern Analysis and Machine Intelligence. 2007. Vol. 29. P. 1052-1067
27. Pire T., Fischer T., Castro G., De Cristóforis P., Civera J., Jacobo B. J. S-PTAM: Stereo
Parallel Tracking and Mapping // Robotics and Autonomous Systems. 2017. Vol. 93.
28. Nistér D. An efficient solution to the five-point relative pose problem // Pattern Analysis
and Machine Intelligence. 2004. Vol. 26(6). P. 756–770.
29. Mur-Artal R., Tardós J.D. ORB-SLAM2: An Open-Source SLAM System for
Monocular, Stereo and RGB-D Cameras // IEEE Transactions on Robotics. 2016.
30. Dominik S., Mirco C., Giorgio G. ProSLAM: Graph SLAM from a Programmer's
Perspective // IEEE International Conference on Robotics and Automation. 2018.
31. Yadav G., Maheshwari S., Agarwal A. Contrast Limited Adaptive Histogram
Equalization Based Enhancement for Real Time Video System // Advances in Computing
Communications and Informatics. 2014. P. 2392-2397.
32. Geiger A., Lenz P., Urtasun R.) Are We Ready for Autonomous Driving? The KITTI
Vision Benchmark Suite // Conference on Computer Vision and Pattern Recognition.
2012.
33. Burri M., Nikolic J., Gohl P., Schneider T., Rehder J., Omari S., Achtelik M., Siegwart R.
The EuRoC Micro Aerial Vehicle Datasets // The International Journal of Robotics
Research. 2016. Vol. 35.
34. Merriaux P., Dupuis Y., Boutteau R., Vasseur P., Savatier X. A Study of Vicon System
Positioning Performance // Sensors. 2017. Vol. 17(7).

Вам также может понравиться