2025.7.20学习日记
今天看到了一篇名为Review of Feed-forward 3D Reconstruction: From DUSt3R to VGGT的文章,介绍了前馈3D重建的各种模型
1.传统范式
作者在文章中介绍到Inferring dense 3D geometry from a collection of 2D images的传统范式包括两个步骤,首先是运动结构恢复SfM,其次是多视角立体成像MVS
- SfM:主要进行提取和匹配图像中的
sparse local feature,通过Bundle Adjustment过程去联合优化相机位姿和sparse3D点云.colmap工具箱是这一过程的典型代表,colmap工具箱将文件处理成

- MVS:利用已知的相机位姿,创建像素级的对应关系,估计每个像素的深度,最后融合成密集点云

【注】:谈到像素级对应关系,比较经典的是语义分割的任务,为每个像素进行分类,最后达到语义分割的效果。
2.COLMAP
COLMAP是集成了SfM与MVS的开源三维重建工具,既可以通过SfM管道生成稀疏点云,又可以再次通过MVS管道生成稠密点云。以下是项目的参考文档和地址
【】参考文档:https://colmap.github.io/
【】项目地址:https://github.com/colmap/colmap
安装
Colmap可以通过CLI或者GUI两种方式使用,此外还可以被构建为可重用库供C++程序使用,
Windows可以通过Github发布页安装cuda版本与nocuda版本https://github.com/colmap/colmap/releases
Ubuntu可以通过apt install colmap安装nocuda版本;可以参考以下两个网站安装编译带有cuda的版本
- https://github.com/colmap/colmap/issues/2366
- https://github.com/dberga/nerfstudio/blob/main/INSTALL.md
安装步骤为,安装相关依赖->构建并编译Colmap(base)->运行colmap(colmap -h/colmap gui)
【注】CMAKE_CUDA_ARCHITECTURES代表的是显卡硬件架构编号, rtx2080ti 对应75, rtx4060ti 对应89. 完整的CUDA硬件架构对应关系, 可以查看这两个页面 cuda-gpus, cuda-legacy-gpus
教程
- 快速入门:
- 选定工作区,例如我的图片位于
path/to/project/images,那么我可以选定path/to/project作为工作区 - 运行重建工具,在工作区下会多出
sparse与dense文件夹,前一个文件夹下的文件为稀疏模型,后一个文件夹的文件为密集模型,
【注】:在密集模型中,ply可以被可视化,网格mesh前缀文件必须使用外部查看器

- 术语:
keypoints指COLMAP探测到的每张图像的关键点,descriptors指COLMAP绑定到关键点上的数值,matches表示keypoints与descriptors的对应关系 - 数据结构:
主要介绍.ini文件,该文件规定了图像文件夹路径,数据库文件路径 - 特征检测
在第一步中,特征检测/提取会在图像中找到稀疏特征点,并使用数值描述符来描述它们的外观。COLMAP 导入图像,并在一个步骤中执行特征检测/提取,以便只从磁盘加载一次图像。产生的特征格式如下,每行对应一个特征


- 特征匹配
在第二步中,特征匹配和几何验证会在不同图像中的特征点之间找到对应关系。支持自定义匹配,需要提供一个文本文件


自定义匹配中,img1的0号特征点对应,img2的1号特征点,依次类推 - 稀疏重建
稀疏重建指通过从多张二维图像中恢复相机参数和稀疏特征点云,输入是一组多视角拍摄的二维图像,输出是相机参数与稀疏点云。

- 密集重建
第一步是undistort图像,第二步是使用stereo计算深度和法线图,第三步是将深度和法线图fuse转换为点云,然后是最终的、可选的点云meshing步骤。

- 接口Interface
COLMAP 的大多数功能都可以通过图形界面和命令行界面访问,这两个界面都嵌入在同一个可执行文件中。
- CLI:你可以直接将选项作为命令行参数提供,或者使用
colmap --project_path path/to/project.ini,提供一个包含选项的.ini项目配置文件。 - GUI:启动 GUI 应用程序,请执行
colmap gui,或者使用colmap gui --project_path path/to/project.ini,提供一个包含选项的.ini项目配置文件。


无法一次项启动所有的模块,例如启动特征检测模块时,就无法启动特征匹配模块
多相机支持
多相机支持在参考文档中被称为Rig Support,Rig为英文单词Rigid的前缀,在Colmap中表示刚体相机系统(Rigid Camera System)
- 多相机系统的特点
相机之间的相对位置和方向固定不变(旋转矩阵与平移矩阵,旋转四元数和平移向量) - Colmap的处理方法
选定一个相机作为Rig系统参考,优化时仅优化参考相机的位置和方向,其余需要相机的位姿作为参数固定

【注】AI理解内容还挺好用的😎
3.DL的简单探索
起初的深度学习表现为优化特定组件,例如SuperPoint和SuperGlue增强了特征提取和匹配,MVSNet以及后续的CasMVSNet,PatchMatchNet代替了传统的MVS步骤

浙公网安备 33010602011771号