Главная » Статьи » Facebook научил двухкамерные смартфоны быстрому созданию 3D-панорам

Facebook научил двухкамерные смартфоны быстрому созданию 3D-панорам

Пример панорамы, созданной с помощью алгоритма

Peter Hedman / YouTube

Исследователи из Facebook разработали алгоритм, создающий объемные панорамы с помощью смартфона с двойной камерой. Он использует создаваемые такой камерой стереопары и карты глубины для создания равномерно склеенной объемной панорамы с реалистичным распределением объектов. При этом новый алгоритм существенно быстрее своих предшественников, рассказывают разработчики в статье, которая будет представлена на конференции SIGGRAPH 2018. В начале мая Facebook заявила о планах внедрить подобную функцию в социальную сеть.

В последние два года многие смартфоны стали оснащаться двумя или даже тремя камерами на задней панели. Одно из преимуществ такой конфигурации заключается в том, что она позволяет создавать стереопару, из которой можно относительно легко создать карту глубины, то есть каждому пикселю изображения можно присвоить не только цвет и яркость, но и уровень глубины (относительное расстояние от камеры). Самое популярное применение этой особенности — создание снимков с красивым размытым фоном, имитирующим объектив с низкой глубиной резкости.

Некоторые исследователи начали предлагать более необычные применения двухкамерным модулям в смартфонах. Например, в другой работе, поданной на SIGGRAPH 2018 разработчиками из Google, описывается алгоритм, позволяющий создавать на основе стереопары новые снимки той же сцены, «снятые» с других ракурсов. Им удалось научить алгоритм создавать снимки с ракурсами, расположенными не только между двумя исходными картинками, но и вне этого диапазона. 

В новой работе Петер Хедман (Peter Hedman) и Йоханнес Копф (Johaness Kopf) из Facebook решили использовать производимые двухкамерными смартфонами стереопары для быстрого создания объемных панорам.

Исследователи использовали iPhone 7 Plus с двумя камерами и встроенный API для создания карт глубины. Одна из проблем использования создаваемой смартфоном карты глубины заключается в том, что она показывает не абсолютное расстояние, отражающее реальное расстояние от камеры до объектов, а нормированное расстояние, специфичное для каждого снимка (или пары снимков). Из-за этого один и тот же объект на соседних снимках может располагаться на разной глубине и «склеенный» снимок получится с большим количеством артефактов.

Работа созданного алгоритма состоит из нескольких этапов. Сначала пользователь делает снимки окружающего пространства — каждую секунду смартфон делает одну пару снимков, содержащую данные о цвете и глубине, и записывает свои перемещения с помощью гироскопа и акселерометра. Затем алгоритм приступает к склеиванию карт глубины для соседних снимков, учитывая поворот смартфона между двумя снимками. За счет этого получается равномерная карта глубины для всей сцены, реалистично отражающая реальное положение объектов.

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

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

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

Григорий Копиев