ubuntu18.04中openmvg+openmvs的配置及使用

openmvg+openmvs

  • 1. openMVG安装
  • 2. openMVS安装
  • 3. 安装时所需的 reference
  • 4. openMVG使用
  • 5. openMVS使用

1. openMVG安装

openMVG配置过程主要参考openmvg官网

1. 首先进行外部库的安装

sudo apt-get install libpng-dev libjpeg-dev libtiff-dev libxxf86vm1 libxxf86vm-dev libxi-dev libxrandr-dev

2. 如果想要看.svg文件,安装Graphviz(可选)

sudo apt-get install graphviz

3. 下载并切换到openMVG目录

git clone --recursive https://github.com/openMVG/openMVG.git
cd openMVG
mkdir openMVG_Build && cd openMVG_Build

trick1:

在获取openMVG源以及子模块时:

git clone --recursive https://github.com/openMVG/openMVG.git

ubuntu18.04中openmvg+openmvs的配置及使用_第1张图片
转而:

git clone https://github.com/openMVG/openMVG.git 
cd openMVG 
git submodule init 
git submodule update

ubuntu18.04中openmvg+openmvs的配置及使用_第2张图片

4. 配置并生成(需要安装cmake)

cmake -DCMAKE_BUILD_TYPE=RELEASE /home/xx/openMVG/src/
cmake --build . --target install

../openMVG/src/指自己下载的openMVG中的src的路径。

trick:
cmake --build . --target install后报错:
ubuntu18.04中openmvg+openmvs的配置及使用_第3张图片
执行下面的命令前加上 sudo 添加权限:

sudo cmake -DCMAKE_BUILD_TYPE=RELEASE /home/xx/openMVG/src/
sudo cmake --build . --target install

2. openMVS安装

建一个文件夹存放openMVS项目:
ubuntu18.04中openmvg+openmvs的配置及使用_第4张图片
在上图目录下输入:

#Prepare and empty machine for building:

sudo apt-get update -qq && sudo apt-get install -qq

#安装图像格式的一些库:

sudo apt-get -y install git cmake libpng-dev libjpeg-dev libtiff-dev libglu1-mesa-dev

#Eigen (Required):

git clone https://gitlab.com/libeigen/eigen.git --branch 3.2 
mkdir eigen_build && cd eigen_build 
cmake . ../eigen 
make -j4 && sudo make install 
cd ..

eigen可能会出问题:

  1. colmap和openmvs都安装eigen时,可能会报以下错误(当然我安装时没报错):
no matching function for call to Eigen::Matric

主要原因:colmap的eigen和openmvs的eigen版本冲突

解决:

INCLUDE_DIRECTORIES(/usr/local/eigen3/include/eigen3)

推荐:openmvs>colmap/openmvg

2. 高版本ceres和eigen冲突

我在colmap里安装的是ceres1.4版本的,所以不会遇到这个trick。

#Boost (Required):

sudo apt-get -y install libboost-iostreams-dev libboost-program-options-dev libboost-system-dev libboost-serialization-dev

#OpenCV (Required)

sudo apt-get -y install libopencv-dev

#CGAL (Required)

sudo apt-get -y install libcgal-dev libcgal-qt5-dev

#VCGLib (Required)

git clone https://github.com/cdcseacave/VCG.git vcglib

#Ceres (Optional)

安装colmap的时候安装过了,不再安装,包括eigen也是,刚才又重装了一遍,真烦。

#GLFW3 (Optional)

sudo apt-get -y install freeglut3-dev libglew-dev libglfw3-dev

#OpenMVS

git clone https://github.com/electech6/openMVS_comments.git openMVS
mkdir openMVS_build && cd openMVS_build
cmake . ../openMVS -DCMAKE_BUILD_TYPE=Release -DVCG_ROOT="/path to vcglib/vcglib"

其中,/path to vcglib/vcglib要写自己的vcglib的路径,我的是:
ubuntu18.04中openmvg+openmvs的配置及使用_第5张图片

cmake . ../openMVS -DCMAKE_BUILD_TYPE=Release -DVCG_ROOT="/home/xx/code/MVS/vcglib"

#如果想生成共享库,可以在cmake加如下命令:

-DBUILD_SHARED_LIBS=ON

#生成 OpenMVS 库文件:

make -j4 && sudo make install

安装完成。

