COLMAP
COLMAP — это кроссплатформенная программа с открытым исходным кодом для фотограмметрии и трёхмерной реконструкции, предназначенная для построения плотных облаков точек и трёхмерных моделей объектов и сцен на основе набора двумерных изображений. Основным методом работы COLMAP является структура из движения (Structure from Motion, SfM) и мультивидовая стереозрение (Multi-View Stereo, MVS). Программа разрабатывается на кафедре информатики Технического университета Мюнхена (TUM) и распространяется под лицензией BSD.
История
Разработка COLMAP началась в 2014 году в рамках исследовательской работы группы Computer Vision and Artificial Intelligence Group Технического университета Мюнхена под руководством профессора Даниэля Кремерса. Первая публичная версия была выпущена в 2016 году. Проект быстро приобрёл популярность в научном сообществе благодаря своей эффективности, точности и открытости исходного кода. Ключевые версии включают:
- 2016 год — релиз COLMAP 1.0, реализующий базовые алгоритмы SfM и MVS.
- 2018 год — версия 3.4, в которой были добавлены поддержка облачных вычислений и улучшенные методы глобальной оптимизации.
- 2020 год — версия 3.7, включающая интеграцию с нейросетевыми методами (например, COLMAP + NeRF).
- 2023 год — версия 3.9, с улучшенной поддержкой GPU-ускорения и новыми алгоритмами для работы с большими наборами данных.
Принцип работы
COLMAP реализует двухэтапный конвейер обработки изображений.
Этап 1: Структура из движения (SfM)
На этом этапе программа определяет взаимное расположение камер и трёхмерные координаты характерных точек сцены. Процесс включает:
- Извлечение и сопоставление признаков — с помощью алгоритмов SIFT (Scale-Invariant Feature Transform) или его модификаций (например, RootSIFT) на каждом изображении находятся ключевые точки, которые затем сопоставляются между парами снимков.
- Оценка относительной ориентации — для каждой пары изображений вычисляется фундаментальная матрица или матрица гомографии, позволяющая определить взаимное положение камер.
- Глобальная оптимизация — с помощью метода пучковой коррекции (Bundle Adjustment) минимизируется ошибка перепроецирования всех трёхмерных точек на все изображения, что позволяет получить согласованную трёхмерную модель и точные параметры камер (фокусное расстояние, дисторсия, положение в пространстве).
Этап 2: Мультивидовая стереозрение (MVS)
После получения разреженного облака точек и параметров камер COLMAP переходит к плотной реконструкции. На этом этапе для каждого пикселя изображения вычисляется глубина, что позволяет получить плотное облако точек. Используются методы:
- PatchMatch Stereo — итеративный алгоритм, который для каждого пикселя находит наилучшую плоскость глубины, минимизируя фотометрическую ошибку между соседними изображениями.
- Глобальная оптимизация глубины — с помощью методов, основанных на графах (Graph Cut) или вариационных подходах, устраняются артефакты и сглаживаются результаты.
Классификация и виды
COLMAP можно классифицировать по нескольким признакам:
- По типу реконструкции:
- Разреженная реконструкция (SfM) — создание облака из нескольких тысяч характерных точек.
- Плотная реконструкция (MVS) — создание облака из миллионов точек, пригодного для построения полигональных сеток.
- По способу ввода данных:
- Автоматический режим — программа сама определяет порядок обработки и параметры.
- Ручной режим — пользователь может задавать калибровку камер, маски, ограничения.
- По вычислительной платформе:
- CPU-версия — работает на центральном процессоре, подходит для небольших наборов данных.
- GPU-версия — использует видеокарту (CUDA) для ускорения вычислений, рекомендуется для больших проектов.
Устройство и интерфейс
COLMAP имеет два основных режима работы:
- Графический интерфейс (GUI) — предоставляет визуальное представление облака точек, панели управления и инструменты для редактирования. Позволяет в реальном времени просматривать результаты, добавлять или удалять изображения, изменять параметры.
- Командная строка (CLI) — используется для пакетной обработки, автоматизации и интеграции в скрипты. Команды позволяют запускать все этапы реконструкции с заданными параметрами.
Программа поддерживает импорт изображений в форматах JPEG, PNG, TIFF, а также экспорт результатов в форматы PLY, OBJ, XYZ, PCD и другие. Внутренняя структура данных основана на бинарных файлах (.bin) и текстовых файлах (.txt), что позволяет легко обмениваться данными с другими программами (например, MeshLab, Blender, CloudCompare).
Применение
COLMAP широко используется в различных областях науки и техники:
- Археология и культурное наследие — создание цифровых копий памятников, артефактов и архитектурных объектов. Например, реконструкция древнеримских форумов или египетских гробниц.
- Геодезия и картография — построение цифровых моделей рельефа (ЦМР) и ортофотопланов на основе аэрофотосъёмки с беспилотных летательных аппаратов.
- Робототехника — использование для визуальной одометрии и построения карт окружающей среды (SLAM) в мобильных роботах и дронах.
- Компьютерная графика и анимация — создание трёхмерных моделей для игр, фильмов и виртуальной реальности. COLMAP часто используется в пайплайнах для генерации данных для нейросетей, таких как NeRF (Neural Radiance Fields) и 3D Gaussian Splatting.
- Медицина — реконструкция трёхмерных моделей органов и тканей по серии медицинских снимков (например, КТ или МРТ), хотя для этого существуют специализированные инструменты.
Примеры использования
- Реконструкция собора Святого Петра в Риме — в 2019 году группа исследователей из TUM использовала COLMAP для создания детальной трёхмерной модели фасада собора на основе 5000 фотографий, сделанных с земли и с дрона.
- Создание цифровых двойников городов — в рамках проекта «Умный город» в Москве (Россия) COLMAP применялся для построения трёхмерных моделей отдельных зданий и кварталов по данным аэрофотосъёмки.
- Интеграция с нейросетями — в 2022 году компания NVIDIA выпустила инструмент Instant NeRF, который использует COLMAP для предварительного вычисления параметров камер, а затем обучает нейросеть для синтеза новых видов сцены.
Критика и ограничения
Несмотря на широкую популярность, COLMAP имеет ряд недостатков:
- Высокие требования к вычислительным ресурсам — для больших наборов данных (более 10 000 изображений) требуется значительное время обработки и объём оперативной памяти (до 64 ГБ и более).
- Чувствительность к качеству исходных изображений — размытые, пересвеченные или снятые с большим движением камеры снимки могут привести к ошибкам в сопоставлении признаков и снижению точности.
- Отсутствие встроенной поддержки текстур — COLMAP создаёт только облака точек и сетки, но не генерирует текстуры для моделей. Для текстурирования требуется использование сторонних инструментов (например, MeshLab или Blender).
- Сложность настройки — для достижения оптимальных результатов пользователю необходимо понимать принципы фотограмметрии и уметь подбирать параметры (например, пороги для сопоставления признаков, параметры фильтрации глубины).
Интересные факты
- COLMAP является одним из самых цитируемых проектов в области компьютерного зрения — по состоянию на 2024 год на него ссылаются более 5000 научных статей.
- Исходный код программы написан на C++ и Python, что позволяет легко модифицировать и расширять функциональность.
- COLMAP поддерживает работу с камерами, имеющими неизвестные параметры — программа может автоматически оценить фокусное расстояние, дисторсию и положение камеры на основе анализа изображений.
Источники
- Johannes L. Schönberger, Jan-Michael Frahm. «Structure-from-Motion Revisited». Proceedings of the IEEE Conference on Computer Vision and Pattern Recognition (CVPR), 2016.
- Johannes L. Schönberger, Enliang Zheng, Jan-Michael Frahm, Marc Pollefeys. «Pixelwise View Selection for Unstructured Multi-View Stereo». European Conference on Computer Vision (ECCV), 2016.
- Официальная документация COLMAP: https://colmap.github.io/
- Технический университет Мюнхена, кафедра информатики. «COLMAP: A General-purpose Structure-from-Motion and Multi-View Stereo Pipeline». 2020.
BFOmetr — база данных и аналитика по компаниям России.
На главную BFOmetr →