├── README.md └── figures ├── camera ├── camera_extrinsic.png └── camera_pinhole.png ├── datasets ├── DTU_scan83.png ├── ETH3D_courtyard.JPG └── TT_Truck.jpg ├── fig1_3d_recon.png ├── fig2_mono_depth_est.png ├── fig3_stereo_disparity.jpg ├── fig4_multi-view_stereo.jpg ├── fig5_3d_recon.png └── sfm └── incremental-sfm.png /README.md: -------------------------------------------------------------------------------- 1 | # multi-view-3d-reconstruction 2 | 《基于多视角图像的三维重建》 3 | 4 | ## 一、引言 5 | 6 | ### 1.1 三维重建 7 | 8 | 三维重建根据所用传感器的不同,可以分为**主动式三维重建**和**被动式三维重建**。主动式三维重建根据传感器去主动探测深度信息,常用的传感器包括激光雷达(LiDAR),结构光(Structured Light)和ToF(Time-of-Fight, 飞行时间)等。主动式三维重建适用的场景受限,而且通常硬件设备价格昂贵。而被动式三维重建通常只需要相机,而且适用场景较为广泛,因此受到研究人员的重视/青睐。被动式三维重建根据算法输入视图数目的不同,可以分为单目深度估计、双目立体匹配和多视图三维重建三种方式。 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 |
三维重建方式分类
18 | 19 | + 三维重建 20 | + 激光雷达 【准确/稀疏/场景受限/探测距离受限/贵】 --> 自动驾驶 21 | + 结构光/ToF 【快速出深度图/场景受限/探测距离受限/较贵】 --> KinectV1/V2、奥比中光、RealSense 22 | + 基于图像的三维重建 【成本低/算法性能在不断提升】 23 | + 单目深度估计 24 | + 双目立体匹配 25 | + 多视图三维重建 26 | 27 | ### 1.2 基于图像的三维重建 28 | 29 | 基于图像的三维重建根据输入视图数可分为:**单目深度估计**、**双目立体匹配**和**多视图三维重建**。具体到每一种方式,如果三维重建是以恢复场景几何结构为目标,那么单目深度估计的深度图如果没有施加多视图的几何一致性(连续性)约束的话,那么重建三维几何的质量无法保证;而双目立体匹配计算的深度和双目相机的焦距和基线有关,如果需要获得较大的深度感知范围,则需要很大的基线距离,因此限制了双目立体匹配的应用范围。多视图立体匹配的输入图像为多幅单目图像,通过多视图之间的相似性搜索进行深度图的预测。多视图立体匹配的图像无需进行校正, 图像采集成本低,适用范围广, 因此多视图立体匹配广泛应用于各种场景的三维模型重建中。 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 |
单目深度估计 (Eigen et al. 2014)双目立体匹配 (Middlebury Stereo Benchmark)多视图三维重建 (MVS Tutorial)
43 | 44 | 45 | + 单目深度估计 46 | + 双目立体匹配: `depth=f·b/disp`, 式中f为focal length(焦距),b为baseline(基线),深度探测范围受限于相机之间的基线距离 47 | + 多视图三维重建 48 | 49 | **QA: Stereo Matching和MVS的区别** 50 | 51 | + 数据获取:立体匹配通常使用双目相机进行拍摄,而MVS采集的数据通常为相机在不同视角下拍摄的多视角图像(或在连续视频流中采样得到的视频帧) 52 | + 输入视图数:顾名思义,立体匹配的输入为两幅(校正后的)图像,计算视差后通过相机基线 *b* 和焦距 *f* 将视差 *disparity* 转为深度值 *depth* 53 | + 更具体地,MVS的步骤中涉及视图选择,即选取哪些邻域视图用于相似性搜索(图像之间的夹角以及稀疏点之间的重叠度)。 54 | 55 | ### 1.3 基于多视角图像的三维重建 56 | 基于图像的三维重建系统的输入是一组具有重叠区域的多视角图像,首先通过**运动恢复结构**(Structure-fromMotion, SfM) 为输入图像进行相机位姿估计,同时得到场景的稀疏点云信息。然后**多视图立体匹配**算法(Multi-view Stereo, MVS) 用于稀疏重建的稠密化, 重建结果为场景的稠密点云模型。 如需获得三维场景的表面网格模型,则需要对重建得到的点云进行**表面重建**(Suface Reconstruction)。 57 | 58 | 61 | 62 | 63 | 64 | 65 | 66 | 67 | 68 | 69 |
基于多视角图像的三维重建
70 | 71 | + 输入图像采集 72 | + 使用相机在不同视角下采集的图像 73 | + 从视频序列中采样得到的图像 https://github.com/cansik/sharp-frame-extractor 74 | + 运动恢复结构 75 | + 多视图立体匹配 76 | + 表面重建 77 | 78 | ### 1.4 多视图几何基础 79 | 80 | 81 | 82 | 83 | 84 | 85 | 86 | 87 | 88 | 89 |
针孔相机模型(视觉SLAM十四讲)相机外参
90 | 91 | 92 | ## 二、数据集与评测指标 93 | ### 2.1 多视图三维重建数据集 94 | #### 2.1.1 公开数据集 95 | 多视图三维重建(此处指MVS)常用数据集包括**DTU**、**Tanks and Temples**和**ETH3D**,以及用于深度学习网络模型训练的**BlendedMVS**。具体内容可以参考[multi-view-stereo-benchmark](https://github.com/XYZ-qiyh/Awesome-Learning-MVS#multi-view-stereo-benchmark) 96 | 102 | 103 | 104 | 105 | 106 | 107 | 108 | 109 | 110 | 111 | 112 | 113 | 114 |
DTU (scan83)Tanks and Temples (Truck)ETH3D (courtyard)
115 | 116 | 117 | #### 2.1.2 多视图三维重建评测指标 118 | 为了评价三维点云重建的性能,使用F-score或平均绝对误差距离指标来定性评价重建结果的准确性和完整性。 119 | + F-score的计算可以参考 [Tanks and Temples Tutorial](https://tanksandtemples.org/tutorial/) (Appendix B. Compute F-score) 120 | + Overall Score的计算可参考 [Yao et al MVSNet paper](https://openaccess.thecvf.com/content_ECCV_2018/papers/Yao_Yao_MVSNet_Depth_Inference_ECCV_2018_paper.pdf) (Sec 5.1 Benchmarking on DTU dataset) 121 | 122 | 123 | ### 2.2 真实场景中的三维重建 124 | 数据分类:室内物体、室内场景、室外物体、室外场景 125 | 126 | 对于物体类型的重建,推荐使用基于深度学习的**PlaneSweeping**方法;而对于大规模场景的重建,传统**PatchMatch**方法的泛化性更佳 127 | 128 | https://github.com/ethan-li-coding/Datasets-of-MVS-reconstruction 129 | 130 | https://github.com/XYZ-qiyh/Awesome-Learning-MVS#large-scale-real-world-scenes 131 | 132 | 133 | ## 三、运动恢复结构 134 | 135 | 作为多视图立体匹配的前置步骤,运动恢复结构为输入图像进行**相机参数估计**和**场景稀疏重建**。稀疏重建得到的3D点记为χ={X_k∈R^3 |k=1...N_X},N_X为场景稀疏点个数。运动恢复结构算法可以被划分为增量式和全局式方法,增量式的方法速度相较于全局式方法速度慢但准确性高,而全局式的方法对外点不够鲁棒。以增量式运动恢复结构为例,其重建流程如下图所示。 136 | 137 | 138 | 139 | 140 | 141 | 142 | 143 | 144 |
增量式SfM重建流程
145 | 146 | 增量式SfM首先从输入图像的特征点提取开始,由于SIFT特征具有尺度和几何不变性等特点,因此通常使用SIFT描述符来匹配不同图像之间的特征点,生成若干组可能的匹配点对。然后使用随机采样一致性(RANdom SAmple Consensus,RANSAC)策略来鲁棒地估计图像对之间的本质矩阵(Essential Matrix),并剔除错误的匹配点对。在增量式重建阶段,从精心选取的两视图重建开始,通过图像配准和三角化不断地添加新视图和3D点。如果不进一步细化,SfM通常会迅速漂移到不可恢复的状态。考虑到过程中的误差累积,使用光束法平差(Bundle Adjustment, BA)对相机位姿和稀疏点位置进行优化,来最小化稀疏3D点在不同视角图像中的重投影误差。 147 | 148 | 183 | 184 | ## 四、多视图立体匹配 185 | 基于深度学习的MVS方法汇总:https://github.com/XYZ-qiyh/Awesome-Learning-MVS 186 | 187 | 基于传统PatchMatch的多视图三维重建:https://github.com/XYZ-qiyh/Awesome-PatchMatch-MVS 188 | -------------------------------------------------------------------------------- /figures/camera/camera_extrinsic.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/XYZ-qiyh/multi-view-3d-reconstruction/7aead4f126db040c5a69bd1a1ae70e82b601a05d/figures/camera/camera_extrinsic.png -------------------------------------------------------------------------------- /figures/camera/camera_pinhole.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/XYZ-qiyh/multi-view-3d-reconstruction/7aead4f126db040c5a69bd1a1ae70e82b601a05d/figures/camera/camera_pinhole.png -------------------------------------------------------------------------------- /figures/datasets/DTU_scan83.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/XYZ-qiyh/multi-view-3d-reconstruction/7aead4f126db040c5a69bd1a1ae70e82b601a05d/figures/datasets/DTU_scan83.png -------------------------------------------------------------------------------- /figures/datasets/ETH3D_courtyard.JPG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/XYZ-qiyh/multi-view-3d-reconstruction/7aead4f126db040c5a69bd1a1ae70e82b601a05d/figures/datasets/ETH3D_courtyard.JPG -------------------------------------------------------------------------------- /figures/datasets/TT_Truck.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/XYZ-qiyh/multi-view-3d-reconstruction/7aead4f126db040c5a69bd1a1ae70e82b601a05d/figures/datasets/TT_Truck.jpg -------------------------------------------------------------------------------- /figures/fig1_3d_recon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/XYZ-qiyh/multi-view-3d-reconstruction/7aead4f126db040c5a69bd1a1ae70e82b601a05d/figures/fig1_3d_recon.png -------------------------------------------------------------------------------- /figures/fig2_mono_depth_est.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/XYZ-qiyh/multi-view-3d-reconstruction/7aead4f126db040c5a69bd1a1ae70e82b601a05d/figures/fig2_mono_depth_est.png -------------------------------------------------------------------------------- /figures/fig3_stereo_disparity.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/XYZ-qiyh/multi-view-3d-reconstruction/7aead4f126db040c5a69bd1a1ae70e82b601a05d/figures/fig3_stereo_disparity.jpg -------------------------------------------------------------------------------- /figures/fig4_multi-view_stereo.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/XYZ-qiyh/multi-view-3d-reconstruction/7aead4f126db040c5a69bd1a1ae70e82b601a05d/figures/fig4_multi-view_stereo.jpg -------------------------------------------------------------------------------- /figures/fig5_3d_recon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/XYZ-qiyh/multi-view-3d-reconstruction/7aead4f126db040c5a69bd1a1ae70e82b601a05d/figures/fig5_3d_recon.png -------------------------------------------------------------------------------- /figures/sfm/incremental-sfm.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/XYZ-qiyh/multi-view-3d-reconstruction/7aead4f126db040c5a69bd1a1ae70e82b601a05d/figures/sfm/incremental-sfm.png --------------------------------------------------------------------------------