Вступление
В прошлой моей статье, мы рассматривали как Litchi - альтернативный клиент для создания сценариев полета для DJI дронов, позволяет создавать 3d модели объектов бесплатно с использованием OpenDroneMap.
Сегодня, мы ознакомимся с функционалом Agisoft Metashape Professional - отечественным программным обеспечением для создания ортопланов и моделей и сравним его с OpenDroneMap.
Установка
Вы можете ознакомиться с системными требованиями тут. Сразу отмечу, что со средним ПК: (core i7 4790k, 16GB ram, RX580), Metashape не сможет обрабатывать наборы данных, более 1500-1700 фотографий в хорошем разрешении. После установки, выбираем опцию "Start a free 30-day trial".
![Окно активации бесплатной лицензии. Окно активации бесплатной лицензии.](https://habrastorage.org/getpro/habr/upload_files/6e0/8cd/7f3/6e08cd7f35b5693f4a33fbe9178b5654.png)
Требования к съемке
Настройки камеры
Для корректной работы Agisoft, рекомендуется использоваться формат RAW с целью уменьшения количества шумов и использовать минимально возможный размер диафрагмы для получения максимальной резкости;
Избегать размытия изображений;
Наличие ND фильтра значительно помогает снимать объекты, которые сильно отражают свет.
Основные правила
При съемке избегайте прозрачные или отражающие свет поверхности;
Попадание в кадр нежелательных объектов на переднем плане;
По возможности не допускайте изменения взаимного расположения объектов в процессе съемки;
Снимайте блестящие объекты в облачную погоду;
Делайте снимки с большим перекрытием;
Наиболее важные детали рекомендуется снимать с 3 и более ракурсов.
Сценарии съемки
Agisoft представляет в своей документации ряд полезных рекомендаций для съемки плоских объектов и интерьеров.
![Рекомендации для съемки. Agisoft Metashape Pro. Рекомендации для съемки. Agisoft Metashape Pro.](https://habrastorage.org/getpro/habr/upload_files/415/c4c/0ae/415c4c0ae352e8c0ca97cd727232a22a.png)
После cъемки объекта, рассмотрим процесс построения 3D модели.
Знакомство с интерфейсом
Agisoft Metashape обладает полным набором инструментов для создания, редактирования и измерения 3D моделей.
![Вкладка File позволяет выполнять действия сохранения, импорта и экспорта. Вкладка File позволяет выполнять действия сохранения, импорта и экспорта.](https://habrastorage.org/getpro/habr/upload_files/bcc/b39/3c2/bccb393c2813313ec8a8e51f4779356d.png)
![Вкладка View позволяет нам управлять камерой, а также разделами рабочего пространства. Вкладка View позволяет нам управлять камерой, а также разделами рабочего пространства.](https://habrastorage.org/getpro/habr/upload_files/eef/56b/6a9/eef56b6a97af8636bdf629b539ba511d.png)
![Вкладка Model позволяет переключаться в режим выбора области, ставить точки, полигоны. Также данный раздел имеет очень полезные подразделы View Mode, который позволяет быстро переключатся между видами модели и Navigation Mode, реализующий быстрое переключения свободного и горизонтального типа просмотра. Вкладка Model позволяет переключаться в режим выбора области, ставить точки, полигоны. Также данный раздел имеет очень полезные подразделы View Mode, который позволяет быстро переключатся между видами модели и Navigation Mode, реализующий быстрое переключения свободного и горизонтального типа просмотра.](https://habrastorage.org/getpro/habr/upload_files/bec/557/d28/bec557d2801c8ece534e7ecc34bdea67.png)
![Вкладка Photo служит для переключения в режим выбора области, ставить точки, полигоны и выделять области. Вкладка Photo служит для переключения в режим выбора области, ставить точки, полигоны и выделять области.](https://habrastorage.org/getpro/habr/upload_files/844/002/69b/84400269ba5371d996ca811c1dc01a8a.png)
![Orto во многом повторяет функции photo, однако тут есть возможность быстрого переключения между DEM и ортомозаикой. Orto во многом повторяет функции photo, однако тут есть возможность быстрого переключения между DEM и ортомозаикой.](https://habrastorage.org/getpro/habr/upload_files/214/0f3/58a/2140f358a72cfcb8a35b8f7367ff9e57.png)
![Присутствует удобная возможность скрывать ненужные элементы интерфейса. Присутствует удобная возможность скрывать ненужные элементы интерфейса.](https://habrastorage.org/getpro/habr/upload_files/674/655/06e/67465506e00210d3ae766ead0cf828df.png)
![В разделе Tools присутствует множество очень полезных функций, которые позволяют детально настроить процессы построения, изменить настройки камеры, увеличить четкость всех снимков. Присутствуют очень важные подразделы, такие как: планирование миссии и определение ЛЭП, которые используются для создания автономных сценариев полета. В разделе Tools присутствует множество очень полезных функций, которые позволяют детально настроить процессы построения, изменить настройки камеры, увеличить четкость всех снимков. Присутствуют очень важные подразделы, такие как: планирование миссии и определение ЛЭП, которые используются для создания автономных сценариев полета.](https://habrastorage.org/getpro/habr/upload_files/bbc/6c9/844/bbc6c9844cf9f99c3668a54457ff4778.png)
Cоздание первой модели
Для начала нам нужно импортировать изображения. Для этого кликаем правой кнопкой на chunk и выбираем фотографии или папку.
![](https://habrastorage.org/getpro/habr/upload_files/fc0/c9a/8e3/fc0c9a8e38ab41804d9e6269fdf427a2.png)
После импорта, откроем пункт Workflow и нажмем на Align Photos.
![](https://habrastorage.org/getpro/habr/upload_files/a80/8d4/1fb/a808d41fb31a8d95b6d63f663ac6096c.png)
Данный процесс необходим для идентификации камеры и элементов внешнего ориентирования.
Рекомендую использовать нижеуказанные параметры, так как неточно выровненные снимки могут значительно ухудшить качество модели.
![Меню выравнивания изображений. Меню выравнивания изображений.](https://habrastorage.org/getpro/habr/upload_files/7b5/110/310/7b5110310e02d183bb0d8bde6718ffa7.png)
После выполнения всех вычислений, можно увидеть первый набор данных - разряженное облако точек и информацию о положении и ориентации камер.
![Построенное разряженное облако точек. Построенное разряженное облако точек.](https://habrastorage.org/getpro/habr/upload_files/1a0/d11/a71/1a0d11a71b81a78e53566c74e22704e0.png)
На основании положений камер, рассчитанных на первом этапе обработки и используемых снимков, Metashape может построить плотное облако точек. Для этого переходим в workflow, Build Dense Cloud. Уменьшение качества плотного облака позволяет быстрее обработать набор данных, но ухудшает качество.
![Меню построение плотного облака точек Меню построение плотного облака точек](https://habrastorage.org/getpro/habr/upload_files/653/dc6/b2c/653dc6b2c5ec247c558d00a75e6b32b1.png)
![Результат построения плотного облака точек Результат построения плотного облака точек](https://habrastorage.org/getpro/habr/upload_files/600/3f6/4ac/6003f64acb0cbb9a1eb4a1e67e93261f.png)
После выполнения вычислений можем увидеть сформированное плотное облако. Поскольку облако является набором точек для дальнейшего взаимодействия нам потребуется создать полигональную модель. Для этого переходим в Workflow, и выбираем Build Mesh. Стоит внимательно отнестись к параметрам quality и face count. При высоких значениях экспортируемая 3D модель может быть крайне большой и излишне детализированной.
![Меню построения полигональной модели. Меню построения полигональной модели.](https://habrastorage.org/getpro/habr/upload_files/3f7/6dc/2b3/3f76dc2b39f45a519b397bf1bde3efcb.png)
После построения mesh, создаем текстуру.
![](https://habrastorage.org/getpro/habr/upload_files/930/9b0/be4/9309b0be4cd9503ab4049e565f843bf8.png)
После данных операций, можно будет увидеть готовую модель.
![](https://habrastorage.org/getpro/habr/upload_files/675/ef1/e1f/675ef1e1faec445d41ae9d439dcc29cb.png)
Постобработка
Agisoft Metashape предоставляет все необходимые инструменты, которые могут потребоваться для пост обработки.
![](https://habrastorage.org/getpro/habr/upload_files/cbb/5a1/cff/cbb5a1cffc72386181f6316e0d6cec82.png)
Мы можем работать с полигональной моделью, что значительно упрощает процесс получение конечного результата. Во вкладке Tools -> Mesh, можно посмотреть детальную статистику о построенном объекте. Присутствует функционал исправления топологических нарушений, сглаживания и полигональной оптимизации. Подробнее о данных разделах можно ознакомиться в официальной документации.
![](https://habrastorage.org/getpro/habr/upload_files/111/cc0/674/111cc0674c63733f92d58320ab1d67eb.png)
Планирование полетов
В Agisoft Metashape Pro есть функционал, позволяющий выполнить качественную съемку объекта, с учетом внешних препятствий, ЛЭП и прочего.
Рассмотрим пример оцифровки дачного дома. Для начала необходимо сделать небольшую серию фотографий, чтобы Metashape Pro понял общую геометрию объектов.
![](https://habrastorage.org/getpro/habr/upload_files/35f/caf/c30/35fcafc304840cfe4c1f4dfd095b65bf.png)
![Как можно увидеть, Metashape Pro успешно обнаружил провода, идущие между участками. Теперь создадим зоны, используя инструмент polygon. Как можно увидеть, Metashape Pro успешно обнаружил провода, идущие между участками. Теперь создадим зоны, используя инструмент polygon.](https://habrastorage.org/getpro/habr/upload_files/6b0/630/51d/6b063051d1d6bac896037d3eb1ef2658.png)
![Обводим силуэт дома и добавляем его слой interesting. Название делаем аналогичным. Обводим силуэт дома и добавляем его слой interesting. Название делаем аналогичным.](https://habrastorage.org/getpro/habr/upload_files/d24/fa2/7d0/d24fa27d07a96670a779a714cbfe514c.png)
![](https://habrastorage.org/getpro/habr/upload_files/daf/b9f/b97/dafb9fb97a69ee071b17a4368432a1b5.png)
![](https://habrastorage.org/getpro/habr/upload_files/a3c/41e/23c/a3c41e23cb0e12a2b3b3cfa0948b8d39.png)
![Добавляем области, в которых находятся объекты и называем их restricted. Добавляем области, в которых находятся объекты и называем их restricted.](https://habrastorage.org/getpro/habr/upload_files/3ad/c08/0b6/3adc080b692e50ee2d5663a67d13958e.png)
![Создаем домашнюю точку, которая будет использована для места запуска. Создаем домашнюю точку, которая будет использована для места запуска.](https://habrastorage.org/getpro/habr/upload_files/31e/83f/289/31e83f289138580b782a5156141da8c3.png)
Все готово, переходим во вкладу Tools и выбираем опцию Plan Mission.
Focus on interesting zone - зона объекта, вокруг которого будет строится маршрут для оцифровки;
Resolution - разрешение изображения. Чем меньше данное значение, тем ближе дрон будет подлетать к объекту и тем лучше будет результат. Обязательно включайте поведение дрона на Break при выполнении любых полетных инструкций;
Image overlap - плотность изображений. Рекомендую использовать 80%;
Safety distance - минимальная дистанция от объекта. При значениях менее 3х метров обязательно следите за поведением дрона. Полностью безопасными значениями считаются 10-15 метров;
Min altitude - минимальная высота относительно изначально заданной точки Home;
Restricted zone - запрешенная для полетов зона;
Powerlines layer - слой электропередач;
Home point - точка взлета дрона. Обязательно взлетайте ровно с той точки, которую вы отметили в интерфейсе.
После ввода данных, получаем карту полетов для дрона. Как можно увидеть, выполнить такой полет вручную невозможно.
![](https://habrastorage.org/getpro/habr/upload_files/a85/748/9fb/a857489fb2cfe5fa27a9bdccded511fe.png)
Перед тем как экспортировать план полетов, зададим параметры исходной высоты. Выберем точку Home. Далее нужно нажать Export Camera Track и выбрать удобный формат экспорта. Agisoft Metashape Pro может экспортировать карты полета в csv специально для Litchi, что крайне полезно для дронов с отсутствием нативной поддержки путевых точек.
![](https://habrastorage.org/getpro/habr/upload_files/1fe/2d2/57f/1fe2d257f4e3cb81bf0b09909bdc62be.png)
Сравнение с OpenDroneMap
В своей прошлой статье, я разбирал процесс установки и настройки бесплатного open source решения OpenDroneMap.
Платформы
У обоих решений все схоже. Присутствуют версии для Mac, Linux, Windows.
Использование вычислительных ресурсов
В отличие от Agisoft Metashape, OpenDroneMap может спокойно вычислять достаточно большие композиции с помощью процессора в 3-4 раза быстрее, однако в моих тестах, обработка 1000 изображений потребовала на 20% больше ОЗУ.
Agisoft Metashape очень хорошо использует ресурсы видеокарты, и как правило выигрывает по скорости построения модели на 5-10%.
Построение Ортоплана
Рассмотрим небольшой набор данных: OpenDroneMap извлек 11 млн точек на высоких настройках. Agisoft извлек 18 млн точек с высокими настройками.
![OpenDroneMap OpenDroneMap](https://habrastorage.org/getpro/habr/upload_files/791/33b/106/79133b106c1513bdd4ceb13f3fc591f4.png)
![Metashape Pro Metashape Pro](https://habrastorage.org/getpro/habr/upload_files/291/867/f37/291867f37bd09a3340588da978072251.jpeg)
![Ортофотография, WebODM Ортофотография, WebODM](https://habrastorage.org/getpro/habr/upload_files/085/0ae/feb/0850aefebec944d60a1df8c3e73051b5.png)
![Ортофотография, Metashape Pro Ортофотография, Metashape Pro](https://habrastorage.org/getpro/habr/upload_files/684/fc5/4b0/684fc54b0c8f05a891b8e1b0e03b780d.jpg)
Ортопланы практически идентичны.
Построение 3D моделей
Cравним обработанные текстурированные модели. Agisoft извлек 32млн. OpenDroneMap извлек 27 млн.
![OpenDroneMap OpenDroneMap](https://habrastorage.org/getpro/habr/upload_files/00e/7f5/bbd/00e7f5bbdf8c462b7aefe8722073f177.png)
![Metashape Pro Metashape Pro](https://habrastorage.org/getpro/habr/upload_files/4e8/c2d/b19/4e8c2db195c1e05ce3abe66e23e48fd2.png)
![OpenDroneMap OpenDroneMap](https://habrastorage.org/getpro/habr/upload_files/4d8/725/24d/4d872524d642421172623344844c8af2.png)
![Metashape Pro Metashape Pro](https://habrastorage.org/getpro/habr/upload_files/4d5/721/536/4d572153653653708e362d13feee33a8.png)
![OpenDroneMap OpenDroneMap](https://habrastorage.org/getpro/habr/upload_files/813/89c/e50/81389ce50b22f13dd6b09c4e34589d8d.png)
![Metashape Pro Metashape Pro](https://habrastorage.org/getpro/habr/upload_files/5c9/385/831/5c938583134d2ac04480085425b8290e.png)
Исходя из результата построения моделей,Agisoft показывает значительно лучше качество построения 3D моделей, чем OpenDroneMap.
Экспорт
Agisoft поддерживает конвертацию и экспорт во внешние источники, такие как Sketchfab, Pointscene, PointBox, Cesium, 4DMapper.
WebODM поддерживает экспорт в OpenArialMap, DroneDb. Поделиться моделью можно прямо из интерфейса.
Масштабирование/Кластеризация
Дорогой читатель, скорее всего мы с вами никогда не будем использовать данные продукты по максимуму. Однако, нам стоит учесть, что ими могут пользоваться крупные правительственные структуры, которым нужна собственная платформа, построенная на данных технологиях. Именно в таких сценариях, можно понять все плюсы и минусы, лимиты данного ПО.
Для начала разберемся как выглядит архитектура кластера в Agisoft Metashape Pro.
![](https://habrastorage.org/getpro/habr/upload_files/9dd/1b1/bef/9dd1b1befb3b753ceb5da168d7334f63.png)
В качестве первичного входного узла используется сервер координатор, управляющий очередями задач. Он принимает односторонние соединения от клиентов и вычислительных нод. Так как его функционал весьма ограничен, он может быть запущен даже на микроконтроллерах. Присутствует функционал отказоустойчивости.
Далее идут вычислительные узлы, выполняющие непосредственные расчеты. Они постоянно поддерживают соединение с сервером в ожидании получения задачи. Как только задача получена, узлы начинают расчеты, информируя сервер о ходе обработки. Результаты помещаются в общее хранилище данных, а информация о завершении процесса поступает на сервер. После этого вычислительный узел приступает к выполнению следующей задачи как только таковая становится доступна.
Клиенты могут подключаться к серверу для контроля за выполнением и статусом операций на кластере. Возможно ставить новые задачи обработки Agisoft Metashape на кластерной конфигурации клиента, в то время как для контроля работы кластера используется Agisoft Network Monitor. Несколько клиентов могут быть подключены к серверу одновременно.
Cистема хранения данных используется как клиентами так и вычислительными узлами. Она не идет "из коробки".
Из этого, мы выделяем особенности текущей конфигурации:
Весь кластер и клиенты должны находиться в рамках одной локальной сети и иметь одинаковый абсолютный путь до файлов. Это сильно препятствует возможности распределенной обработки данных, где клиентское устройство выступает одновременно в роле узла обработки и ему нужно обмениваться данными с другими членами кластера.
Сервер координатор используется исключительно для оповещений и координации.
Способа загрузки данных в самом Agisoft на систему хранения данных нет. Пользователю клиента необходимо монтировать сетевой диск, сохраняя единый путь, что может быть затруднительно при использовании разных OC.
Вычислительный узел использует ту же лицензию, что и клиент. Это значительно увеличивает затраты, не смотря на то, что узел не является полноценным "рабочим местом".
СХД - это ключевое звено, которое необходимо для функционирования всего кластера. Небольшой сбой сети, ПО или оборудования и все задачи встанут или будут начаты заново. Потребуется самостоятельно реализовывать механизмы отказоустойчивости.
OpenDroneMap - это cloud native приложение, которое поддерживает современный стек технологий и имеет полноценную микросервисную архитектуру.
![](https://habrastorage.org/getpro/habr/upload_files/c4e/11a/87d/c4e11a87d01d63a396fc9c1c14b6c7f5.png)
Пользователь загружает изображения в WebODM.
ClusterODM распределяет задачу и загружает наборы данных на узлы вычисления NodeODM.
Узлы NodeODM обрабатывают изображения, после чего пользователь может просмотреть результаты обработки в веб интерфейсе WebODM.
Из WebODM доступен экспорт конечных данных, можно поделиться моделью прямо в браузере.
Выделим важные моменты, которые обеспечивает архитектура OpenDroneMap:
Сluster ODM имеет готовые возможности автомасштабирования для облачных провайдеров.
Cluster ODM может дробить задачу на маленькие части и отсылает ее на узлы обработки NodeODM. Пользователю ничего не нужно настраивать.
Узлы обработки могут отсылать результаты на S3 сервер. Это очень удобно, так как это снимает вопрос с хранением данных в рамках кластера и позволяет иметь несколько кластеров в разных местах мира, где все данные будут поступать в единую точку хранения.
Все компоненты OpenDroneMap имеют контейнерные образы Docker, что позволяет бесплатно запустить вычислительный узел на любом устройстве. В условиях, где нужно оперативно сформировать кластер обработки данных из ПК - это спасение.
На текущий момент существует значимый недостаток - полигональная модель и текстуры не сводятся в конечный проект. Возможность дробления проекта поддерживается только для плотных облаков точек, DEM и ортопланов.
OpenDroneMap применяется для решения задач целых стран. Возьмем в качестве примера Австралийское масштабируемое облако для БПЛА.
Что общего у данных систем:
У Agisoft и OpenDroneMap реализован механизм отказоустойчивости контроллера;
Оба программных продукта не могут дробить операцию создания 3D моделей и текстурирования на разные ноды;
Реализованы готовые облачные решения для обработки изображений;
Присутствуют полноценные API;
Присутствуют механизмы создания скриптов.
Верхнеуровневая сравнительная характеристика
Итог сравнения, я решил представить в виде таблицы. Каждый параметр будет оцениваться в рамках трехбальной системы.
Критерий оценки | Agisoft | WebODM |
---|---|---|
Установка | +++ | ++ |
Интерфейс | +++ | +++ |
Удобство пользования | +++ | ++ |
Инструментарий | +++ | + |
Простота экспорта | ++ | +++ |
Качество ортокарт | +++ | +++ |
Качество 3d моделей | +++ | ++ |
Скорость построения | +++ | ++ |
Отчеты | ++ | +++ |
Помощь в пилотировании | + | - |
Кроссплатформенность | + | + |
Масштабирование/Кластеризация | + | +++ |
Наличие API | + | + |
Интерфейс | +++ | ++ |
Поддержка наземной съемки (LIDAR) | +++ | + |
Поддержка GCP | + | + |
Итого | 43 | 30 |
Agisoft Metashape присутствует на рынке с 2010 года и имеет значительные преимущества по сравнению с OpenDroneMap, так данный продукт имел большее количество времени для оптимизации алгоритмов фотограмметрии и добавление функционала.
OpenDroneMap присутствует на рынке с 2013 года и использует открытый алгоритм OpenSfM, который может уступать коммерческим решениям в ряде сценариев, но при правильном подходе и настройке он позволяет стоить ортопланы и модели, которые незначительно отличаются по качеству от Metashape Pro. Архитектура OpenDroneMap базируется на современных принципах построения программного обеспечения и может масштабироваться для решения задач планетарного масштаба.
Итоги
В результате нашего анализа, можно прийти к выводу что оба решения имеют свое заслуженное место на рынке.
OpenDroneMap отлично справляется с ортопланами, и имеет современные принципы архитектуры, которая позволяет обрабатывать огромные наборы данных. Интерфейс OpenDroneMap позволяет сразу представить результаты вычисления при помощи ссылки.
Agisoft Metashape Pro выдает лучшие результаты в рамках создания 3D моделей, а также имеет готовый инструментарий для подготовки фотографий и постобработки моделей. Agisoft Metashape Pro лучше подходит для комплексных сцен, где используются разные технологии получения плотного облака точек. Программное обеспечение умеет самостоятельно планировать оптимальный маршрут полета для БПЛА.