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 адрес в адресную строку

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

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


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

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

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

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

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

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

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

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

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

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

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

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 модель.


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

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

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

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

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

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

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

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

Итоги

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