Оценка параметров камеры и разреженного облака точек в COLMAP
COLMAP обрабатывает входные изображения, чтобы оценить внутренние (intrinsics) и внешние (extrinsics) параметры камеры. Также он строит разреженное облако точек, которое служит геометрической основой для обучения 3D Gaussian Splatting модели.
В этом туториале COLMAP запускается напрямую из командной строки, чтобы получить полный контроль над извлечением признаков, сопоставлением и триангуляцией. Такой подход позволяет просматривать промежуточные результаты и проще диагностировать проблемы.
Почему не использовать пайплайн Nerfstudio по умолчанию?
В Nerfstudio есть обёртка над COLMAP в виде команды ns-process-data, но она использует параметры по умолчанию, заданные в коде пайплайна. Во многих случаях этого достаточно, но на реальных сценах нередко требуются ручные настройки, иначе реконструкция может не получиться.
Например, при обработке датасета из примера через эту обёртку COLMAP зарегистрировал только 2 изображения из 84:
Starting with 84 images
Colmap matched 2 images
COLMAP only found poses for 2.38% of the images. This is low.
This can be caused by a variety of reasons, such as poor scene coverage,
blurry images, or large exposure changes.
Nerfstudio рекомендует увеличить перекрытие изображений или улучшить качество съёмки. Это полезные рекомендации, но во многих случаях можно получить рабочий результат, просто настроив параметры COLMAP напрямую.
В следующих разделах приведены точные шаги командной строки, которые использовались для успешной реконструкции этого датасета.
Операции COLMAP
Процесс в COLMAP состоит из трёх основных стадий:
- Извлечение признаков (feature extraction): детектирует устойчивые визуальные признаки (например, ключевые точки SIFT) на каждом изображении.
- Сопоставление признаков (feature matching): находит надёжные соответствия между признаками на парах изображений.
- Разреженная 3D‑реконструкция (sparse reconstruction): оценивает внутренние/внешние параметры и строит разреженное облако точек сцены.
Хотя эти операции можно выполнить через графический интерфейс (GUI) COLMAP, в этом туториале предпочтительнее командная строка (CLI) по двум причинам:
- Командная строка позволяет тонко управлять параметрами на каждом этапе.
- Она удобна для автоматизации при обработке нескольких датасетов.
Структура папки с данными
Ниже приведён пример структуры датасета, ожидаемой COLMAP и gsplat:
<dataset_root>/
├── images/
│ ├── image_0001.jpg
│ ├── image_0002.jpg
│ └── ...
├── images_2/
│ ├── image_0001.jpg
│ └── ...
├── images_4/
│ ├── image_0001.jpg
│ └── ...
├── sparse/ # COLMAP sparse reconstruction outputs
│ └── 0/ # Подпапка по умолчанию для реконструированной сцены
│ ├── cameras.bin
│ ├── images.bin
│ ├── points3D.bin
│ └── project.ini
└── colmap.db # База данных COLMAP
Примечания
- Имена файлов вроде
image_0001.jpgприведены только для примера. Последовательные имена удобны, но строгих требований к именованию нет. images_2иimages_4содержат уменьшенные в 2× и 4× версии исходных изображений. Они используются при обучении с--data_factor 2или--data_factor 4. При необходимости можно добавить дополнительные папки (например,images_8/).sparse/0/содержит результат разреженной реконструкции COLMAP. Если COLMAP построит несколько несвязанных моделей, появятся дополнительные подпапкиsparse/1,sparse/2и т. д.colmap.db— база данных, создаваемая на этапах извлечения и сопоставления признаков. В ней хранятся ключевые точки, соответствия и оценка внутренних параметров камеры.
Датасет из примера с этой структурой находится в репозитории: datasets/plush-dog. Его можно использовать для тестов или как референс при подготовке своих сцен.