Ubuntu下openMVG+openMVS实现三维重建

2 篇文章 0 订阅
1 篇文章 1 订阅

三维重建简介

三维重建是一个计算机视觉领域经典的问题,近年来也出现了许多利用深度学习直接从图像中得到网格的方法,取得了很好的效果。本文主要关注三维重建的经典实现方法,其步骤为:

  1. 通过相机获取一系列三维物体不同侧面的图片
  2. 对相机的内外参数进行标定
  3. 对图像中的特征进行提取(如SIFT、SURF等)
  4. 从匹配得到的信息中构建三维稀疏点云
  5. 根据稀疏点云进行稠密点云重建
  6. 对点云进行预处理(如去噪、下采样等)
  7. 进行网格重建
  8. 进行纹理映射

这些步骤已经有许多三维重建框架来实现,主要框架对比如下:
框架对比
本文主要利用openMVG+openMVS来实现三维重建

环境配置

本文的环境是在Ubuntu 16.04 LTS下进行配置的

openMVG

openMVG配置过程主要参考这里

首先进行外部库的安装

sudo apt-get install libpng-dev libjpeg-dev libtiff-dev libxxf86vm1 libxxf86vm-dev libxi-dev libxrandr-dev

如果想要看.svg文件,安装Graphviz(可选)

sudo apt-get install graphviz

下载并切换到openMVG目录

git clone --recursive https://github.com/openMVG/openMVG.git
mkdir openMVG_Build && cd openMVG_Build

配置并生成(需要安装cmake)

cmake -DCMAKE_BUILD_TYPE=RELEASE ../openMVG/src/
cmake --build . --target install

测试,我在此处测试失败了,但是不影响使用效果

make test

openMVS

openMVG配置过程主要参考这里

首先更新apt-get并安装外部库,原文还指定main_path=pwd,可以省略,其作用是当做后面的路径,需要换成自己的安装位置

sudo apt-get update -qq && sudo apt-get install -qq
sudo apt-get -y install build-essential git mercurial cmake libpng-dev libjpeg-dev libtiff-dev libglu1-mesa-dev libxmu-dev libxi-dev

安装Eigen

hg clone https://bitbucket.org/eigen/eigen#3.2
mkdir eigen_build && cd eigen_build
cmake . ../eigen
make && sudo make install

安装Boost

sudo apt-get -y install libboost-iostreams-dev libboost-program-options-dev libboost-system-dev libboost-serialization-dev

安装OpenCV

sudo apt-get -y install libopencv-dev

安装CGAL

sudo apt-get -y install libcgal-dev libcgal-qt5-dev

安装VCGLib

git clone https://github.com/cdcseacave/VCG.git vcglib

安装Ceres,原文从https://ceres-solver.googlesource.com/ceres-solver下载会提示失败,因此换了一个下载地址

sudo apt-get -y install libatlas-base-dev libsuitesparse-dev
git clone https://github.com/ceres-solver/ceres-solver ceres-solver
mkdir ceres_build && cd ceres_build
cmake . ../ceres-solver/ -DMINIGLOG=ON -DBUILD_TESTING=OFF -DBUILD_EXAMPLES=OFF
make -j2 && sudo make install
cd ..

安装GLFW3(可选)

sudo apt-get -y install freeglut3-dev libglew-dev libglfw3-dev

下载openMVS,此处-DVCG_ROOT需指定为安装vcglib的路径,如果想把openMVS作为库使用,在最后加上-DBUILD_SHARED_LIBS=ON

git clone https://github.com/cdcseacave/openMVS.git openMVS
mkdir openMVS_build && cd openMVS_build
cmake . ../openMVS -DCMAKE_BUILD_TYPE=Release -DVCG_ROOT="$~/openMVS/vcglib"

安装openMVS库(可选)

make -j2 && sudo make install

如果安装了Anaconda,此处会报错

Makefile:127: recipe for target 'all' failed
make: *** [all] Error 2

因为make会自动采用Anaconda的gcc,但是其版本过低会导致make失败,解决方案是暂时移走Anaconda3/lib下的libuuid库文件

