openMVG-openMVS的学习和编译

openMVS-openMVG是目前的三维重建的框架中,复原效果最好的;而且提供自动化的脚本,使用起来也不是很难,目前还没有对其中的原理进行深入的研究,仅从其在三维重建的过程做一下说明;

openMVG-openMVS的编译和安装有两种方式,一种是我们将github上的源码下载下来然后我们去下载,在自己的Linux虚拟机上进行编译,这种方式复杂一些,而且自己编译也会出不少的问题,以为需要不少的依赖;其二是使用snap进行安装,这种就是傻瓜式的安装,很简单,安装完成后就可以使用,但是缺点是其中的相机的参数文件我们修改不了,这就导致如果我们使用的相机没有在其文件中存储,那么后续的步骤就不好实现了;好了,说的差不多了,后续讲一下具体的编译步骤;

先开始编译openMVG,从github上下载源码,然后安装相应的依赖;这些步骤在github上都有相应的具体步骤了,这里就不做介绍了,相应的github网址为:https://github.com/openMVG/openMVG/blob/master/BUILD.md

然后开始编译openMVS,同样从github上下载源码,安装相应的依赖,github上也都有对这些具体的说明,需要的依赖相对多些,也容易出一些问题,相应的github网址为:https://github.com/cdcseacave/openMVS/wiki/Building

这里需要注意的是,在进行cmake的时候,注意后面的-DVCG_ROOT="$main_path/vcglib",vcglib是编译openMVS所需要的所需要的库之一,将其路径加上去,才能正确的编译,cmake以后,后面就是一路的make和make install;安装完成以后,下面开始我们的三维重建之旅;

:放置照片组的文件夹;
 :/openMVG/src/openMVG/exif/sensor_width_database/sensor_width_camera_database.txt,一般都是这个目录,记得将我们的相机的参数添加进去,注意格式;
:输出的目录;
	1. openMVG_main_SfMInit_ImageListing -i  -d  -o :
	2. openMVG_main_ComputeFeatures -i /sfm_data.json -o :
	3. openMVG_main_ComputeMatches -i /sfm_data.json  -o :
	4. openMVG_main_IncrementalSfM -i /sfm_data.json -m  -o /reconstruction
	注意:/reconstration 后面的reconstruction这是我们自定义的文件夹;
	5. openMVG_main_ComputeSfM_DataColor -i /reconstrution/sfm_data.bin -o  /colored.ply:
	注意这里的colored.ply是自己命名的文件但是必须要以.ply为后缀;
	6. openMVG_main_ComputeStructureFromKnownPoses -i /reconstrution/sfm_data.bin -m . -o /reconstrution/robust.bin -f /matches.f.bin:
	注意:这里的robust.bin是我们自己命令的文件,但是必须以.bin为后缀名;
	
	好,下面是openMVS的步骤了,在使用openMVS之前,还需要进行一步:
	7. openMVG_main_openMVG2openMVS -i /reconstrution/robust.bin -o scene.mvs
	注意:这里的scene.mvs,文件是我们自己命名的;
	8. DensifyPointCloud scene.mvs
	9. ReconstructMesh -d 4 scene_dense.mvs;
	注意:scene_dense自己命名;目前不需要理解参数的意思,需要理解不加后面的参数,直接运行,会有usage;
	10. RefineMesh --resolution-level=4 scene_dense_mesh.mvs
        11. TextureMesh scene_dense_mesh_refine.mvs
注意以上的openMVS可执行文件生成在openMVS/openMVS_build/bin/,这里的openMVS_build是自己的明林的build
文件夹;如果提示没有以上的几个命令,就去这个文件夹里面去找;
好了到这里基本就完成了,然后使用mashLab打开/reconstration/scene_dense_mesh_texture.ply;
可以重建后的模型;后续大家有什么好的意见也可以提出;

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