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

之后即可顺利跑通代码。

相关推荐
sali-tec7 小时前
C# 基于halcon的视觉工作流-章66 四目匹配
开发语言·人工智能·数码相机·算法·计算机视觉·c#
这张生成的图像能检测吗7 小时前
(论文速读)ParaDiffusion:基于信息扩散模型的段落到图像生成
人工智能·机器学习·计算机视觉·文生图·图像生成·视觉语言模型
新程记7 小时前
2025年,上海CAIE认证报考指南:把握AI机遇的实用起点
人工智能·百度
unicrom_深圳市由你创科技7 小时前
汽修AI智能体V1.0——从模型微调到应用部署
人工智能
路边草随风7 小时前
milvus向量数据库使用尝试
人工智能·python·milvus
irizhao8 小时前
基于深度学习的智能停车场系统设计与实现
人工智能·深度学习
九河云9 小时前
华为云 ECS 弹性伸缩技术:应对业务峰值的算力动态调度策略
大数据·服务器·人工智能·物联网·华为云
IT空门:门主9 小时前
Spring AI的教程,持续更新......
java·人工智能·spring·spring ai
美狐美颜SDK开放平台9 小时前
美颜sdk是什么?如何将美颜SDK接入安卓/iOS直播平台?
人工智能·美颜sdk·直播美颜sdk·美颜api·美狐美颜sdk
AI营销资讯站9 小时前
AI营销内容生产:哪些平台支持全球多语言内容同步生产?
大数据·人工智能