OpenMVG与OpenMVS安装配置、简单使用

关于OpenMVG与OpenMVS之间的关系可见下图。关于目前常用的三维重建系统的对比见网址:

http://leohope.com/%E8%A7%A3%E9%97%AE%E9%A2%98/2018/03/06/compare-re3d-system/

OpenMVG与OpenMVS安装配置、简单使用_第1张图片

可见OpenMVG与OpenMVS搭配使用,可以实现一个完美的三维重建流程。

下面开始讲解两者的配置与简单使用:

 

1. 编译 openMVG:

参考网页:https://github.com/openMVG/openMVG/blob/master/BUILD.md
##获取源码:

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


##apt 安装所需依赖:

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


##(可选)如果你想以图形化界面的方式看 svg 日志的话,安装 Graphviz:

sudo apt-get install graphviz


##编译 openMVG:

cd path/to/openMVG
mkdir build
cd build


##如果想顺便编译例程和单元测试模块的话

cmake -DCMAKE_BUILD_TYPE=RELEASE -DOpenMVG_BUILD_TESTS=ON -
DOpenMVG_BUILD_EXAMPLES=ON . ../src/


##否则这样:

cmake -DCMAKE_BUILD_TYPE=RELEASE . ../src/


##编译:

make -j12


##跑一下测试例程看有没有装好:

make test


##报的都是好消息的话就说明装好了。
##然后直接安装,这样以后使用起来也非常方便。

sudo make install


网页里还有如果你在 camke 里使用 openMVG 的话的用法

2. 编译 openMVS:

##安装依赖项:

sudo apt-get -y install build-essential git mercurial cmake libpng-dev libjpeg-
dev libtiff-dev libglu1-mesa-dev libxmu-dev libxi-dev


##安装 Eigen 库:(这个之前装过的话就可以直接跳过了。之前我在装ORB-SLAM的
时候装过一次了。

hg clone https://bitbucket.org/eigen/eigen #3.2
mkdir eigen_build && cd eigen_build
cmake . ../eigen
make && sudo make install
cd ..##安装 Boost 库:
sudo apt-get -y install libboost-iostreams-dev libboost-program-options-dev
libboost-system-dev libboost-serialization-dev


##安装 opencv(opencv 之前通过别的常见办法装过的也都不用装了,个人感觉 apt 安装不
是很好)

sudo apt-get -y install libopencv-dev


##安装 CGAL

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


##安装 VCGLib:

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


##安装 Ceres:

sudo apt-get -y install libatlas-base-dev libsuitesparse-dev
git clone https://ceres-solver.googlesource.com/ceres-solver ceres-solver
cd ceres-solver
mkdir build && cd build
cmake . ../ -DMINIGLOG=ON -DBUILD_TESTING=OFF -DBUILD_EXAMPLES=OFF
make -j12 && sudo make install
cd ..


##(可选的)安装 GLFW3

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


##编译 openMVS:

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


#这个你去留意一下找一下 vcglib 的路径即可
##如果你想把 openMVS 当做一个共享的库的话,在 camke 里开启选项:

-DBUILD_SHARED_LIBS=ON


##编译并安装:

make -j12 && sudo make install


这一步弄完之后,如果在用 DensifyPointCloud、 TextureMesh 这些终端工具时提示找不到
命令,那就直接在 path/to/openMVS/build/bin 里面找到这些二进制文件然后复制到系统里
的/usr/bin 里面就可以了。

 

3.简单使用:

在安装配置好 openMVG 和 openMVS 后,突然对建图无从下手,不知道从哪里开始,,
然后仔细浏览了一遍官网文档,总结出了建图的办法。➢ 第一步:cd 到 path/to/openMVG/build/software/SfM 里,里面有两个脚本,分别是
SfM_SequentialPipeline.py 和 SfM_GlobalPipeline.py,两种不同的特征点匹配方式吧
(感觉),前面一种是按次序的,后面是按全局的。使用方法

python xxx.py path/to/image path/to/output_dir


见网页 https://openmvg.readthedocs.io/en/latest/software/SfM/SfM/
如果所选择的图像的质量比较好的话可以成功运行完,这个时候在 output_dir 里的
reconstruction_sequential 或者 reconstruction_global 目录下找到 sfm_data.bin 文件。
➢ 第二步:可以再 output_dir 和 images 同级目录下建一个空文件夹,把上一步找到的
sfm_data.bin 文件拷贝进去,在这里,用 openMVG_main_openMVG2openMVS 终端
工具将 openMVG 生成的 sfm_data.bin 转换成.mvs 文件格式,在 sfm_data.bin 目录下
输入具体指令:

openMVG_main_openMVG2openMVS -i sfm_data.bin -o scene.mvs


即可得到 scene.mvs 这种可以在终端使用 Viewer 查看的文件。
(官方给的 usage:

openMVG_main_openMVG2openMVS -i PATH/sfm_data.(json/xml/bin) -d OUTPUT_PATH -o OUTPUT_PATH/Scene

)
这个时候就是建立的稀疏图。可以在终端使用 Viewer 进行查看:
Viewer “把想看的.mvs 文件拖进来就 OK 了”
➢ 第三步:运用 openMVS 的一系列终端工具把最初的这个 sence.mvs 这个稀疏图最终
转换成带纹理的稠密图:
参考网页:https://github.com/cdcseacave/openMVS/wiki/Usage
#以下命令全部都在含 sence.mvs 的目录下运行:
⚫ 终端工具 DensifyPointCloud 建立稠密图:

DensifyPointCloud sence.mvs


这时会生成 scene_dense.mvs,这就是生成的稠密图,可以通过 Viewer 进行查看。
⚫ 2、终端工具 ReconstructMesh 建立粗网格:

ReconstructMesh scene_dense.mvs


这时会生 scene_dense_mesh.mvs,这个是生成的带粗纹理的。可通过 Viewer
查看。
⚫ 3、终端工具 RefineMesh 建立精致网格:(可选的,这步可以跳过)

RefineMesh scene_mesh.mvs


⚫4、终端工具 TextureMesh 混合网格建立纹理:

TextureMesh scene_dense_mesh.mvs


这时候生成最终的成品,可以通过 Viewer 进行查看,效果比较好的话看起来会很不错的,
但效果不好那就重新去挑选图片了2333

你可能感兴趣的:(3D,Reconstruction)