openMVG openMVS 三维重构

OPENMVG

用的是surface win10 64位 Visual Studio 2017

安装

https://github.com/openMVG/openMVG/blob/master/BUILD.md
安装git
https://git-scm.com/downloads
全部默认
使用vcpkg安装
win+R 打开cmd 输入

cd c:/
mkdir openMVG_MVS
cd openMVG_MVS
git clone https://github.com/Microsoft/vcpkg

意思是在C盘下新建一个文件夹叫做openMVG_MVS 然后在这个文件夹中git clone vcpkg

cd vcpkg
bootstrap-vcpkg.bat

这个就是vcpkg的下载和编译

vcpkg install openmvg[core,openmp]//错误代码

要等很久。。。。。。然后报错了
Error: Building package openblas:x86-windows failed with: BUILD_FAILED
发现是默认装的x86 但是电脑是64位的 所以出错了 改成

vcpkg install openmvg[core,openmp]:x64-windows

Total elapsed time: 1.662 h 一共花了这么久
然后把cmake加入到系统环境变量path里面
也就是path里面增加 C:\openMVG_MVS\vcpkg\downloads\tools\cmake-3.14.0-windows\cmake-3.14.0-win32-x86\bin
不然执行下面第五句话的时候会出错 cmake找不到

cd ../
git clone --recursive https://github.com/openMVG/openMVG.git
mkdir openMVG_Build
cd openMVG_Build
cmake -G "Visual Studio 15 2017 Win64" -DCMAKE_TOOLCHAIN_FILE=C:\openMVG_MVS\vcpkg/scripts/buildsystems/vcpkg.cmake ../openMVG/src/

然后打开C:\openMVG_MVS\openMVG_Build\openMVG.sln
在visual studio 里面选择 模式为 release 编译就好(在debugger 的左边可以看到)

以上就是openmvg安装的过程

SFM pipeline

https://openmvg.readthedocs.io/en/latest/software/SfM/SfM/

cd c:/openmvg_mvs
mkdir example
cd example
mkdir images
mkdir matches
mkdir outReconstruction

因为文档里面说 三个文件夹比较好 所以就弄三个文件夹
然后下载
https://github.com/openMVG/ImageDataset_SceauxCastle
这个是样例的图片 把样例的图片全部复制到上面的images文件夹中
openMVG openMVS 三维重构_第1张图片
然后开始进行sfm pipeline

cd C:\openMVG_MVS\openMVG_Build\Windows-AMD64-\Release

1 openMVG_main_SfMInit_ImageListing

openMVG_main_SfMInit_ImageListing -i C:\openMVG_MVS\example\images -d C:\openMVG_MVS\openMVG\src\openMVG\exif\sensor_width_database\sensor_width_camera_database.txt -o C:\openMVG_MVS\example\matches

-i后面跟的是图片的文件夹位置
-d后面跟的是相机参数什么的自带的一个文件吧
-o是输出文件夹

2 openMVG_main_ComputeFeatures

openMVG_main_ComputeFeatures -i C:\openMVG_MVS\example\matches\sfm_data.json -o C:\openMVG_MVS\example\matches -m SIFT -n 4

-i 后面跟的是上一步产生的sfm_data.json
-o是输出文件夹

3 openMVG_main_ComputeMatches

openMVG_main_ComputeMatches -i C:\openMVG_MVS\example\matches\sfm_data.json -o C:\openMVG_MVS\example\matches

-i 后面跟的是sfm_data.json
-o 是输出文件夹
嗯。。。'neato’未找到 :‘neato’ 不是必要的 解决方案如下: https://github.com/openMVG/openMVG/issues/576

4 openMVG_main_IncrementalSfM

openMVG_main_IncrementalSfM -i C:\openMVG_MVS\example\matches\sfm_data.json -m C:\openMVG_MVS\example\matches\ -o C:\openMVG_MVS\example\outReconstruction

-i 后面跟的是sfm_data.json
-m 后面是前面几何匹配信息存放的matchs文件夹
-o 是输出文件夹

5 openMVG_main_ComputeSfM_DataColor

openMVG_main_ComputeSfM_DataColor -i C:\openMVG_MVS\example\outReconstruction\sfm_data.bin -o C:\openMVG_MVS\example\outReconstruction\sfm_data_color.ply

-i 是 在outReconstruction文件夹下的sfm_data.bin文件
-o 是输出

6 openMVG_main_ComputeStructureFromKnownPoses

openMVG_main_ComputeStructureFromKnownPoses -i C:\openMVG_MVS\example\outReconstruction\sfm_data.bin -o C:\openMVG_MVS\example\outReconstruction\robustFitting.json -m C:\openMVG_MVS\example\matches -f C:\openMVG_MVS\example\matches\matches.f.bin

