基于OpenSfM的单目三维重建实现详细步骤

任务描述:

三维重建作为物理环境感知的关键技术之一,其可用于智慧城市、虚拟旅游、数字遗产保护等诸多场景。随着自动驾驶的兴起,部分研究人员利用三维重建技术快速准确地还原一个真实的物理场景,并在其中构建了一系列的虚拟交通运行场景,期望通过数字孪生技术加速自动驾驶感知算法、决策规划、功能安全的开发和验证。怎样低成本、高效重建适合于自动驾驶的三维场景仍然是一个开放性问题。请参考目前开源的三维重建方法,开发一个基于单摄像头的三维重建算法,并完成部分场景重建,要求重建区域面积不小于5m*5m。然后对重建场景进行精度评估和敏感性分析。针对重建过程中不足之处提出改进意见,最后形成详细结果报告,包括算法设计、实验设置、实验结果、改进意见等内容。参考资料,以下为目前开源的一些三维重建方法:
1)https://github.com/mapillary/OpenSfM
2)http://cdcseacave.github.io/openMVS/
3)https://github.com/alexlocher/hpmvs
4)https://colmap.github.io/

1、安装环境

1.1 在Windows系统上安装openSFM

openSFM官方链接:https://opensfm.org/docs/building.html#download

1、downloading

git clone --recursive https://github.com/mapillary/OpenSfM

2、进入vcpkg目录,点击 bootstrap-vcpkg.bat 生成 vcpkg.exe

vcpkg.exe install opencv4 ceres ceres[suitesparse] lapack suitesparse --triplet x64-windows


下载的过程会有点长,安心等待

结果报错了

1.2 在虚拟机ubuntu上安装openSFM

git clone --recursive https://github.com/mapillary/OpenSfM

2、安装依赖

sudo apt-get install build-essential cmake libatlas-base-dev libatlas-base-dev libgoogle-glog-dev \libopencv-dev libsuitesparse-dev python3-pip python3-dev  python3-numpy python3-opencv \python3-pyproj python3-scipy python3-yaml libeigen3-dev

3、安装opengv,分别执行以下命令

mkdir source && cd source/
git clone --recurse-submodules -j8 https://github.com/laurentkneip/opengv.git

cd opengv && mkdir build && cd build
cmake .. -DBUILD_TESTS=OFF -DBUILD_PYTHON=ON -DPYBIND11_PYTHON_VERSION=3.6 -DPYTHON_INSTALL_DIR=/usr/local/lib/python3.6/dist-packages/
sudo make install


4、安装ceres

cd ../../
curl -L http://ceres-solver.org/ceres-solver-1.14.0.tar.gz | tar xz
cd ./ceres-solver-1.14.0 && mkdir build-code && cd build-code
cmake .. -DCMAKE_C_FLAGS=-fPIC -DCMAKE_CXX_FLAGS=-fPIC -DBUILD_EXAMPLES=OFF -DBUILD_TESTING=OFF
sudo make -j4 install


5、安装pip库,然后build这个opensfm的库,安装在pip里面

cd ../../../ && pip3 install -i https://pypi.tuna.tsinghua.edu.cn/simple -r requirements.txt
python3 setup.py build

发现报错,进行百度搜索答案。找到解决办法:https://www.cnblogs.com/hailin2018/p/13495790.html

问题在于没有这个txt文件,那么需要手动经过pip进行生成,所以经过pip3 freeze > requirements.txt 生成之后,在进行安装requirements.txt依赖:pip3 install -r requirements.txt.就顺利进行接下来的步骤

此时opensfm即安装成功,进行测试

1.3 Building the library

进入opensfm主目录,注意这个目录下有setup.py文件,而不是自己的某个创建的目录

然后运行

python3 setup.py build

1.4 Building the documentation(建立文档 这一步不需要 直接看官网文档)

To build the documentation and browse it locally use:

python3 setup.py build_doc
python3 -m http.server --directory build/doc/html/

and browse http://localhost:8000/

2、进行使用

示例数据集位于data/berlin。您可以通过运行来重建它

bin/opensfm_run_all data/berlin

这将运行整个 SfM 管道并生成文件data/berlin/reconstruction.meshed.json作为输出

通过运行以下命令从 npm下载查看器依赖项(mapillary-js、gl-matrix、dat.gui ):

./viewer/node_modules.sh

要可视化结果,您可以通过运行以下命令启动查看器 HTTP 服务器:

python3 viewer/server.py -d data/berlin

然后浏览到http://localhost:8080并选择一个重建文件。你应该看到类似的东西

用虚拟机的Ubuntu打开内置的浏览器进行访问,本机打开localhost:8080亲测没用

打开之后就初步完成了经过一个图像的三维重建

如果需要获得密集点云:

bin/opensfm undistort data/berlin
bin/opensfm compute_depthmaps data/berlin

这将运行密集的多视图立体匹配并生成存储在data/berlin/unidtorted/depthmaps/merged.ply. 您可以使用MeshLab或任何其他支持PLY文件的查看器来可视化该点云

查看ply文件可以看到

