三维重建之colmap+openmvs

一.环境配置

使用docker环境辅助环境配置。

1.拉取Docker镜像

复制代码
 sudo docker pull ubuntu:20.04

拉取的为ununtu16版本镜像,环境十分干净,可以通过以下命令查看容器列表

复制代码
sudo docker images

如果想删除多余的docker image,可以使用指令

复制代码
sudo docker rmi -f <id>

2.创建容器

复制代码
sudo docker run -it -v /home/pc/docker/openmvs:/home/pc/docker/openmvs --name=openmvs --net=host --env="DISPLAY" --volume="$HOME/.Xauthority:/root/.Xauthority:rw" ubuntu:20.04 /bin/bash

基于ubuntu20.04建立容器,并开启GUI功能。

进入容器后,会在root命令下,到此我们便得到了一个纯净的ubuntu环境。

可以使用sudo docker ps查看正在运行的容器,sudo docker ps -a查看所有容器

当我想要退出时,输入exit退出容器,然后使用sudo docker stop openmvs来停止容器,当我想再次进入容器时,使用sudo docker start openmvs启动容器,再使用sudo docker exec -it openmvs bash进入容器

3.环境配置

3.1.colmap

官网在这

功能: COLMAP 是一个集成的 SfM 和 MVS 工具,可以自动从多视图图像集中计算相机位姿并构建高精度的三维点云。

特点:

  • 完整的 SfM 和 MVS 管道,自动化程度高。
  • 支持密集点云重建。
  • 强大的图形用户界面和命令行支持。

适用场景: 适合科研、文化遗产保护、建筑测绘等需要高精度三维重建的应用场景。(NeRF和3DGS都使用)

为什么记录腻,apt安装失败咯,源码搞起。

先安装依赖:

复制代码
apt-get install \
    git \
    cmake \
    ninja-build \
    build-essential \
    libboost-program-options-dev \
    libboost-filesystem-dev \
    libboost-graph-dev \
    libboost-system-dev \
    libeigen3-dev \
    libflann-dev \
    libfreeimage-dev \
    libmetis-dev \
    libgoogle-glog-dev \
    libgtest-dev \
    libsqlite3-dev \
    libglew-dev \
    qtbase5-dev \
    libqt5opengl5-dev \
    libcgal-dev \
    libceres-dev

拉取colmap,编译

复制代码
git clone https://github.com/colmap/colmap.git
cd colmap
mkdir build
cd build
cmake .. -GNinja
ninja -j8
ninja install

编译安装完成之后,输入指令查看是否安装成功

复制代码
colmap -h

3.2.openmvs

安装指南(官网):https://github.com/cdcseacave/openMVS#build

安装vcg:

复制代码
git clone -b devel https://github.com/cnr-isti-vclab/vcglib.git #vcg只有头文件,不用编译
 
# 但要修改一处代码: HETYPE ht=*this; ==》 MTTYPE ht=*this;

遇到一处编译错误,更改代码即可:HETYPE ht=*this; ==》 MTTYPE ht=*this;

安装eigen3.4:

复制代码
cd ~
wget https://gitlab.com/libeigen/eigen/-/archive/3.4.0/eigen-3.4.0.tar.gz
tar -xzf eigen-3.4.0.tar.gz
cd eigen-3.4.0
mkdir build && cd build
cmake ..
sudo make install

安装glfw3 (可选):

复制代码
sudo apt‐get install freeglut3‐dev libglew‐dev libglfw3‐dev

下载、编译openMVS:

复制代码
git clone https://github.com/cdcseacave/openMVS 
mkdir openMVS_build 
cd openMVS_build 
#Cmake 配置下 
cmake .. -DCMAKE_BUILD_TYPE=Release -DVCG_ROOT=../../vcglib/ -DEigen3_INCLUDE_DIR=/usr/local/include/eigen3 -DEIGEN3_INCLUDE_DIR=/usr/local/include/eigen3 -DCMAKE_PREFIX_PATH="/usr/local" 
#make编译下: 
make -j4

其中可能会缺少一些依赖:

复制代码
apt-get install python3-dev
apt-get install libboost-iostreams-dev
apt-get install libopencv-dev

在make的时候也许会出现如下错误:

1.error: missing binary operator before token "(" 225 | #if defined(__has_builtin) && __has_builtin(__builtin_debugtrap)

直接定位错误,将原先的#if defined(__has_builtin) && __has_builtin(__builtin_debugtrap)改为

2.fatal error: CGAL/AABB_traits_3.h: No such file or directory 41 | #include <CGAL/AABB_traits_3.h>

经检查,是代码部分有误,应该为CGAL/AABB_traits.h,同样的错误还有下一行的CGAL/AABB_triangle_primitive.h

到此,编译结束。

把编译好的 `openMVS_build/bin` 下的全部二进制文件放入 `openMVS` 文件夹中。当前的文件结构为

其中code目录为重建代码目录,其他为辅助的下载的文件。现在就需要将openMVS/openMVS_build/bin 下的全部二进制文件放入 code/openMVS 文件夹中。

二.执行

当前code目录下的文件结构如:

还需要安装一些python以来,如

复制代码
pip install open3d
pip install opencv-python
pip install trimesh

执行代码python3 colmap_mvs_reconstruction_v2.py遇到报错

解决方法:pip install --upgrade typing_extensions

之后即可顺利跑通代码。

相关推荐
manduic9 分钟前
告别传统编码器痛点!麦歌恩MT6701,重构位置检测选型新逻辑
人工智能·重构·磁性角度传感器
ai大模型中转api测评12 分钟前
告别文字堆砌:Gemini 交互 API 赋能垂直领域,开发者如何重构用户认知?
人工智能·重构·交互·api
陌殇殇17 分钟前
002 Spring AI Alibaba框架整合百炼大模型平台 — 聊天、文生图、语音、向量模型整合
人工智能·spring·ai
南湖北漠18 分钟前
记录生活中的那些小事(佚名)
网络·人工智能·计算机网络·其他·安全·生活
清水白石00820 分钟前
《解锁 Python 潜能:从核心语法到 AI 服务层架构的工业级进阶与实战》
人工智能·python·架构
大连好光景23 分钟前
学会评估模型的拟合状态和泛化能力
人工智能·机器学习
老兵发新帖26 分钟前
Hermes:openclaw的最佳替代之基于源码部署的飞书配置
人工智能·飞书
weixin_5134499631 分钟前
walk_these_ways项目学习记录第七篇(通过行为多样性 (MoB) 实现地形泛化)--核心环境下
人工智能·python·学习
智在碧得37 分钟前
碧服智能体进化:AI赋能意图识别能力,“一问”更智能
大数据·人工智能·机器学习
人工智能AI技术42 分钟前
Visual Studio Code 1.114 更新:AI 聊天体验全面优化
人工智能