-i outReconstruction文件夹下的sfm_data.bin文件
-m matches文件夹
-o 输出

7 Colorized robust triangulation

这个步骤在openmvg的sfm说明文档中没有出现 但是后面查看openmvs_sample的一键生成的代码之后
https://github.com/cdcseacave/openMVS_sample/blob/master/MvgMvs_Pipeline.py
发现里面有这样一个步骤 所以就加上这一步
为什么不直接用这个一键生成的代码?
google了一下发现好像windows系统不能用 会报错 所以就一步步来了

openMVG_main_ComputeSfM_DataColor -i C:\openMVG_MVS\example\outReconstruction\robustFitting.json -o C:\openMVG_MVS\example\outReconstruction\robust_colorized.ply

以上关于openmvg的安装还有sfm pipeline 就告一段落 在sfm pipeline的文档最后还有输出undistorted image 但是同样的原因 查看上述第7步的 openmvs_sample的一键生成代码之后 发现没有使用到这一步 所以也就跳过 接下来就要开始弄OpenMVS了

OpenMvs

嗯。。在这个网站上的windows环境下的安装代码
https://github.com/cdcseacave/openMVS/wiki/Usage
在cmake那里少了一句。。。导致一直会产生 VCG找不到的问题 所以还是直接看项目首页的 build.md 这个里面的安装方法应该是正确的
https://github.com/cdcseacave/openMVS/blob/master/BUILD.md
接下来是在cmd中输入的代码

cd C:\openMVG_MVS
mkdir OpenMvs

接下来 用vcpkg安装好多好多包。。因为vcpkg默认好像是x86的 所以如果要安装win64的话有两种方法
1 在每个包后面加:x64-windows 比如之前安装OpenMvg时出现过的代码

vcpkg install openmvg[core,openmp]:x64-windows(只是例子不是真正要输入的代码)

2 把环境变量VCPKG_DEFAULT_TRIPLET设置成x64-windows

我选择的是第二个方法 在系统变量中添加
变量名:VCPKG_DEFAULT_TRIPLET
变量值:x64-windows
(如果使用第一个方法应该就是vcpkg install zlib:x64-windows boost-iostreams:x64-windows …balahbalah 在每个东西后面加:x64-windows)

然后执行下面的代码

cd C:\openMVG_MVS\vcpkg
vcpkg install zlib boost-iostreams boost-program-options boost-system boost-serialization eigen3 cgal[core] opencv glew glfw3

要等很久(好 明日方舟启动
Total elapsed time: 38.66 min(下了这么久

继续

cd C:\openMVG_MVS
git clone https://github.com/cdcseacave/VCG.git
cd OpenMVS
git clone https://github.com/cdcseacave/openMVS.git src
mkdir build
cd build
cmake . ..\src -G "Visual Studio 15 2017 Win64" -DCMAKE_TOOLCHAIN_FILE=C:\openMVG_MVS\vcpkg\scripts\buildsystems\vcpkg.cmake -DVCPKG_TARGET_TRIPLET=x64-windows -DVCG_ROOT="C:\openMVG_MVS\VCG"

然后可以打开C:\openMVG_MVS\OpenMvs\build中的OpenMVS.sln在visual studio里面编译 或者可以

cmake --build C:\openMVG_MVS\OpenMvs\build

然后OpenMVS就安装完了。。。

接下来 要先把之前经过OpenMVG的sfm pipeline 生成的图片信息转换成mvs文件


在这之前 新建一个文件夹

cd C:\openMVG_MVS\example
mkdir MVS

1 Convert scene from OpenMVG


cd C:\openMVG_MVS\openMVG_Build\Windows-AMD64-\Release

openMVG_main_openMVG2openMVS -i C:\openMVG_MVS\example\outReconstruction\sfm_data.bin -o C:\openMVG_MVS\example\MVS\scene.mvs -d C:\openMVG_MVS\example\MVS

2 Dense Point-Cloud Reconstruction (optional)

cd C:\openMVG_MVS\OpenMvs\build\bin\vc15\x64\Release
DensifyPointCloud C:\openMVG_MVS\example\MVS\scene.mvs

3 Rough Mesh Reconstruction

ReconstructMesh C:\openMVG_MVS\example\MVS\scene_dense.mvs

4 Mesh Refinement (optional)

RefineMesh C:\openMVG_MVS\example\MVS\scene_dense_mesh.mvs

5 Mesh Texturing

TextureMesh C:\openMVG_MVS\example\MVS\scene_dense_mesh_refine.mvs

这就是openMVG openMVS pipeline 的全部流程和我的代码

你可能感兴趣的:(openMVG openMVS 三维重构)