3. 安装时所需的 reference

  1. OpenMVG官方教程
  2. Ubuntu下openMVG+openMVS实现三维重建
  3. linux系统MVS安装,Ubuntu 环境 openMVG+openMVS 配置
  4. ubuntu下 openMVG编译安装
  5. openmvs官方教程

4. openMVG使用

这里所用的数据集:ETH3D的electro_dslr_jpg.7z数据集。

建立一个文件夹,用来保存这次的内容。我是在SFM文件夹(/home/xx/openMVG/openMVG_Build/software/SFM),在里面新建两个文件夹data(存用的照片)和 output(输出文件存储)。

1. 读入图像,产生数据

openMVG_main_SfMInit_ImageListing -i data/electro_dslr_jpg/electro/images/dslr_images -o output/matches -f 4800

ubuntu18.04中openmvg+openmvs的配置及使用_第6张图片
在/home/xx/openMVG/openMVG_Build/software/SfM/output/match/ 下生成sfm_data.json文件

注意这里的4800忘记改了,这里填的是焦距,要使用估计的相机内外参数。若图片像素为2382×2128,则应填3399 ≈ max(2382,2128)×1.2

2. ComputeFeatures 图像特征点描述

openMVG_main_ComputeFeatures -i output/matches/sfm_data.json -o output/matches

ubuntu18.04中openmvg+openmvs的配置及使用_第7张图片

3. ComputeMatches 图像特征点检测

openMVG_main_ComputeMatches -i output/matches/sfm_data.json -o output/matches

ubuntu18.04中openmvg+openmvs的配置及使用_第8张图片

4. IncrementalSfM 光束法平差累计式SFM(全局式的也有我没做,官网有命令)

openMVG_main_IncrementalSfM -i output/matches/sfm_data.json -o output/out_Incremental_Reconstruction -m output/matches

ubuntu18.04中openmvg+openmvs的配置及使用_第9张图片

5. ExportUndistortedImages导出畸变矫正后的图像

openMVG_main_ExportUndistortedImages -i output/matches/sfm_data.json  -o output/out_Incremental_Reconstruction/image

ubuntu18.04中openmvg+openmvs的配置及使用_第10张图片
上图image里的图像是畸变矫正后的原图。

6. openMVG_main_openMVG2openMVS

转换生成文件形式变成.mvs文件,并生成畸变矫正后图像为了后续处理。这条命令在 /home/xx/openMVG/openMVG_Build/software/SfM/output/out_Incremental_Reconstruction 下右键打开终端,就是sfm_data.bin所在文件夹。

openMVG_main_openMVG2openMVS -i sfm_data.bin -o scene.mvs

ubuntu18.04中openmvg+openmvs的配置及使用_第11张图片
以上操作即將openMVG产生的数据转换成了openMVS可操作的数据类型。

reference:

  1. OpenMVG on your image dataset

  2. openMVG官方教程

  3. UBUNTU16.04+OPENMVG+OPENMVS实现自己数据三维重建

  4. openMVG+openMVS实现三维重建demo

5. openMVS使用

ubuntu18.04中openmvg+openmvs的配置及使用_第12张图片
我们安装的所有东西都在openMVS_biild这个路径下,我们主要用的是bin这个文件里的可执行文件:
ubuntu18.04中openmvg+openmvs的配置及使用_第13张图片

1. 稠密重建

home/xx/openMVG/openMVG_Build/software/SfM/output/out_Incremental_Reconstruction目录下执行:

/home/xx/code/MVS/openMVS_build/bin/DensifyPointCloud scene.mvs

2. 曲面重建

/home/xx/code/MVS/openMVS_build/bin/ReconstructMesh  -d 4 scene_dense.mvs

-d 4与–resolution-level=4的作用是为了简化运算,减小了重建的网格数量与精细程度

3. 网格优化

/home/xx/code/MVS/openMVS_build/bin/RefineMesh --resolution-level=4 scene_dense_mesh.mvs

4. 纹理贴图

/home/xx/code/MVS/openMVS_build/bin/TextureMesh scene_dense_mesh_refine.mvs

结果不是很好,应该是像素焦距没调好,明天再试试。

reference:

  1. UBUNTU16.04+OPENMVG+OPENMVS官网案例重建 (二)
  2. UBUNTU16.04+OPENMVG+OPENMVS(三):实现自己数据的三维重建
  3. UBUNTU16.04+OPENMVG+OPENMVS实现自己数据三维重建
  4. Ubuntu下openMVG+openMVS实现三维重建

你可能感兴趣的:(三维重建,git,mvs)