三维重建之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

之后即可顺利跑通代码。

相关推荐
智能砖头36 分钟前
本地文档AI助手:基于LangChain和Qwen2.5的智能问答系统
人工智能·python
聚客AI2 小时前
🛫AI大模型训练到发布一条龙:Hugging Face终极工作流
人工智能·llm·掘金·日新计划
新智元4 小时前
刚刚,谷歌 AI 路线图曝光:竟要抛弃注意力机制?Transformer 有致命缺陷!
人工智能·openai
Maynor9965 小时前
我是如何使用Claude Code
人工智能
知舟不叙5 小时前
基于OpenCV的图像增强技术:直方图均衡化与自适应直方图均衡化
人工智能·opencv·计算机视觉·图像增强
speop5 小时前
【datawhale组队学习】共读AI新圣经
人工智能·学习
Blossom.1185 小时前
基于深度学习的智能图像增强技术:原理、实现与应用
人工智能·python·深度学习·神经网络·机器学习·tensorflow·sklearn
moonsims5 小时前
高开放性具身智能AIBOX平台—专为高校实验室与科研项目打造的边缘计算基座(让高校和科研院所聚焦核心算法)
人工智能
nbsaas-boot5 小时前
技术选型指南:如何选择更适合项目的开源语言及其生态系统
人工智能·架构
AI-星辰5 小时前
始理解NLP:我的第一章学习心得
人工智能·大模型·llm·nlp