ubuntu18.04编译OpenMVG

目前网络上大量的运行openmvg的重建管道文章因为OpenMVG的升级有些已经不能用了,自己也还在踩坑当中,简单记录下自己遇见的一些问题。

一、安装

OpenMVG的安装是否简单,按照官网给出来的安装操作,即可在linux上安装好软件。

Compiling on Linux

Install the required external libraries.
$ sudo apt-get install libpng-dev libjpeg-dev libtiff-dev libxxf86vm1 libxxf86vm-dev libxi-dev libxrandr-dev
If you want see the view graph svg logs, install Graphviz.

$ sudo apt-get install graphviz
Checkout OpenMVG.
$ git clone --recursive https://github.com/openMVG/openMVG.git
$ mkdir openMVG_Build && cd openMVG_Build
Configure and build
$ cmake -DCMAKE_BUILD_TYPE=RELEASE ../openMVG/src/
$ cmake --build . --target install

二、运行测试数据实现运动结构恢复

ubuntu18.04编译OpenMVG_第1张图片

 

注意:

ubuntu18.04编译OpenMVG_第2张图片

也就是说网上大量的

openMVG_main_SfMInit_ImageListing -i -f focal_length -o

openMVG_main_ComputeFeatures -i /sfm_data.json -o

openMVG_main_ComputeMatches -i /sfm_data.json -o

openMVG_main_IncrementalSfM -i /sfm_data.json -m -o /reconstruction

openMVG_main_ComputeSfM_DataColor -i /reconstruction/sfm_data.bin -o /colored.ply

openMVG_main_ComputeStructureFromKnownPoses -i /reconstruction/sfm_data.bin -m . -o /reconstruction/robust.bin -f /matches.f.bin

代码已经不能用了

并且unbuntu里边的 /usr/local/bin 确实只能找到openMVG_mian_SFm ,

查看tutorial操作,这里说得不够明显

OpenMVG on your image dataset · openMVG/openMVG Wiki · GitHub

看这个网站,SfM: Structure from Motion — openMVG library

ubuntu18.04编译OpenMVG_第3张图片

因此我采用的是使用python脚本来进行demo的运行。这里也遇见了问题。

使用global方式是运行成功的

ubuntu18.04编译OpenMVG_第4张图片

但是使用sequential方式是失败的了。

在该目录下找不到这个文件

ubuntu18.04编译OpenMVG_第5张图片估计是上一步骤没有生成。 

三、源码Example编译

使用make编译源码后,神奇的是运行成功也没有在当前目录生成执行文件。

比如我到example下编译

ubuntu18.04编译OpenMVG_第6张图片

完成

ubuntu18.04编译OpenMVG_第7张图片

生成后路径下并没有找到可执行问题,黑人问号?

四、重建原理补充(多视口几何)

Multiple View Geometry 简称 MVG,包含三个关键矩阵:一个是单应矩阵 ′=xi′=Hxi,参见博文 OpenCV 之 平面单应性

      

ubuntu18.04编译OpenMVG_第8张图片

       

     另两个是基础矩阵 ′=0xi′TFxi=0,本质矩阵 =[]=′E=R[t]x=K′TFK

      

ubuntu18.04编译OpenMVG_第9张图片

                   

    例如,已知四组对应特征点坐标,用 DLT 算法求解单应矩阵 H,代码如下:

// Setup left, right corresponding points and solve for H
openMVG::Mat xLeft(2, 4), xRight(2, 4);
 
// Instantiation of homography solver
using H_Solver = openMVG::homography::kernel::FourPointSolver;
 
// Perform model solving
std::vector Hs;
H_Solver::Solve(xLeft, xRight, &Hs);  

补充另外求解思路(使用本质矩阵进行求解):

通过对极约束方程利用八点法求解本质矩阵(--->svd分解相机R t,获得相机运动姿态)

五、未解决的问题

问题一:如果通过代码一步步来进行重建管道?

问题二:SfM_SequentialPipeline.py 脚本运行失败

问题三:如何运行openmvg提供给的demo

你可能感兴趣的:(三维重建,ubuntu,linux,运维)