a/berlin/unidtorted/depthmaps/merged.ply`. 您可以使用MeshLab或任何其他支持PLY文件的查看器来可视化该点云

查看ply文件可以看到

完成

基于OpenSfM的单目三维重建实现详细步骤相关推荐

  1. 三维网格精简算法java版_ISMAR 2020 | 商汤提出手机端实时单目三维重建系统

    导读:商汤研究院和浙江大学CAD&CG国家重点实验室合作研发了一个手机端实时单目三维重建系统Mobile3DRecon.与现有的基于RGBD的在线三维重建或离线生成表面网格的系统不同,该系统结 ...

  2. 商汤提出手机端实时单目三维重建系统,实现逼真AR效果和交互

    点击上方"3D视觉工坊",选择"星标" 干货第一时间送达 来源:商汤泰坦公开课 摘要 · 看点 商汤研究院和浙江大学 CAD&CG 国家重点实验室合作研 ...

  3. 最佳论文!商汤提出手机端实时单目三维重建系统 | ISMAR 2020

    摘要 · 看点 商汤研究院和浙江大学 CAD&CG 国家重点实验室合作研发了一个手机端实时单目三维重建系统 Mobile3DRecon.与现有的基于 RGBD 的在线三维重建或离线生成表面网格 ...

  4. 双相机 单目三维重建

    基于多频外差法的单目三维重建可以在使用一个相机的情况下获取到高精度的三维数据,如单目三维重建. 在使用的过程会遇到一个问题,就是一个相机无法获取到物体完整的三维数据情况,如下图所示,第一副和第二幅 分 ...

  5. 基于FPGA的单目内窥镜定位系统设计(中)

    今天给大侠带来基于FPGA的单目内窥镜定位系统设计,由于篇幅较长,分三篇.今天带来第二篇,中篇,话不多说,上货. 导读 随着现科技的发展和社会的进步,信息科技迅速发展,我们可从互联网.电台等媒体获取大 ...

  6. 第六十六篇:单目三维重建点云

    作者:liaojiacai    邮箱: ljc_v2x_adas@foxmail.com 单目三维重建原理与双目类似 区别在于:单目需要每次计算得到重建图像之间旋转和平移之间的关系(RT),三维的生 ...

  7. 大盘点!自动驾驶中基于Transformer的单目BEV感知

    点击下方卡片,关注"自动驾驶之心"公众号 ADAS巨卷干货,即可获取 今天自动驾驶之心很荣幸邀请到Garfield,为大家分享自动驾驶中基于Transformer的单目BEV感知! ...

  8. opencv 图像上画出目标运动的轨迹_基于opencv的单目和双目标定平台手眼标定

      背景介绍 基于机器视觉引导的智能机器人,在现代社会各个领域已经得到了广泛的应用,尤其是大型工厂的自动化生产线上,视觉机器人可以和基于示教器按照预定轨迹进行作业的机器人互为补充,来共同提高生产的自动 ...

  9. ICCV 2019 | 基于无标签单目视频序列的单帧三维人体姿态估计算法

    作者丨王璇 学校丨西安交通大学 研究方向丨人体姿态估计 我们都知道,要训练一个准确的三维人体姿态估计深度神经网络,需要大量有三维标签的数据,越多越好.而在现实生活中,我们很难得到很多有标签数据,而无标 ...

最新文章

  1. matlab固定床反应器,合成气完全甲烷化固定床反应器数值模拟
  2. EventBus源码解析
  3. c语言输入不为空时循环,scanf循环输入的时候第二个数据输入有问题,相当于是多出来的...
  4. 3638MySQL数据库应用答案_Mysql数据库多实例配置
  5. Visual Studio 2019 正式发布
  6. Android Apk包的签名出库、自动编译与混淆
  7. 如何使用可外部化的接口在Java中自定义序列化
  8. python关机linux_Python学习第157课——Linux切换用户、关机、查看正在运行的程序...
  9. php原生类,反序列化之PHP原生类的利用
  10. solidity 合约权限授权_智能合约的调配模式:如何让你的智能合约安全协作?
  11. c语言列出1~100所有素数_一次找出范围内的所有素数,埃式筛法是什么神仙算法?...
  12. java json float_java – Json解析问题(值自动更改为float)
  13. OneNote使用技巧及运用
  14. JavaScript计时
  15. 计算机算法和算法复杂度
  16. 智慧交通:数字孪生三维可视化大屏管控运维平台
  17. CAD虚线不显示怎么办
  18. 2000-2019全中国省、市、县企业注册数据(包含经纬度、注册数目等多指标信息)
  19. 千呼万唤始出来的京东HR面(2023暑期实习)
  20. Flash 特效原理 震动效果

热门文章

  1. 使用Vue写一个登录页面
  2. webRTC服务器搭建(基于Janus)与Demo运行
  3. Android实现计时器(Handle+Runable)
  4. [VCS]filelist.list的做法
  5. springboot设置session超时和session监听
  6. alter table *** add constraint *** 用法
  7. Python PyQt4 文字朗读演示代码
  8. BlockingQueue及其实现
  9. NLP基础知识点:ROUGE
  10. 汽车SoC芯片IP供应商