OpenMVS学习笔记(一):WSL编译安装测试

1.CUDA和CUDNN安装

  • 1\] WSL版本cuda安装:

wget https://developer.download.nvidia.com/compute/cuda/repos/wsl-ubuntu/x86_64/cuda-wsl-ubuntu.pin
sudo mv cuda-wsl-ubuntu.pin /etc/apt/preferences.d/cuda-repository-pin-600
wget https://developer.download.nvidia.com/compute/cuda/11.7.1/local_installers/cuda-repo-wsl-ubuntu-11-7-local_11.7.1-1_amd64.deb
sudo dpkg -i cuda-repo-wsl-ubuntu-11-7-local_11.7.1-1_amd64.deb
sudo cp /var/cuda-repo-wsl-ubuntu-11-7-local/cuda-*-keyring.gpg /usr/share/keyrings/
sudo apt-get update
sudo apt-get -y install cuda

复制代码
* \[2\] cudnn安装:

```bash
# 1.下载cudnn-linux-x86_64-8.9.2.26_cuda11-archive.tar.xz文件
# 2.解压cudnn压缩包
>> tar -xf cudnn-linux-x86_64-8.9.2.26_cuda11-archive.tar.xz
# 3.将include和lib文件夹下文件拷贝到cuda安装目录下
>> sudo cp cudnn-linux-x86_64-8.9.2.26_cuda11-archive/include/*cudnn.h /usr/local/cuda/include/
>> sudo cp  cudnn-linux-x86_64-8.9.2.26_cuda11-archive/lib/libcudnn* /usr/local/cuda/lib64
# 4.修改库的权限
>> sudo chmod a+r /usr/local/lib64/libcudnn*
  • 3\] 添加系统环境变量(.zshrc或.bashrc)

export CUDA_PATH=/usr/local/cuda
export CUDA_BIN=/usr/local/cuda/bin
export PATH=PATH::CUDA_PATH:$CUDA_BIN

复制代码
* \[4\] 刷新一下系统环境变量

```bash
# 1.zsh
>> source ~/.zshrc
# 2.bash
>> source ~/.bashrc
  • 5\] 查询cuda版本

nvcc --version
nvcc: NVIDIA (R) Cuda compiler driver
Copyright (c) 2005-2022 NVIDIA Corporation
Built on Wed_Jun__8_16:49:14_PDT_2022
Cuda compilation tools, release 11.7, V11.7.99
Build cuda_11.7.r11.7/compiler.31442593_0

复制代码
### 2.安装依赖库

#### 2.1 apt安装依赖库

