WebODM: Создаем карты и 3d модели с дрона

Вступление

Фотограмметрия — это наука о получении измерений по фотографиям. Эти концепции восходят к 15 веку, когда Леонардо да Винчи заявил: «Перспектива есть не что иное, как видение предмета за листом стекла, гладкого и совершенно прозрачного, на поверхности которого можно отметить все вещи, находящиеся за этим стеклом».

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

Наверно у многих лежат месяцами на полках дроны марки DJI, и вы активно задаете себе вопрос: что можно с ним сделать? Или возможно вы хотели бы приобрести дрон, но не видите в нем ничего, кроме летающей камеры?

Встречайте WEBODM — бесплатное, кросс платформенное программное обеспечение с открытым исходным кодом для создания карт, построение облака точек, рельефа и 3D-моделей из аэрофотоснимков.

Для того, чтобы начать, нам потребуется 3 вещи:

  1. Компьютер. Для обработки 100–200 изображений необходимо как минимум 16 гб ОЗУ;

  2. Дрон. Совершенно не обязательно использовать коммерческие версии для картографии. Я использую dji mavic mini;

  3. Терпение. Обработка изображений занимает несколько часов.

Начнем прежде всего с установки. Я использую самый простой, как мне кажется, способ — установка WEBODM отдельно на виртуальную машину с Linux. Другие способы описаны здесь.

Установка

В качестве примера будем рассматривать установку на Ubuntu 20.04:

sudo apt-get update && sudo apt-get upgrade -y

Установка обязательных пакетов:

sudo apt-get install python3 pip git apt-transport-https ca-certificates curl software-properties-common -y

Добавляем ключ GPG для официального репозитория Docker в систему Ubuntu:

curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -

Добавляем репозиторий Docker в APT:

sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu focal stable"

Обновляем списки пакетов Docker из добавленного репозитория:

sudo apt update

Устанавливаем Docker:

sudo apt install docker-ce -y

Проверим работу Docker командой:

sudo systemctl status docker
● docker.service - Docker Application Container Engine
     Loaded: loaded (/lib/systemd/system/docker.service; enabled; vendor preset: enabled)
     Active: **active (running)** 

Далее ставим Docker Compose — инструмент, который позволяет запускать среды контейнеров на основе конфигурационных файлов YAML:

sudo apt-get install docker-compose-plugin

Проверяем успешность установки:

gd@webodmtest:/# docker compose version
Docker Compose version v2.6.0

Устанавливаем WEBODM:

git clone https://github.com/OpenDroneMap/WebODM --config core.autocrlf=input --depth 1
cd WebODM
chmod +x ./webodm.sh
./webodm.sh start

Eсли все прошло хорошо, то вы увидите в конце вот эти 4 строчки.

webapp      | Congratulations! └@(・◡・)@┐
webapp      | ==========================
webapp      | If there are no errors, WebODM should be up and running!
webapp      | Open a web browser and navigate to http://YOUR_IP:8000

Открываем браузер и вводим ip адрес в адресную строку

44559ccc852176d54631156cbed62f55.png

C данного момента можно считать, что webodm был успешно установлен.

Принцип работы WEBODM

1614a88f76b9dfe248a915c589f409c5.jpeg


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

Программное обеспечение будет учитывать 2 типа данных:

  • позиционные метаданные из снимков, gnss, gcp;

  • файлы изображений.

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

Далее программа строит карту глубины для каждого снимка и на ее основе строит плотное облако точек. WEBODM может генерировать очень плотные облака точек (более 20 млн).

Плотное облако точек используется для построения сетки объекта (3d mesh), полигональной модели, и карты высот, выполняется параметризация текстур, и мы получаем на выходе полноценную цветную модель и ортоплан.

1cabf3d7d6178f352b7ae042dbb9c931.png

Знакомство с интерфейсом

Интерфейс WEBODM достаточно интуитивен и мы можем сразу приступить к обработке изображений.

Для этого нажмем на кнопку «Добавить проект», вводим имя и описание.

59ecece9dd39897e72169c593e7ea4d7.png

После успешного создания проекта, загружаем изображения с дрона.

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

После выбора изображений, ознакомимся с основными флагами, которые необходимы для работы с WEBODM. Для этого нажмем на кнопку «Редактировать» рядом с опциями:

  • max-concurrency — максимальное количество потоков для использования в различных процессах. В среднем на один поток выделяется 1 гб озу c учетом размера изображений в 2 мб. Данный параметр можно уменьшить, если у вас не хватает оперативной памяти;

  • ignore-gsd — true;

  • orthophoto-resolution — Уменьшение этого значения увеличивает четкость изображения;

  • feature-quality — Общий параметр качества 3D реконструкции. Параметр high позволяет получить оптимальное качество;

  • pc-quality — устанавливает качество облака точек. Более высокое качество создает более плотные облака точек, но значительно увеличивает почти в 4 раза больше обрабатыватеся и требует больше ресурсов;

  • mesh-size — максимальное количество вершин. Увеличение данного параметра до 300000–600000 может значительно улучшить качество 3d моделей в городских условиях;

  • mesh-octree-depth — увеличение глубины сетки для нахождения большего количества вершин. Параметры более 11 значительно улучшают реконструкцию сложных моделей.

  • pc-tile — уменьшает количество использованной оперативной памяти, путем разбития больших сцен на плитки.

После загрузки файлов, будет инициирована обработка изображений. В среднем 200 изображений обрабатываются где-то 1 час. После того, как у нас будет статус «выполнено», осмотрим нашу 3d модель.

b0273f312579a1926364f993573d0e2c.png


Перед нами — окно для просмотра сформированных из точек 3d модели. Мы можем увеличить детализацию, выкрутив слайдер «Point budget» и изменив «Splat quality».

c64440324e6a6009ec94402156e8d5db.png

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

73a9ba861ce26df7064fa2718be0f426.png

Также доступны инструменты для измерения дистанции, объема и угла наклона.

6776397c3f2f17d396399a17d0e005b4.png

Вы также можете поделиться своей 3d моделью. Получатель ссылки сможет просматривать и скачивать вашу модель без необходимости регистрации.  Есть также готовый html iframe, что может позволить вам разместить данную модель прямо у себя на сайте.

7dbe3f513d7bfd627df95ab461b02ca4.png

Краткие рекомендации по съемке

  • Если вы снимаете небольшой объект, как например памятник, вы должны стремиться получить полную сферу, вокруг объекта. Это можно сделать даже без автоматического полета — если у вашего дрона есть intelligent flight modes, или его аналоги, вы можете сделать это вручную буквально за 15–20 минут.

  • Освещение очень важно для фотогамметрии. Хороших результатов можно добиться при ясной и солнечной погоде.

  • Для создания ортопланов, потребуется дополнительное программное обеспечение (DroneDeploy, Litchi).

696193689224655e3f116fc7d672a9e6.jpeg

Итоги

WEBODM — это простое в использовании, бесплатное программное обеспечение для создания ортопланов и 3d моделей, которое может быть вполне конкурентноспособно платным решениям. Любой желающий, может ознакомиться с фотогамметрией, имея компьютер и бпла.

© Habrahabr.ru