Вступление
Фотограмметрия – это наука о получении измерений по фотографиям. Эти концепции восходят к 15 веку, когда Леонардо да Винчи заявил: «Перспектива есть не что иное, как видение предмета за листом стекла, гладкого и совершенно прозрачного, на поверхности которого можно отметить все вещи, находящиеся за этим стеклом».
Развитие программного обеспечения с открытым исходным кодом, снижает барьер входа в нишевые технологии. Ранее подобные технологии были широко распространены в рамках геодезии, однако сейчас фотограмметрия используется в разработке игр, VR/AR, или для сохранения исторических памятников культурного наследия.
Наверно у многих лежат месяцами на полках дроны марки DJI, и вы активно задаете себе вопрос: что можно с ним сделать? Или возможно вы хотели бы приобрести дрон, но не видите в нем ничего, кроме летающей камеры?
Встречайте WEBODM - бесплатное, кросс платформенное программное обеспечение с открытым исходным кодом для создания карт, построение облака точек, рельефа и 3D-моделей из аэрофотоснимков.
Для того, чтобы начать, нам потребуется 3 вещи:
Компьютер. Для обработки 100-200 изображений необходимо как минимум 16гб ОЗУ;
Дрон. Совершенно не обязательно использовать коммерческие версии для картографии. Я использую dji mavic mini;
Терпение. Обработка изображений занимает несколько часов.
Начнем прежде всего с установки. Я использую самый простой, как мне кажется, способ - установка 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)
Oz_Alex
05.08.2022 15:23+1А для дрона такое приложение есть или надо руками снимать?
Просто у меня есть друг архитектор, которому как-то понадобился мой дрон и он спросил меня могу ли я отснять некоторую территорию и сделать 3d-модель в Archicad для его заказчика, чтобы на модель реальной территории он мог впендюрить модель потенциального проекта заказчика, которую он уже спроектировал.
Я загуглил и нашёл pix4d — это проприетарный софт и для телефона, который создаёт план полёта для дрона (dji mavic 2 pro в моём случае) и софт для компа, который потом обрабатывает полученные фотки с использованием GPU. На выходе и облако точек, и импорт в Archicad и ещё много чего. В моём случае заказчик был готов платить и за лицензию на софт и за моё время, но пришёл ковид и всё накрылось.
Как у вас с софтом для дрона?DirectX
05.08.2022 15:27+1Думаю что просто нужно выбрать режим Point of Interest, и снять видео с несколькими облётами по кругу на нескольких уровнях, а задача коптера только держать в центре кадра объект.
Oz_Alex
05.08.2022 15:35Это сработает для точки, но не для области или территории.
В pix4d я выбирал именно область с длиной и шириной и выбирал условно разрешение.
То есть на области в 50х20 метров было пять пролётов по длине и два по ширине с фотографией каждую секунду.DirectX
05.08.2022 15:39Для такого случая нужно ставить платное альтернативное приложение Litchi.
Oz_Alex
05.08.2022 15:41Пробовал, не осилил и не понравилось. Помимо того — допустим план полёта мы сделали в литчи, что делать с фотками? Что их будет обрабатывать в 3d?
Поскольку заказчик был готов платить — pix4d на тот момент был лучше и решал больше проблем, поскольку там было и приложение для дрона и приложение для компа.
Notespeak Автор
07.08.2022 15:15Здравствуйте, да совершенно верно. Если нету каких-либо планировщиков по типу pix4e или litchi (ещё хуже если нет sdk) - это вполне выход.
Notespeak Автор
07.08.2022 15:13Здравствуйте, я вообще предпочитаю litchi. Я скоро опубликую ещё одну статью, где будет показано как с ним работать.
northzen
06.08.2022 15:59-1Не мучайтесь со странным софтом для построения 3Д моделями.
Возьмите отечественное (но имеющее мировую известность) решение:
https://www.agisoft.com
У них, вроде, была бесплатная раздача лицензии на профессиональную версию до августа или сентября. Отличный софт, много что умеет.
vlad49
06.08.2022 17:41+1Оффтопик, но две лишние запятые в заголовке прямо очень сильно резанули. Повальная сейчас проблема у многих авторов. Но именно из-за них обратил внимание на статью и интересный туториал :)
DirectX
Хороший туториал. Могу еще посоветовать аналогичный софт Meshroom