Алгоритм Colmappipeline:
Установка Colmap
Установите Colmap в Ubuntu Docker
Сбор данных
Сбор данных для многоракурсной 3D-реконструкции (MVS)
Работа с графическим интерфейсом Colmap
Разреженная реконструкция
Использование технологии инкрементного SfM
Среди них технология SfM происходит отGitHub - openMVG/openMVG: open Multiple View Geometry library. Basis for 3D computer vision and Structure from Motion.
1. Подготовка
- Создать каталог проекта
TestScan
- создать в нем
images
каталог и сохранить исходное изображение - бегать
colmap gui
, нажмитеfile - New Project
Всплывающее окно проекта -
在Database
щелчок по строкеNew
,существуетTestScan
каталог созданTestScan.db
Файл используется для хранения исходного адреса изображения, сопоставления признаков и других данных. - существует
Images
щелчок по строкеSelect
Выберите каталог, в котором находится исходное изображение сцены - последний клик
save
Начальная структура каталогов:
.
|-- TestScan.db
`-- images
|-- 00000000.jpg
|-- 00000001.jpg
|-- ...
`-- 00000048.jpg
2. Извлечение признаков
На этом шаге выполняется соответствующий поиск точек, который можно понимать как сопоставление глобальных признаков.
нажмитеprocessing - Feature Extraction
- Выберите модель камеры как
Pinhole
- выберите
Parameters from EXIF
: Извлечение внутренних параметров камеры из EXIF (обычно собранные эффекты содержат файлы EXIF) - Остальные параметры временно по умолчанию
затем нажмитеExtract
выполнить извлечение признаков
3. Сопоставление функций
нажмитеprocessing - Feature Matching
, все параметры установлены по умолчанию, а затем щелкнитеRun
сопоставление функций
После того, как этот шаг будет завершен, он будет сгенерирован автоматически.граф сценыиматрица соответствия(Количество объектов с одинаковыми именами между разными представлениями — это вес, а структура графа разных представлений — это узел графа)
справа
Log
Вы можете увидеть результат этих двух шагов в
4. Инкрементальное моделирование
нажмитеreconstruction - start reconstruction
Инкрементная итеративная перестройка в один клик
Этот шаг постепенно увеличивает угол обзора и итеративно оптимизирует ошибку перепроецирования. Цель состоит в том, чтобы рассчитать параметры камеры для разных видов, получить разреженное облако точек сцены и определить визуальную взаимосвязь между различными видами и облаками точек. наконец сценаРазреженное облако точеки с разных точек зренияпоза камеры
Возьмем для примера 49-е изображение (39 ракурсов).
- 576 точек облачности
- Сначала выполните оценку позы (Отчет об уточнении позы)
- Затем выполните оптимизацию BA: общее количество точек измерения слияния разреженного облака точек 149, отфильтровать 32 точки измерения.
- Ретриангуляция
- Наконец, выполняется итеративная глобальная оптимизация BA для оптимизации положения существующей камеры и координат трехмерного разреженного облака точек.
==============================================================================
Registering image #39 (49)
==============================================================================
=> Image sees 576 / 991 points
Pose refinement report
----------------------
Residuals : 1132
Parameters : 8
Iterations : 7
Time : 0.0134351 [s]
Initial cost : 0.535158 [px]
Final cost : 0.462099 [px]
Termination : Convergence
=> Continued observations: 540
=> Added observations: 73
Bundle adjustment report
------------------------
Residuals : 24684
Parameters : 2030
Iterations : 21
Time : 0.501096 [s]
Initial cost : 0.374389 [px]
Final cost : 0.367663 [px]
Termination : Convergence
=> Merged observations: 149
=> Completed observations: 27
=> Filtered observations: 32
=> Changed observations: 0.016853
Bundle adjustment report
------------------------
Residuals : 24690
Parameters : 2000
Iterations : 3
Time : 0.0764892 [s]
Initial cost : 0.430376 [px]
Final cost : 0.427614 [px]
Termination : Convergence
=> Merged observations: 10
=> Completed observations: 1
=> Filtered observations: 0
=> Changed observations: 0.000891
==============================================================================
Retriangulation
==============================================================================
=> Completed observations: 9
=> Merged observations: 186
=> Retriangulated observations: 0
Оценка и оптимизация карты глубины
Построение, накопление, оценка и оптимизация стоимости в Colmap упакованы вместе и решаются с использованием модели GEM.В основном делится на четыре шага: сопоставление затрат на построение -> накопление затрат -> оценка глубины -> оценка карты глубины
Принцип здесь временно опущен,COLMAP боевой серии с многоракурсной геометрической 3D-реконструкцией
1. Устранение искажений изображения
нажмитеreconstruction - dense reconstruction
, нажмите в окне Плотная реконструкцияselect
Выберите место хранения файлов и нажмитеundistortion
для устранения искажения изображения
⚠️Примечание: Не выбирайте здесь корневую директорию проекта, при копировании картинок будет выдаваться ошибка, что путь уже существует, что приведет к падению colmap gui, при этом undistortion можно нажать только один раз, а во второй раз тоже произойдет сбой, потому что путь уже существует
Искаженные изображения приведут к большим ошибкам оценки разницы во времени на краях, поэтому перед оценкой карты глубины сопоставление стоимости строится с использованием совместных ограничений оптической согласованности и геометрической согласованности.
Набор данных dtu и предварительно сконфигурированная модель обскуры уже неявно неискажены. Если вы используете самостоятельно собранный набор данных, вам необходимо изменить модель камеры на модель камеры с параметрами искажения.
2. Оценка глубины
Щелкните в окне плотной реконструкции.stereo
Выполнение оценки глубины сцены
После оценки глубины мы можем получитьphotometric
иgeometric
Карта глубины и векторная карта нормалей под
Этот шаг медленный и ресурсоемкий
Затем нажмите на них в красном поле, чтобы просмотреть карту глубины и карту нормалей после оптической согласованности, фотометрической и геометрической согласованности.
Colmap использует оптическую согласованность для оценки как глубины, так и нормальных значений угла обзора, а также использует геометрическую согласованность для оптимизации карты глубины.
плотная реконструкция
нажмитеFusion
Плотная реконструкция на основе слияния карт глубины
После перестройки он будет вdense
генерируется вply
файл модели
Визуальный дисплей
Meshlab
УстановитьMeshLabдля отображения
sudo snap install meshlab
[Ошибка: meshlab не может открыть файл ply]
анализ проблемы: Откройте файл ply в текстовом браузере и найдите все искаженные символы после заголовка.
Перерыл много информации, так и не нашел решения.Наконец, я попросил у брата скрипт на питоне, отображающий ply, в основном с использованием библиотеки open3d и это удалось?, эта история говорит нам о том, что слушая совет учителя и брата может сэкономить целое время отладки во второй половине дня Скрипт размещен на гитхабе и пока не является открытым исходным кодом, если он вам нужен, вы можете оставить сообщение~
! !решение: После месяца блужданий наконец-то нашел решение
sudo snap install --devmode meshlab
Недавние установки meshlab используют snap, модель безопасности, которая запрещает приложениям просматривать содержимое каталога и открывать файлы, поэтому использование devmode для установки meshlab нарушает ограничения.
Colmap GUI
Или используйте официальный метод визуализации Colmap GUI, нажмитеFile - Import model from...
, выберите сгенерированныйfused.ply
Вы можете открыть его, чтобы просмотреть эффект объединенного облака точек; однако,meshed-poisson.ply
Не могу открыть, все еще нужно использовать Meshlab
Анализ промежуточных данных — матрица сопоставления
нажмитеExtras - Match Matrix
Матрица соответствия текущей сцены может быть экспортирована
Отсюда мы можем увидеть закон движения камеры в перетасованном изображении. Если камера сэмплирует по окружности объекта, в соответствующей матрице будут полосы.Чем сильнее параллельность между полосами, тем жестче контроль движения камеры.
Глядя на сравнительные таблицы и выводы некоторых других людей, ранний контроль набора данных влияет на эффект воспроизводства.
Операции командной строки Colmap
готов сimages
файлы каталога изображений
- Извлечение признаков
colmap feature_extractor \
--database_path ./database.db \
--image_path ./images
вывод: Сохранение характерных точек в файле database.db. 2.Сопоставление характерных точек
colmap exhaustive_matcher \
--database_path ./database.db
- Разреженная реконструкция
mkdir sparse
colmap mapper \
--database_path ./database.db \
--image_path ./images \
--output_path ./sparse
вывод:sparse
папка, структура каталогов выглядит следующим образом:
└── sparse
└── 0
├── cameras.bin # 相机内参
├── images.bin # 相机位姿
├── points3D.bin # 稀疏3D点
└── project.ini
- Устранение искажений изображения
mkdir dense
colmap image_undistorter \
--image_path ./images \
--input_path ./sparse/0 \
--output_path ./dense \
--output_type COLMAP \
вывод:dense
папка, структура каталогов выглядит следующим образом:
└── dense
├── images
│ ├── 0.JPG
│ ├── ...
│ └── 48.JPG
├── run-colmap-geometric.sh
├── run-colmap-photometric.sh
├── sparse
│ ├── cameras.bin
│ ├── images.bin
│ └── points3D.bin
└── stereo
├── consistency_graphs
├── depth_maps
├── fusion.cfg
├── normal_maps
└── patch-match.cfg
- плотная реконструкция
colmap patch_match_stereo \
--workspace_path ./dense \
--workspace_format COLMAP \
--PatchMatchStereo.geom_consistency true
вывод:dense/stereo
папка, рассчитанная для каждого изображенияdepth_map
иnormal_map
└── dense
├── images
│ ├── 0.JPG
│ ├── ...
│ └── 48.JPG
├── run-colmap-geometric.sh
├── run-colmap-photometric.sh
├── sparse
│ ├── cameras.bin
│ ├── images.bin
│ └── points3D.bin
└── stereo
├── consistency_graphs
├── depth_maps
│ ├── 0.JPG.geometric.bin
│ ├── 0.JPG.photometric.bin
│ ├── ...
│ ├── ...
│ ├── 48.JPG.geometric.bin
│ └── 48.JPG.photometric.bin
├── fusion.cfg
├── normal_maps
│ ├── 0.JPG.geometric.bin
│ ├── 0.JPG.photometric.bin
│ ├── ...
│ ├── ...
│ ├── 48.JPG.geometric.bin
│ └── 48.JPG.photometric.bin
└── patch-match.cfg
- слияние
./colmap stereo_fusion \
--workspace_path ./dense \
--workspace_format COLMAP \
--input_type geometric \
--output_path ./dense/result.ply
вывод:result.ply
файл модели облака точек