Вступление

Фотограмметрия – это наука о получении измерений по фотографиям. Эти концепции восходят к 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 моделей, которое может быть вполне конкурентноспособно платным решениям. Любой желающий, может ознакомиться с фотогамметрией, имея компьютер и бпла.

Комментарии (11)


  1. DirectX
    05.08.2022 15:18
    +1

    Хороший туториал. Могу еще посоветовать аналогичный софт Meshroom


  1. Oz_Alex
    05.08.2022 15:23
    +1

    А для дрона такое приложение есть или надо руками снимать?

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

    Я загуглил и нашёл pix4d — это проприетарный софт и для телефона, который создаёт план полёта для дрона (dji mavic 2 pro в моём случае) и софт для компа, который потом обрабатывает полученные фотки с использованием GPU. На выходе и облако точек, и импорт в Archicad и ещё много чего. В моём случае заказчик был готов платить и за лицензию на софт и за моё время, но пришёл ковид и всё накрылось.

    Как у вас с софтом для дрона?


    1. DirectX
      05.08.2022 15:27
      +1

      Думаю что просто нужно выбрать режим Point of Interest, и снять видео с несколькими облётами по кругу на нескольких уровнях, а задача коптера только держать в центре кадра объект.


      1. Oz_Alex
        05.08.2022 15:35

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


        1. DirectX
          05.08.2022 15:39

          Для такого случая нужно ставить платное альтернативное приложение Litchi.


          1. Oz_Alex
            05.08.2022 15:41

            Пробовал, не осилил и не понравилось. Помимо того — допустим план полёта мы сделали в литчи, что делать с фотками? Что их будет обрабатывать в 3d?
            Поскольку заказчик был готов платить — pix4d на тот момент был лучше и решал больше проблем, поскольку там было и приложение для дрона и приложение для компа.


          1. freeExec
            08.08.2022 12:15

            Есть и DJI Pilot для планов полета


      1. Notespeak Автор
        07.08.2022 15:15

        Здравствуйте, да совершенно верно. Если нету каких-либо планировщиков по типу pix4e или litchi (ещё хуже если нет sdk) - это вполне выход.


    1. Notespeak Автор
      07.08.2022 15:13

      Здравствуйте, я вообще предпочитаю litchi. Я скоро опубликую ещё одну статью, где будет показано как с ним работать.


  1. northzen
    06.08.2022 15:59
    -1

    Не мучайтесь со странным софтом для построения 3Д моделями.
    Возьмите отечественное (но имеющее мировую известность) решение:
    https://www.agisoft.com

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


  1. vlad49
    06.08.2022 17:41
    +1

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