提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
本文整理了开源的三维重建方法COLMAP的安装记录及实战案例。本文是在Linux系统下完成COLMAP的编译运行的,本文的计算机环境配置为:nvidia驱动版本为430.64,CUDA版本是10.1,显存是15GB。接下来将详细介绍COLMAP的安装过程,以及分享安装过程所遇到的问题,最后实战案例分析COLMAP三维重建的过程。
Colmap下载地址
git clone https://github.com/colmap/colmap.git
Colmap官方网站上提供了安装教程,官方安装教程,主要安装步骤如下:
sudo apt-get install \
git \
cmake \
build-essential \
libboost-program-options-dev \
libboost-filesystem-dev \
libboost-graph-dev \
libboost-system-dev \
libboost-test-dev \
libeigen3-dev \
libsuitesparse-dev \
libfreeimage-dev \
libmetis-dev \
libgoogle-glog-dev \
libgflags-dev \
libglew-dev \
qtbase5-dev \
libqt5opengl5-dev \
libcgal-dev
sudo apt-get install libcgal-qt5-dev
sudo apt-get install libatlas-base-dev libsuitesparse-dev
git clone https://ceres-solver.googlesource.com/ceres-solver
cd ceres-solver
git checkout $(git describe --tags) # Checkout the latest release
mkdir build
cd build
cmake .. -DBUILD_TESTING=OFF -DBUILD_EXAMPLES=OFF
make -j
sudo make install
git clone https://github.com/colmap/colmap.git
cd colmap
git checkout dev
mkdir build
cd build
cmake ..
make -j
sudo make install
安装过程到编译make的过程中出现问题,解决办法如下:
1、首先gcc-5版本太低了,更新gcc++到6.5.0
sudo add-apt-repository ppa:ubuntu-toolchain-r/test
sudo apt-get update
sudo apt-get install gcc-6 g++-6
cd /usr/bin
sudo sudo rm gcc
sudo ln -s gcc-6 gcc
sudo rm g++
sudo ln -s g++-6 g++
g++ --version
2、因为系统中已经提前安装了anaconda,它的路径和库会干扰,colmap安装的时候系统默认的库和路径,导致colmap安装编译时候找库有问题,所以需要找到并修改anaconda的文件名。等到colmap安装成功后,要记得把anaconda的文件名再修改回去。
3.如果遇到如下问题,可在colmap的CMakeList.txt文件里面添加:set(CMAKE_CXX_STANDARD 14)。
最终colmap编译安装成功的图示如下:
使用操作命令进行运行,可通过colmap -h了解有哪些命令行操作。
使用colmap gui可进入可视化界面
首先需要准备数据集,可以选择DTU数据集或者Tank and Temples数据,也可以选择自己采集的图像。
点击file-> New Project-> ,在弹出窗口里面,点击New,新建工程,并将工程保存在scan75目录下,点击select,并最后点击save保存,就在scan75的文件夹下生成一个scan75.db文件。
Processing-> Feature Extraction -> Extract
点击“processing”中的“Feature Extraction”, 弹出选择窗体,这里面,只需要将相机模型选择为“Pinhole”模型即可,其他参数默认可以不变。读者感兴趣的话,可以自行修正。一般我们采集的影像是携带有EXIF文件的,所以这里,需要选上“Parameters from EXIF”,意思是从EXIF中提取相机内参数。之后点击“Extract”即可进行特征提取。
Processing-> Feature Matching -> Run
点击“processing”中的“ Feature Matching”, 弹出选择窗体,选择默认参数,run即可。
reconstruction-> start reconstruction
点击“reconstruction”中的“start reconstruction”进行一键式重建,这里得到目标稀疏的重建点云以及各个视图的相机姿态。
reconstruction-> dense reconstruction,在新窗口:select-> ./home/zhai/scan75/ -> undistortion即可去除图像畸变。
在操作4)点击“stereo”,即可进行目标场景的深度估计。
在操作4)点击“fusion”,即可进行目标场景的稠密重建。
重建结果:
COLMAP方法对目标进行三维重建,操作简单,很容易实现。对三维重建感兴趣的朋友,可以尝试一下。