1.openMVG简介
openMVG是三维重建的一个官方库,用于从运动中恢复结构(即从多个不同的视角拍摄图片,将多视图图片作为输入,使用sift检测特征点,将特征点对进行匹配,利用初始的一些匹配点计算出相机的内参矩阵,继而计算出两幅图(有匹配点对的两幅图)之间变换的本征矩阵(本征矩阵就是一个旋转矩阵加上一个三维偏移向量,可以理解为第一个相机的位置和方向经过旋转平移得到第二个相机的位置和方向),根据这些数据和初始的相机位置数据可以计算出特征匹配点的三维位置,但是在这一增量sfm过程中会积累很多误差,导致稀疏的点云不准确,所以需要对误差进行优化,因此将三维点反投影到相机平面上,计算其与初始的位置之间的位移,利用BA进行光束法平差,最后得到精确地稀疏三维点云。),利用稀疏三维点云加上PMVS算法就可以重建出稠密三维点云,即接近于原物的三维形状。
2.openMVG下载
openMVG的下载编译过程参考openMVG官方github。
这里一定要老老实实使用命令行从git上克隆openMVG,如果直接下载zip文件,会出现部分文件缺失的情况(这里我也不知道为什么)。
3.openMVG编译
打开cmake生成的openMVG.sln文件。使用release方式(好像两种都可以),win32平台。首先对ALL_BUILD生成解决方案,此处注意编译结果信息,观察生成了什么文件,在哪个目录里。可以观察到我这边是生成了exe文件,并放在F:\openmvg\Windows-AMD64-\Release里。这里编译的是一些openMVG的官方样例,这些例子不能直接点击运行,这样会一闪而过,看不到结果。需要用命令行方式打开,我这里是shift+鼠标右键打开linux命令行(需另行安装),运行exe文件。这里举例子:
./main_svgSample.exe
会在当前目录下生成三个曲线图片。如图。
至此,openMVG编译成功。
4.openMVG的安装
如果不只是想要运行官方例程,而是使用openMVG作为库来进行编程则需要编译生成lib静态库和dll动态库,这里也比较简单,直接将install项目生成,可以看到生成了很多lib文件在生成目录中。
将这些文件放在本地的vs2015的VC/lib目录下,作为一个新的文件夹,并在项目中引入库文件目录。
同时将src目录中的openMVG需要使用的一些头文件(包括openMVG的头文件以及third_party,dependencies)放到vs2015的VC/include目录下,作为一个新的文件夹,并在项目中引入包含文件目录。
我的包含目录设置如图(我把third_party,dependencies文件夹都放在openMVG的目录下):
vs2015的项目VC++设置如下:
即可在代码中用openMVG库啦!(还有后续的在库上进行编码的记录,冲!)