# 传统方法Colmap进行三维重建实践(GUI|命令行)
* [Colmap安装](#colmap安装)
* [数据采集](#数据采集)
* [Colmap GUI操作](#colmap-gui操作)
* [稀疏重建](#稀疏重建)
* [1. 准备工作](#1-准备工作)
* [2. 特征提取](#2-特征提取)
* [3. 特征匹配](#3-特征匹配)
* [4. 增量式建模](#4-增量式建模)
* [深度图估计与优化](#深度图估计与优化)
* [1. 图像去畸变](#1-图像去畸变)
* [2. 深度估计](#2-深度估计)
* [稠密重建](#稠密重建)
* [可视化显示](#可视化显示)
* [Meshlab](#meshlab)
* [Colmap GUI](#colmap-gui)
* [中间数据分析 —— 匹配矩阵](#中间数据分析--匹配矩阵)
* [Colmap命令行操作](#colmap命令行操作)
* [Resources](#resources)
------
Colmap算法**pipeline**:
![](https://doublez-site-bed.oss-cn-shanghai.aliyuncs.com/img/20210424232124.png)
## Colmap安装
[在Ubuntu Docker中安装Colmap](https://github.com/doubleZ0108/TJ-Graduation-Project-2021/blob/master/experiment/Colmap/setup.md)
---
## 数据采集
[多视角三维重建(MVS)的数据采集](https://zhuanlan.zhihu.com/p/363209410)
---
## Colmap GUI操作
### 稀疏重建
采用增量SfM技术
> 其中SfM技术出自[GitHub - openMVG/openMVG: open Multiple View Geometry library. Basis for 3D computer vision and Structure from Motion.](https://github.com/openMVG/openMVG)
#### 1. 准备工作
1. 创建工程目录`TestScan`
2. 在其中创建`images`目录并存放原始图像
3. 运行`colmap gui`,点击`file - New Project`弹出Project窗口
4. `在Database`行点击`New`,在`TestScan`目录中创建`TestScan.db`文件用于存储原始图片地址、特征匹配等数据
5. 在`Images`行点击`Select`选择场景原始图片所在目录
6. 最后点击`save`
初始的目录结构为:
```
.
|-- TestScan.db
`-- images
|-- 00000000.jpg
|-- 00000001.jpg
|-- ...
`-- 00000048.jpg
```
#### 2. 特征提取
此步骤进行对应点搜索,可以理解为全局特征匹配
点击`processing - Feature Extraction`
- 选择相机模型为`Pinhole`
- 选择`Parameters from EXIF`:从EXIF中提取相机内参(一般采集到的影响都携带EXIF文件)
- 其他参数暂且默认
然后点击`Extract`进行特征提取
![](https://doublez-site-bed.oss-cn-shanghai.aliyuncs.com/img/20210424232231.png)
#### 3. 特征匹配
点击`processing - Feature Matching`,参数全部选用默认,然后点击`Run`进行特征匹配
这个步骤结束之后会自动生成**场景图**和**匹配矩阵**(以不同视图之间同名特征数为权重,以不同视图为图节点的图结构)
> 从右侧的`Log`中可以看到这两步的输出![](https://doublez-site-bed.oss-cn-shanghai.aliyuncs.com/img/20210424232252.png)
#### 4. 增量式建模
点击`reconstruction - start reconstruction`进行一键式增量迭代重建
此步骤逐渐增加视角,并进行迭代优化重投影误差
目的是计算不同视图的相机参数、得到场景的稀疏点云和确定不同视图与点云间的可视关系
最后可以得到场景的**稀疏点云**和各个视角的**相机姿态**
![](https://doublez-site-bed.oss-cn-shanghai.aliyuncs.com/img/20210424232304.png)
以第49张图像(39个视角)为例
- 已有点云576个
- 首先进行姿态估计(Pose Refinement Report)
- 再进行BA优化:整体稀疏点云融合测量点149个,滤除测量点32个
- 再进行三角测量(Retriangulation)
- 最后再进行迭代全局的BA优化,优化已有相机的姿态和三维稀疏点云坐标
```
==============================================================================
Registering image #39 (49)
==============================================================================
=> Image sees 576 / 991 points
Pose refinement report
----------------------
Residuals : 1132
Parameters : 8
Iterations : 7
Time : 0.0134351 [s]
Initial cost : 0.535158 [px]
Final cost : 0.462099 [px]
Termination : Convergence
=> Continued observations: 540
=> Added observations: 73
Bundle adjustment report
------------------------
Residuals : 24684
Parameters : 2030
Iterations : 21
Time : 0.501096 [s]
Initial cost : 0.374389 [px]
Final cost : 0.367663 [px]
Termination : Convergence
=> Merged observations: 149
=> Completed observations: 27
=> Filtered observations: 32
=> Changed observations: 0.016853
Bundle adjustment report
------------------------
Residuals : 24690
Parameters : 2000
Iterations : 3
Time : 0.0764892 [s]
Initial cost : 0.430376 [px]
Final cost : 0.427614 [px]
Termination : Convergence
=> Merged observations: 10
=> Completed observations: 1
=> Filtered observations: 0
=> Changed observations: 0.000891
==============================================================================
Retriangulation
==============================================================================
=> Completed observations: 9
=> Merged observations: 186
=> Retriangulated observations: 0
```
---
### 深度图估计与优化
Colmap中代价构造、累积、估计和优化是封装在一起的,利用GEM模型进行求解
**主要分为四个步骤**:匹配代价构造 -> 代价累积 -> 深度估计 -> 深度图估计
> 这里的原理暂时省略,[多视图几何三维重建实战系列之COLMAP](https://mp.weixin.qq.com/s?__biz=MzU1MjY4MTA1MQ==&mid=2247511777&idx=2&sn=73ab994649ba559d9628d1fc4dcfda5a&chksm=fbfc85d5cc8b0cc3d89f4ce189cc0cad185fcd7519193e8951833884a2c26b3f1eadfc84d098&scene=178&cur_album_id=1433700656199860224#rd)
#### 1. 图像去畸变
点击`reconstruction - dense reconstruction`,在稠密重建窗口中点击`select`选择文件存放位置,然后点击`undistortion`即可去除图像畸变
> ⚠️注意:这里不要选择项目的根目录,拷贝图片的时候会报错路径已存在导致colmap gui闪退的;同时undistortion也只能点一次,第二次同样会因为路径已存在闪退
![](https://doublez-site-bed.oss-cn-shanghai.aliyuncs.com/img/20210424232315.png)
带有畸变的图像会导致边缘有较大的时差估计误差,因此在深度图估计之前,使用光学一致性和几何一致性联合约束构造代价匹配
> dtu数据集和之前配置成针孔模型已经隐含无畸变
> 如果使用自采集数据集需要更改相机模型为带畸变参数的相机模型
#### 2. 深度估计
在稠密重建窗口中点击`stereo`进行场景深度估计
深度估计结束后可以得到`photometric`和`geometric`下的深度图和法向量图
> 这一步很慢而且资源消耗比较大
![](https://doublez-site-bed.oss-cn-shanghai.aliyuncs.com/img/20210424232327.png)
之后点击红框里的这些就可以观察光学一致性photometric和几何一致性geometric后的depth map和normal map
![](https://doublez-site-bed.oss-cn-shanghai.aliyuncs.com/img/20210424232337.png)
Colmap会利用光学一致性同时估计视角的深度值和法向量值,并利用几何一致性进行深度图优化
---
### 稠密重建
点击`Fusion`即可进行基于深度图融合的稠密重建
![](https://doublez-site-bed.oss-cn-shanghai.aliyuncs.com/img/20210424232346.png)
重建后会在`dense`中生成`ply`模型文件
### 可视化显示
#### Meshlab
安装[MeshLab](https://www.meshlab.net)进行显示
```bash
sudo snap install meshlab
```
【报错:meshlab无法打开ply文件】
![](https://doublez-site-bed.oss-cn-shanghai.aliyuncs.com/img/20210424232401.png)
**问题分析**:用文本浏览器打开ply文件发现header之后全部问乱码
![](https://doublez-site-bed.oss-cn-shanghai.aliyuncs.com/img/20210424232410.png)
找了很多资料还是没有找到解决方案,最后找师兄要了一个显示ply的python脚本,主要是用的是open3d库就成功了😭,这个故事告诉我们 听老师和师兄的一句建�
没有合适的资源?快使用搜索试试~ 我知道了~
温馨提示
毕业设计-基于无监督深度学习的土木工程场景三维重建 标题:基于无监督深度学习的土木工程场景三维重建——毕业设计探索与实践 导语:随着科技的不断发展,深度学习技术在土木工程领域中的应用日益广泛。本文将介绍一项毕业设计课题——基于无监督深度学习的土木工程场景三维重建,探讨其技术原理、实现过程及应用前景。 一、项目背景 土木工程场景的三维重建对于工程设计、施工管理、安全监测等方面具有重要意义。传统的三维重建方法往往依赖于昂贵的设备和复杂的人工操作。近年来,深度学习技术的发展为无监督条件下的三维重建提供了新的可能。 二、技术原理 本项目采用无监督深度学习技术,主要基于以下原理: 自动编码器(Autoencoder):通过构建一个神经网络,实现输入数据的编码与解码,从而学习到数据的有效表示。 生成对抗网络(GAN):通过对抗训练,使生成网络能够生成与真实数据分布相似的数据。 三维重建:利用学习到的数据表示,通过算法恢复出原始场景的三维结构。 三、实现过程 数据准备:收集土木工程场景的二维图像数据,如建筑物、道路、桥梁等。 网络设计:构建基于自动编码器和生成对抗网络的深度学习模型。 模型训练:在无
资源推荐
资源详情
资源评论
收起资源包目录
毕业设计-基于无监督深度学习的土木工程场景三维重建.zip (74个子文件)
TJ-Graduation-Project-2021-master
doc
Assignment.md 8KB
Translation.md 31KB
Opening-Report.md 18KB
experiment
fusibile
setup.md 2KB
dataset
dataset-collection.md 2KB
unsup_mvs
fusibile-setup.md 2KB
setup.md 5KB
README.md 2KB
Colmap
Dockerfile 1KB
setup.md 7KB
README.md 13KB
colmap-cli-run.sh 838B
paper-reading
MVSNet: Depth Inference for Unstructured Multi-view Stereo.md 13KB
Learning Unsupervised Multi-View Stereopsis via Robust Photometric Consistency.md 14KB
paper
3-mvs.md 18KB
6-summary.md 3KB
2-theoretical-basis.md 17KB
toc.md 2KB
reference.md 8KB
0-abstract.md 2KB
4-unsup_mvs.md 12KB
5-experiment.md 19KB
基于无监督深度学习的土木工程场景三维重建.md 100KB
1-intro.md 15KB
acknowledgement.md 2KB
images
2.7.png 230KB
3.4.png 625KB
3.8.png 511KB
1.1.png 463KB
2.5.png 366KB
5.11.png 4.35MB
2.6.png 33KB
5.9.png 1.7MB
5.6.png 4.75MB
5.2-.png 1.5MB
5.1.png 1.37MB
2.8.png 49KB
3.6.png 77KB
5.12.png 1.29MB
3.3.png 60KB
2.3.png 32KB
3.5.png 566KB
4.3.png 664KB
2.4.png 48KB
2.1.png 39KB
5.8.png 1.49MB
3.2.png 472KB
5.10.png 973KB
3.1.png 1.22MB
5.2.png 1.55MB
2.2.png 71KB
3.7.png 47KB
5.3.png 2.7MB
4.1.png 449KB
5.4.png 5.68MB
5.7.png 1.72MB
5.5.png 4.17MB
4.2.png 392KB
6.1.png 3.82MB
0-abstract-en.md 2KB
typography
毕业设计(论文)模板(理工类)-可编辑版.doc 925KB
表.docx 23KB
参考文献.docx 22KB
archive
开题报告.pdf 261KB
【答辩】基于无监督深度学习的土木工程场景三维重建.pdf 89.5MB
基于无监督深度学习的土木工程场景三维重建.pdf 32.74MB
任务书.pdf 192KB
【外文科技文献翻译】高分辨率多视点立体视觉与立体匹配的级联代价体.pdf 19.08MB
【模板】同济毕业设计答辩.pptx 40.66MB
.gitignore 34B
script
visualize_ply.py 2KB
video_to_images.py 857B
README.md 12KB
说明_.txt 3KB
共 74 条
- 1
资源评论
人工智能教学实践
- 粉丝: 548
- 资源: 349
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- bdwptqmxgj11.zip
- onnxruntime-win-x86
- onnxruntime-win-x64-gpu-1.20.1.zip
- vs2019 c++20 语法规范 头文件 <ratio> 的源码阅读与注释,处理分数的存储,加减乘除,以及大小比较等运算
- 首次尝试使用 Win,DirectX C++ 中的形状渲染套件.zip
- 预乘混合模式是一种用途广泛的三合一混合模式 它已经存在很长时间了,但似乎每隔几年就会被重新发现 该项目包括使用预乘 alpha 的描述,示例和工具 .zip
- 项目描述 DirectX 引擎支持版本 9、10、11 库 Microsoft SDK 功能相机视图、照明、加载网格、动画、蒙皮、层次结构界面、动画控制器、网格容器、碰撞系统 .zip
- 项目 wiki 文档中使用的代码教程的源代码库.zip
- 面向对象的通用GUI框架.zip
- 基于Java语言的PlayerBase游戏角色设计源码
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功