Алгоритм 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файл модели облака точек