Structure from Motion, или SfM, - это один из базовых этапов современного 3D-захвата. Он помогает восстановить, где находилась камера в момент каждого снимка, найти общие точки между фотографиями и собрать начальную геометрию сцены. Дальше этот результат можно использовать в фотограмметрии, геодезии, построении облаков точек, мешей, ортофото, а также как входной этап для Gaussian Splatting-пайплайнов.
Этот материал адаптирован по техническому отчету USGS о workflow в Agisoft Metashape Professional Edition. Оригинал был написан для обработки береговой аэрофотосъемки и версии Metashape 1.6, поэтому здесь мы оставляем универсальные принципы, но убираем узкую GIS-специфику и переводим процесс в более практичный формат для 3D-реконструкции и подготовки данных к веб-просмотру.
Важно: это не официальный перевод USGS и не замена документации Agisoft. Интерфейс Metashape 2.x мог измениться по сравнению с Metashape 1.6, поэтому перед production-пайплайном стоит сверить названия команд и параметры с актуальной версией программы.
Ключевая идея
SfM отвечает на два вопроса:
- Где была камера? Алгоритм оценивает положение и ориентацию каждого снимка.
- Какие точки сцены видны на разных фото? Он ищет совпадающие признаки и строит разреженное облако точек.
Если фотографий достаточно, они резкие, хорошо перекрываются и сняты с разных ракурсов, программа может связать их в единую 3D-сцену. В Metashape этот процесс обычно начинается с выравнивания фотографий, затем продолжается оптимизацией ошибок и построением более плотных продуктов: dense cloud, mesh, DEM или orthomosaic.
Для 3DGS особенно важны первые этапы: корректные позы камер и устойчивое начальное облако точек. Если SfM-сцена плохо выровнена, Gaussian Splatting тоже будет страдать: появятся разрывы, “плавающие” детали, шум, дублирующиеся поверхности и нестабильная навигация.
Когда этот подход подходит
Workflow из отчета USGS создавался для больших наборов аэрофотоснимков береговой линии, но принципы применимы шире:
- съемка помещений и фасадов;
- объекты культурного наследия;
- строительные площадки и инфраструктура;
- ландшафты и открытые пространства;
- подготовка исходных данных для 3DGS, NeRF или классической фотограмметрии.
Ограничение в том, что Metashape и SfM в целом любят сцены с фактурой и устойчивыми визуальными признаками. Гладкие белые стены, блестящий металл, стекло, вода, движущиеся люди, деревья на ветру и повторяющиеся узоры часто ухудшают результат.
Что подготовить перед обработкой
Хороший результат начинается до запуска Metashape.
Фотографии
Лучше использовать исходники без сильной компрессии и с сохраненными EXIF-данными. В отчете USGS упоминаются JPG, TIFF и DNG как практичные форматы для Metashape. RAW-форматы камеры обычно нужно предварительно конвертировать в поддерживаемый формат.
Для 3DGS и фотограмметрии важны:
- резкость по всей сцене;
- стабильная экспозиция;
- отсутствие motion blur;
- достаточное перекрытие между соседними кадрами;
- разные ракурсы, а не десятки почти одинаковых фото с одной точки;
- отсутствие радикальных изменений света между кадрами.
В Metashape можно оценить качество снимков через инструмент оценки image quality. В оригинальном workflow USGS снимки с низкой оценкой качества предлагалось отключать или удалять из проекта, потому что один плохой кадр может тянуть за собой ошибки выравнивания.
Перекрытие
Для аэрофотосъемки USGS использовали высокий уровень перекрытия между кадрами. В прикладном 3D-захвате правило то же: каждый участок сцены должен быть виден на нескольких фотографиях. Если overlap слабый, Metashape не сможет надежно сопоставить признаки, а облако точек развалится на отдельные фрагменты.
Практический ориентир:
- двигайтесь плавно вокруг объекта или вдоль пространства;
- держите соседние кадры похожими, но не идентичными;
- снимайте дополнительные углы для сложных мест;
- избегайте резких прыжков между дальними точками съемки.
Координаты и контрольные точки
Для геодезических задач нужны координаты камер, GCP и системы координат. Для обычного 3DGS-пайплайна это не всегда обязательно: сцена может быть восстановлена в локальной системе координат.
Но контрольные точки все равно полезны, если нужна масштабная точность: например, чтобы модель соответствовала реальным метрам, корректно встраивалась в BIM/GIS или использовалась для измерений.
Базовый workflow в Metashape
Оригинальный отчет USGS делит процесс на несколько крупных этапов:
- импорт изображений;
- настройка камер и групп;
- выравнивание фотографий;
- добавление контрольных точек;
- оптимизация ошибок;
- построение dense cloud, mesh, DEM или orthomosaic;
- экспорт результатов;
- пакетная обработка для повторяемых проектов.
Для сайта про 3DGS важнее всего этапы 1-5 и экспорт данных, которые затем можно использовать дальше.
Шаг 1. Создать проект и импортировать фото
В Metashape фотографии добавляются в проект и попадают в рабочую область как cameras. Это может сбивать с толку: в интерфейсе “camera” часто означает не физическую камеру, а конкретный снимок с конкретной позицией.
Если съемка делалась несколькими проходами, днями или устройствами, лучше сразу разложить изображения по группам. Это помогает не смешивать разные условия съемки и упрощает диагностику.
Для больших проектов имеет смысл сохранять проект в формате, который поддерживает связанные файлы и тяжелые продукты обработки. В Metashape также полезно дублировать chunks перед необратимыми или долгими операциями: это дает точку возврата без полного перерасчета.
Шаг 2. Проверить калибровку камеры
Калибровка камеры описывает внутренние параметры съемки: фокусное расстояние, положение центра проекции, дисторсию объектива и другие коэффициенты. SfM может оценивать часть этих параметров автоматически, но качество результата зависит от исходных данных.
Если снимки сделаны одной камерой и одним объективом, их можно держать в одной camera calibration group. Если использовались разные камеры, разные фокусные расстояния или разные режимы съемки, группы лучше разделить.
Что важно для практики:
- не смешивать камеры и объективы без необходимости;
- сохранять EXIF, если он корректный;
- осторожно относиться к снимкам с сильной дисторсией;
- не включать дополнительные коэффициенты калибровки без понимания, зачем они нужны.
В отчете USGS отдельно подчеркивается, что не все параметры стоит подгонять автоматически для каждой камеры. Чем больше свободных параметров, тем выше риск получить красивую, но физически сомнительную оптимизацию.
Шаг 3. Выровнять фотографии
Alignment - первый критический этап. Metashape ищет key points на отдельных фотографиях, сопоставляет их между кадрами и строит tie points. На основе этих соответствий программа восстанавливает положение камер и разреженное облако точек.
Типичные параметры, которые стоит контролировать:
- качество выравнивания;
- generic preselection или reference preselection, если есть координаты;
- лимиты key points и tie points;
- количество выровненных камер;
- распределение tie points по сцене;
- грубые ошибки в позициях камер.
Если после alignment часть фотографий не выровнялась, не стоит сразу продолжать. Лучше понять причину: слабое перекрытие, смаз, однообразная поверхность, другой фокус, другая экспозиция или резкий скачок маршрута съемки.
Для 3DGS это особенно важно: плохой alignment часто проще исправить на этом этапе, чем потом лечить шум в итоговой сцене.
Шаг 4. Добавить GCP или check points, если нужна точность
Ground control points помогают привязать модель к реальному миру. В Metashape точки можно использовать как контрольные или проверочные:
- control points участвуют в оптимизации;
- check points не двигают модель, а помогают оценить ошибку.
Для маркетингового 3DGS-тура по интерьеру GCP могут быть необязательны. Для картографии, строительства, мониторинга берегов, археологии или измерений они становятся намного важнее.
Практическое правило: если результат будет использоваться для принятия решений, измерений или сравнения во времени, нужны контроль качества и независимая проверка ошибок. Если задача только визуальная, можно работать в локальном масштабе, но все равно полезно иметь хотя бы один известный размер для проверки.
Шаг 5. Снизить ошибки через Gradual Selection и оптимизацию
После alignment в разреженном облаке почти всегда есть плохие tie points. Они появляются из-за бликов, воды, движения, повторяющихся текстур, теней и слабого перекрытия. Если их оставить, они ухудшают оценку камер и последующие продукты.
В отчете USGS подробно описан цикл очистки:
- отфильтровать точки по reconstruction uncertainty;
- оптимизировать камеры;
- отфильтровать по projection accuracy;
- снова оптимизировать;
- отфильтровать по reprojection error;
- повторять осторожно, пока ошибка не перестает улучшаться.
Смысл не в том, чтобы удалить как можно больше точек. Смысл в том, чтобы убрать точки, которые явно ухудшают геометрию, и не разрушить полезную структуру сцены. Если после каждой чистки ошибка падает, а сцена остается связной, процесс помогает. Если tie points быстро исчезают, камеры начинают вести себя странно или метрики ухудшаются, нужно остановиться и вернуться к предыдущему chunk.
Для 3DGS этот этап можно воспринимать как подготовку “чистой” геометрической основы. Чем стабильнее позы камер, тем меньше проблем будет на обучении или конвертации сцены.
Шаг 6. Построить dense cloud или другой продукт
После выравнивания и оптимизации Metashape может строить более плотные продукты:
- dense cloud - плотное облако точек;
- mesh - полигональная поверхность;
- DEM/DSM/DTM - модели высот для геодезических задач;
- orthomosaic - ортофото, собранное из снимков.
Для классической фотограмметрии dense cloud и mesh часто являются главным результатом. Для GIS-процессов важны DEM и orthomosaic. Для 3DGS чаще интереснее не сам dense cloud, а корректные камеры и исходные изображения, но плотное облако может быть полезно для проверки геометрии, маскирования, выравнивания масштаба и диагностики.
Если Metashape строит dense cloud с большим количеством “летящих” точек, дыр, дублирующихся поверхностей или шумных областей, это сигнал вернуться к исходникам и alignment. Проблема редко исчезает сама в следующем этапе.
Шаг 7. Экспортировать результат
Что экспортировать, зависит от дальнейшего пайплайна.
Для фотограмметрии:
- dense cloud в LAS/LAZ/PLY или другом нужном формате;
- mesh в OBJ/FBX/PLY;
- текстуры;
- DEM и orthomosaic, если нужна картография.
Для 3DGS-подготовки:
- исходные фотографии;
- параметры камер и позы;
- разреженное облако точек;
- при необходимости - плотное облако или mesh для проверки масштаба и ориентации.
При экспорте важно не потерять связь между именами изображений и параметрами камер. Если downstream-инструмент ожидает COLMAP-структуру или другой конкретный формат, экспорт нужно планировать заранее.
Частые проблемы
Сцена развалилась на несколько частей
Обычно не хватает overlap или есть резкий разрыв в маршруте съемки. Помогают дополнительные фотографии переходных зон, разделение на chunks или ручная проверка групп.
Камеры выровнялись, но геометрия “плывет”
Причины: слабая калибровка, слишком много ошибочных tie points, повторяющийся паттерн, мало ракурсов, плохие EXIF или неверные координаты. Стоит проверить calibration groups и аккуратно пройти error reduction.
Dense cloud шумный
Сначала нужно проверить alignment. Если разреженное облако уже выглядит плохо, dense cloud только усилит проблему. Также стоит проверить маски, движущиеся объекты и отражающие поверхности.
Модель выглядит хорошо, но масштаб неверный
Для визуального 3D это может быть терпимо, но для измерений нет. Нужны GCP, scale bars или другой источник масштаба.
Metashape долго считает или падает
Большие проекты быстро упираются в GPU, VRAM, RAM и размер файлов. В отчете USGS отдельно описаны настройки GPU, хранение key points/depth maps и разбиение задач. На практике помогает работать с chunks, сохранять контрольные копии и не включать максимальные настройки без причины.
Как это связано с Gaussian Splatting
Gaussian Splatting не отменяет SfM. В большинстве практических пайплайнов ему все равно нужны исходные изображения и восстановленные камеры. SfM дает сцене каркас: где были снимки, как они смотрели на объект и какие точки связывают фотографии между собой.
Можно упростить так:
- Вы снимаете объект или пространство.
- SfM восстанавливает камеры и начальную геометрию.
- 3DGS оптимизирует миллионы гауссиан так, чтобы они совпадали с исходными изображениями.
- Веб-просмотрщик показывает результат в браузере.
Если первый этап слабый, Gaussian Splatting будет пытаться компенсировать ошибочную геометрию. Иногда он визуально “склеит” сцену, но чаще появятся артефакты: мутные участки, шум, неправильные глубины, дрожание тонких деталей и неудобная навигация.
Поэтому хороший SfM - это не академическая формальность, а практическая основа качественной 3DGS-сцены.
Практический чеклист перед публикацией 3D-сцены
- Фотографии резкие и без сильного смаза.
- Каждый важный участок виден на нескольких кадрах.
- Камеры выровнены без очевидных выбросов.
- Разреженное облако покрывает всю сцену, а не только отдельные зоны.
- Ошибочные tie points очищены без чрезмерного удаления полезных точек.
- Масштаб проверен, если он важен.
- Движущиеся объекты, вода, стекло и зеркала обработаны или исключены.
- Экспорт сохраняет связь между изображениями и камерами.
- Итоговая сцена проверена в viewer на desktop и mobile.
Вывод
Отчет USGS полезен не потому, что его параметры нужно копировать дословно, а потому, что он показывает зрелую инженерную логику SfM-процесса: контролировать исходники, не доверять alignment вслепую, отслеживать ошибки, сохранять точки возврата и понимать, какой продукт нужен на выходе.
Для 3DGS эта логика особенно важна. Чем лучше подготовлены фотографии и камеры, тем меньше времени уйдет на борьбу с артефактами, тяжелыми файлами и нестабильным просмотром в браузере.
Источники
- Over, J.R., Ritchie, A.C., Kranenburg, C.J., Brown, J.A., Buscombe, D., Noble, T., Sherwood, C.R., Warrick, J.A., and Wernette, P.A., 2021, Processing coastal imagery with Agisoft Metashape Professional Edition, version 1.6 - Structure from motion workflow documentation: U.S. Geological Survey Open-File Report 2021-1039. https://doi.org/10.3133/ofr20211039
- Agisoft Metashape downloads and current release information: https://www.agisoft.com/downloads/installer/
- Agisoft Metashape documentation and tutorials: https://www.agisoft.com/support/