由于OpenMVS进行密集匹配和Mesh重建都需要输入一个.mvs文件,而这个文件除了一些博文所提供的开源数据集的.mvs之外,没办法去用自己的数据运行OpenMVS建模,所以本文主要介绍如何将自己的影像数据生成.mvs并且在OpenMVS中使用。
1.首先将自己的数据放在openMVG/dataset/image文件夹下就可以,其实哪个路径都行,无所谓,在dataset文件夹下还需要新建一个文件夹命名为result
2.打开OpenMVG编译好的源码,找到openMVG_main_SfMInit_ImageListing这个项目,在属性里设置工作目录为存放dataset文件夹的目录,命令参数输入
-i dataset/image
-o dataset/result/matches
-d E:/GitHubSourceCode/openMVG/src/openMVG/exif/sensor_width_database/sensor_width_camera_database.txt
这个地方第三个参数是openMVG自带的一个文件,位于openMVG/src/openMVG/exif/sensor_width_database/sensor_width_camera_database.txt,需要根据自己实际的位置修改,而且如果你用的自己的相机,有可能这个相机参数文件里没有这个相机型号,需要手动添加,比如我用的SONY ILCE-7,但是这个txt里没有这个相机,所以我手动补上的。运行完后会在dataset/result/matches 里面生成一个.json文件
3.找到openMVG_main_ComputeFeatures,工作目录还是设置成上面那个,命令参数设置为:运行完毕后会生成一大堆你的影像数据集的特征点坐标和特征点描述文件。
-i dataset/result/matches/sfm_data.json
-o dataset/result/matches
4.找到openMVG_main_PairGenerator,工作目录不变,命令参数设置为
-i dataset/result/matches/sfm_data.json
-o dataset/result/matches/pairs.bin
5.找到openMVG_main_ComputeMatches,工作目录不变,命令参数设置为
-i dataset/result/matches/sfm_data.json
-p dataset/result/matches/pairs.bin
-o dataset/result/matches/matches.putative.bin
6.找到openMVG_main_GeometricFilter,工作目录不变,命令参数设置为:
-i dataset/result/matches/sfm_data.json
-m dataset/result/matches/matches.putative.bin
-g f
-o dataset/result/matches/matches.f.bin
7.找到openMVG_main_SfM,工作目录不变,命令参数设置为:
-s INCREMENTAL
-i dataset/result/matches/sfm_data.json
-M dataset/result/matches/matches.f.bin
-o dataset/result/Reconstruction
8.找到openMVG_main_openMVG2openMVS,工作目录不变,命令参数设置为:
-i dataset/result/Reconstruction/sfm_data.bin
-d dataset/result/mvs/undistortedImages
-o dataset/result/mvs/scene.mvs
至此就可以将自己的影像数据集生成scene.mvs,然后再使用OpenMVS进行密集点云生成,Mesh重建、Mesh优化、纹理映射。