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

基于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

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-pcP4BFGT-1659526174187)(C:\Users\12447\AppData\Roaming\Typora\typora-user-images\image-20220629182009677.png)]

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-jsgl-matrixdat.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文件可以看到

在这里插入图片描述

完成

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值