```bash
sudo apt-get -y install git cmake libpng-dev libjpeg-dev libtiff-dev libglu1-mesa-dev
sudo apt-get -y install libboost-iostreams-dev libboost-program-options-dev libboost-system-dev libboost-serialization-dev
sudo apt-get -y install libcgal-dev libcgal-qt5-dev
sudo apt-get install libglfw3-dev

2.2 OpenCV安装

  • 网上一大堆,懒得写了

3.OpenMVS编译

bash 复制代码
# 1.下载VCG源码
>> git clone https://github.com/cdcseacave/VCG.git vcglib
# 2.下载OpenMVS源码
>> cmake .. -DVCG_ROOT=[VCG源码路径]/vcglib -DCMAKE_BUILD_TYPE=Release
  • 生成目录层级:
bash 复制代码
.
├── CMakeCache.txt
├── CMakeFiles
│   ├── 3.16.3
│   ├── 3.27.0-rc3
│   ├── CMakeConfigureLog.yaml
│   ├── CMakeDirectoryInformation.cmake
│   ├── CMakeOutput.log
│   ├── CMakeRuleHashes.txt
│   ├── CMakeScratch
│   ├── CMakeTmp
│   ├── Export
│   ├── FindOpenMP
│   ├── Makefile.cmake
│   ├── Makefile2
│   ├── TargetDirectories.txt
│   ├── cmake.check_cache
│   ├── pkgRedirects
│   ├── progress.marks
│   └── uninstall.dir
├── CTestTestfile.cmake
├── ConfigLocal.h
├── Makefile
├── Modules
│   ├── FindBREAKPAD.cmake
│   ├── FindEigen3.cmake
│   └── FindVCG.cmake
├── OpenMVSConfig.cmake
├── OpenMVSConfigVersion.cmake
├── Templates
│   ├── ConfigLocal.h.in
│   ├── OpenMVSConfig.cmake.in
│   └── cmake_uninstall.cmake.in
├── Utils.cmake
├── apps
│   ├── CMakeFiles
│   ├── DensifyPointCloud
│   ├── InterfaceCOLMAP
│   ├── InterfaceMVSNet
│   ├── InterfaceMetashape
│   ├── InterfacePolycam
│   ├── Makefile
│   ├── ReconstructMesh
│   ├── RefineMesh
│   ├── Tests
│   ├── TextureMesh
│   ├── TransformScene
│   ├── Viewer
│   └── cmake_install.cmake
├── bin
│   ├── DensifyPointCloud
│   ├── InterfaceCOLMAP
│   ├── InterfaceMVSNet
│   ├── InterfaceMetashape
│   ├── InterfacePolycam
│   ├── ReconstructMesh
│   ├── RefineMesh
│   ├── Tests
│   ├── TextureMesh
│   ├── TransformScene
│   └── Viewer
├── cmake_install.cmake
├── cmake_uninstall.cmake
├── docs
│   ├── CMakeFiles
│   ├── Makefile
│   └── cmake_install.cmake
├── lib
│   ├── libCommon.a
│   ├── libIO.a
│   ├── libMVS.a
│   ├── libMath.a
│   └── pyOpenMVS.so
└── libs
    ├── CMakeFiles
    ├── Common
    ├── IO
    ├── MVS
    ├── Makefile
    ├── Math
    └── cmake_install.cmake

4.效果测试

4.0 测试数据

4.1 稠密点云重建(可选项)

  • 当场景部分缺失时,稠密点云重建模块可以估算一个稠密点云来恢复它们,默认采用patch匹配方法:
bash 复制代码
>> ./bin/DensifyPointCloud -w [openMVS_sample路径]/mvs-data scene.mvs
  • 使用meshlab打开点云结果scene_dense.ply

4.2 粗略网格重建

  • 先前获取得到的稀疏或稠密点云被用于网格重建模块:
bash 复制代码
>> ./bin/ReconstructMesh -w [openMVS_sample]/mvs-data scene_dense.mvs -p scene_dense.ply
  • 使用meshlab打开网格生成结果scene_dense_mesh.ply

4.3 网格细化(可选项)

  • 从点云获取到的网格可以进一步细化,进而恢复所有好的细节,更有甚者,恢复更大缺失的部分:
  • (a) 细化由稀疏点云获取到的网格:
bash 复制代码
>> ./bin/RefineMesh -w [openMVS_sample]/mvs-data scene.mvs -m scene_dense_mesh.ply -o scene_sparse_mesh_refine.mvs
  • 看一下结果:
  • (b) 细化由稠密点云获取到的网格:
bash 复制代码
>> ./bin/RefineMesh -w [openMVS_sample]/mvs-data scene_dense.mvs -m scene_dense_mesh.ply -o scene_dense_mesh_refine.mvs
  • 看一下效果:

4.4 网格纹理化

  • 前面步骤获取到的网格被用于网格纹理化模块:
bash 复制代码
>> ./bin/TextureMesh -w [openMVS_sample]/mvs-data  scene_dense.mvs -m scene_dense_mesh_refine.ply -o scene_dense_mesh_refine_texture.mvs
  • 看一下结果:

5.参考资料

  • 1\] [OpenMVS详细安装教程(ubuntu18.04)](https://blog.csdn.net/yangyu0515/article/details/129235389)

  • 3\] [openMVS_sample](https://github.com/cdcseacave/openMVS_sample)

相关推荐
Chef_Chen12 小时前
从0开始学习语言模型--Day02-如何最大化利用硬件
人工智能·学习·语言模型
车队老哥记录生活12 小时前
【MPC】模型预测控制笔记 (3):无约束输出反馈MPC
笔记·算法
写代码的小阿帆13 小时前
LDStega论文阅读笔记
论文阅读·笔记
Cai junhao13 小时前
【Qt】Qt控件
开发语言·c++·笔记·qt
LuLaLuLaLeLLLLLL13 小时前
Elastic Search 学习笔记
笔记·学习
Resurgence0313 小时前
原型模式Prototype Pattern
笔记·原型模式
Jack魏14 小时前
React学习001-创建 React 应用
前端·学习·react.js
武昌库里写JAVA14 小时前
【微服务】134:SpringCloud
java·开发语言·spring boot·学习·课程设计
程序员大宝10114 小时前
如何设计三高架构
笔记
成都犀牛14 小时前
LangGraph 深度学习笔记:构建真实世界的智能代理
人工智能·pytorch·笔记·python·深度学习