BC/NW 2019№ 2 (35):8.2
РАЗРАБОТКА АЛГОРИТМА НАХОЖДЕНИЯ И ОТСЛЕЖИВАНИЯ ПЛОСКИХ ПОВЕРХНОСТЕЙ
Дугин И.С.
Нахождение плоской поверхности – это выделение в видеопотоке тех участков изображения, которые соответствуют плоским поверхностям в реальном окружении. Выделение таких поверхностей должно производиться в соответствии с геометрией отображаемой поверхности и расположения мобильного устройства в пространстве относительно этих поверхностей. Отслеживание поверхностей заключается в том, что по мере перемещения мобильного устройства в пространстве, графическое отображение найденной поверхности соответственно видоизменятся. Если на отслеживаемую поверхность добавить произвольный виртуальный объект, то этот объект должен оставаться на расположенной точке вне зависимости от перемещения мобильного устройства.
Необходимо разработать программную реализацию алгоритма нахождения и отслеживания плоских поверхностей. Для реализации данного алгоритма будут применены методы компьютерного зрения. Алгоритм нахождения поверхностей используется для реализации приложений дополненной реальности.
В основе алгоритма нахождения поверхностей лежит метод одновременной локализации и картографирования (Simultaneous Localization and Mapping - SLAM). Такой метод одновременно определяет положение камеры и строит трехмерную структуру исследуемого окружения. Системы на основе метода SLAM могут работать на неизвестном окружении даже при использовании всего лишь одной камеры (монокулярная одометрия).
Разрабатываемый алгоритм нацелен на использование в приложения для мобильных устройств под управлением ОС Android. Алгоритм должен обрабатывать видеопоток, для нахождения поверхностей, и отслеживать перемещение устройства в пространстве относительно этих поверхностей.
Для решения поставленной задачи были применены следующие инструменты:
· Android Studio – среда разработки приложений для операционной системы Android;
· ARCore – библиотека для приложений ОС Android, включающая основные алгоритмы компьютерного зрения и механизмы взаимодействия со встроенными датчиками для реализации дополненной реальности;
· OpenGL – библиотека, позволяющая работать с 3D – графикой. Необходима для визуализации результатов работы.
· Языки программирования Java и C++ - высокоуровневые языки программирования, позволяющие писать приложения для мобильных устройств под управлением ОС Android
2 Разработка алгоритма решения задачи
Поставленная задача состоит из двух частей, нахождение поверхностей и отслеживание найденных поверхностей. Первая задача решается с помощью методов компьютерного зрения. Решение второй задачи опирается на результаты работы первой и на показания датчиков положения в пространстве, встроенных в мобильное устройство.
Как уже было сказано ранее в основе алгоритма нахождения поверхностей лежит метод одновременной локализации и картографирования. Он состоит из трех процедур: трекинг, построение карты и оптимизация карты. Компонент трекинга оценивает положение каждого нового кадра относительно текущего ключевого кадра. Компонент построения карты обрабатывает кадры с известным положением, либо производя очистку карты кадра с помощью фильтра Калмана, либо создавая новый ключевой кадр. Компонент оптимизации карты занимается поиском циклов в графе ключевых кадров и устранением эффекта плавающего масштаба. Пример работы методов SLAM приведен на рисунке 1.
Рис. 1. Пример работы алгоритма SLAM
В общем случае реализация методов SLAM состоит из следующих подзадач:
· выделение областей или особенностей (особых точек, углов и т.д.) изображений, которые будут использоваться как элемент построенной модели местности (карты);
· построение модели неизвестной местности по двум или более кадрам видеопотока;
· локализация системы в построенной модели;
· построение и корректировка пройденной траектории.
В результате работы методов одновременной локализации и картографирования получается облако точек, расположенных в пространстве. По этим точкам строится 3D модель реального окружения, а из этой модели уже можно выделить плоские поверхности. В общем виде алгоритм нахождения поверхности представлен на рисунке 2.
Рис. 2. Алгоритм нахождения поверхностей.
В библиотеке ARCore реализованы основные алгоритмы компьютерного зрения, так что нет необходимости собственноручно программировать алгоритмы выделения ключевых точек и сравнения кадров.
Фактически алгоритм сводится к построению 3D модели реального окружения в памяти мобильного устройства и отслеживанию положения устройства в этом моделируемом окружении. Отслеживание происходит за счет методов визуальной одометрии и встроенных датчиков положения в пространстве, таких как акселерометр, гироскоп, компас и т.д.
3 Разработка программной реализации алгоритма
Разработка программной реализации алгоритма велась на языках Java и C++ с использованием открытой программной библиотеки для дополненной реальности, разработанной компанией Google, ARCore. Для визуализации результатов работы алгоритма используется открытая библиотека для работы с графикой - OpenGL.
Разработанный алгоритм представлен в виде приложения для мобильных устройств под управлением ОС Android. Пример работы этого приложения приведен на рисунке 3. Реализация основных активностей приложения представлена в листинге 1.
Реализация алгоритма нахождения и отслеживания поверхностей приведена в листинге 2.
Рис. 3. Пример работы приложения
Тестирование проводилось на эмуляторе мобильного устройства Pixel 2 XL. Его характеристики:
· CPU/ABI: Google APIs Intel Atom (x86)
· Target: google_apis [Google APIs] (API level 27)
· SD Card: 512 MB
· hw.accelerometer: yes
· hw.device.name: pixel_2_xl
· hw.lcd.width: 1440
· image.androidVersion.api: 27
· tag.id: google_apis
· hw.camera.front: emulated
· hw.gpu.mode: auto
· hw.ramSize: 1536
· hw.cpu.ncore: 2
· hw.sensors.proximity: yes
· hw.lcd.height: 2880
· vm.heapSize: 384
· hw.camera.back: virtualscene
· hw.lcd.density: 560
· hw.gpu.enabled: yes
На эмулируемое устройство было предварительно установлена библиотека ARCore версии 1.6. Главным показателем при тестировании является количество кадров в секунду. Чем выше этот показатель, тем быстрее работает алгоритм.
Зависимость количества кадров в секунду от количества отслеживаемых объектов представлено на рисунке 4.
Тестирование показало, что количество кадров стабильное, однако уменьшается, при изменении положения устройства, т.к. именно в эти момент алгоритм определения поверхностей работает наиболее активно
Рис. 4. Зависимость кадров в секунду от количества виртуальных объектов.
В результате работы разработан алгоритм нахождения поверхностей, используя библиотеку ARCore. В результате тестирования алгоритма, были получены удовлетворительные результаты.
Разработанный алгоритм вполне подходит для использования в приложения дополненной реальности, чтобы привязывать виртуальные объекты к плоским поверхностям реального мира.
1. Гоева А.А. Алгоритм распознавания плоских изображений в дополненной реальности. //Виртуальная и дополненная реальность-2016: состояние и перспективы / Сборник научно-методических материалов, тезисов и статей конференции. Под общей редакцией д.т.н., проф. Д.И. Попова. – М.: Изд-во ГПБОУ МГОК, 2016. С. 100–105.
2. Визильтер Ю. В. Обработка и анализ изображения в задачах машинного зрения: Курс лекций и практических занятий. — М.: Физматкнига, 2010 —
672 с.
3. J.-C. Piao, S.-D. Kim. Adaptive Monocular Visual–Inertial SLAM for Real-Time Augmented Reality Applications in Mobile Devices. Sensors (Basel) 2017 Nov 7;17(11).