ls ~/Anaconda3/lib/libuuid*
mkdir ~/Anaconda3/libuuid
mv ~/Anaconda3/lib/libuuid* ~/Anaconda3/libuuid

等make完成以后再将文件移回即可

mv ~/Anaconda3/libuuid ~/Anaconda3/lib/libuuid*

重建

下面就可以使用openMVG+openMVS实现三维重建了

openMVG

我采用的测试图片如下:https://github.com/openMVG/ImageDataset_SceauxCastle。首先切换到图片目录后开始执行指令,需要指定相机焦距-f,大致可以由图像长乘以1.2估计得到,例如图像长宽为1280×720,则焦距估计为1280×1.2=1536。

openMVG_main_SfMInit_ImageListing -i <images-dir> -f focal_length -o <output-dir>
openMVG_main_ComputeFeatures -i <output-dir>/sfm_data.json -o <output-dir>
openMVG_main_ComputeMatches -i <output-dir>/sfm_data.json  -o <output-dir>
openMVG_main_IncrementalSfM -i <output-dir>/sfm_data.json -m <output-dir> -o <output-dir>/reconstruction
openMVG_main_ComputeSfM_DataColor -i <output-dir>/reconstruction/sfm_data.bin -o  <output-dir>/colored.ply
openMVG_main_ComputeStructureFromKnownPoses -i <output-dir>/reconstruction/sfm_data.bin -m . -o <output-dir>/reconstruction/robust.bin -f <output-dir>/matches.f.bin

openMVG得到的稀疏点云结果可以用meshlab打开:

在这里插入图片描述

openMVS

openMVS可以很好地与openMVG对接,其主要的作用是进行稠密点云重建、网格重建与纹理映射。-d 4与–resolution-level=4的作用是为了简化运算,减小了重建的网格数量与精细程度

openMVG_main_openMVG2openMVS -i <output-dir>/reconstruction/robust.bin -o scene.mvs
DensifyPointCloud scene.mvs
ReconstructMesh -d 4 scene_dense.mvs
RefineMesh --resolution-level=4 scene_dense_mesh.mvs
TextureMesh scene_dense_mesh_refine.mvs

最后得到的效果:

在这里插入图片描述

参考链接

[1] https://leohope.com/%E8%A7%A3%E9%97%AE%E9%A2%98/2018/03/06/compare-re3d-system/
[2] https://www.itread01.com/content/1543864993.html
[3] http://www.ishenping.com/ArtInfo/3737460.html
[4] https://blog.csdn.net/weixin_41631970/article/details/87893750
[5] https://www.youtube.com/watch?v=ELHOjC_V-FE&t=1134s

  • 10
    点赞
  • 86
    收藏
    觉得还不错? 一键收藏
  • 12
    评论
openMVG和openMVS是两个用于计算机视觉和三维重建的开源工具。openMVG用于生成稀疏点云,而openMVS用于进一步处理这些点云并生成稠密点云。 在配置openMVS和openMVG时,你可以按照官方提供的步骤进行操作。你提供的参考链接中包含了在Ubuntu 18.04上配置openMVS和openMVG的详细说明。\[1\] 在使用openMVS之前,你需要先生成openMVG生成的稀疏点云。然后,你可以使用openMVS的终端工具对点云进行处理。这些终端工具通常位于"/usr/local/bin/OpenMVS"目录下。你可以使用绝对路径来调用这些工具。例如,使用终端工具"DensifyPointCloud"可以建立稠密图。命令示例为: /usr/local/bin/OpenMVS/DensifyPointCloud dataset/eglise/result/out_Incremental_Reconstruction/scene.mvs \[3\] 如果你在使用过程中遇到问题,你可以参考openMVS的GitHub页面上的问题列表,可能会有其他用户遇到类似的问题并提供了解决方案。\[2\] 希望这些信息对你有帮助!如果你有任何其他问题,请随时提问。 #### 引用[.reference_title] - *1* *3* [openMVG+openMVS对数据集的详细重建步骤!避坑!!!](https://blog.csdn.net/vanilla_an/article/details/115334413)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* [使用ipad拍出来的相片利用openmvg+openmvs进行三维重建](https://blog.csdn.net/cangqiongxiaoye/article/details/123412689)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 12
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值