目录
大场景图像三维建模的应用
总体分类
典型应用
几何视觉的核心问题
三维几何视觉核心问题: 场景结构+相机位姿+(相机参数)
途径一: Structure from Motion (SfM) + Multiple View Stereo (MVS)
—多视角图像
—重建场景稀疏结构与相机位姿( off-line)
—SfM后可通过MVS获得稠密场景结构( off-line)
—SfM后可通过PnP计算相机实时位姿( on-line)
途径二: Simultaneous Localization and Mapping (SLAM)
—视频序列
—重建场景稀疏/准稠密/稠密结构与相机位姿( on-line)
—需要闭环检测+图优化( on-line)
图像三维建模基本流程
稀疏重建(Structure from Motion)
核心算法:
1)匹配点序列最优约减
2)场景群组自动分解与合并
3)混合式SfM(增量+全局)
4)重复纹理自动抑制
5)天地图像融合SfM
特征点匹配难点-误匹配
错误的外极几何关系
方案
Zach, Christopher, et al. "Disambiguating visual relations using loop constraints." CVPR 2010.
其他解决方案
1) Roberts, Richard, et al. “Structure from motion for scenes with large duplicate structures.”
CVPR 2011.(基于丢失匹配与时间戳进行对极几何图采样)
2) Wilson, Kyle, and Noah Snavely. “Network principles for sfm: Disambiguating repeated
structures with local context.” CVPR 2013 (基于track的可视性判断误匹配)
3) Wu,C. “Towards linear-time incremental structure from motion.” 3DV2013(基于大尺度
特征点快速寻找候选匹配对)
4) T. Shen, S. Zhu, T. Fang, R. Zhang, and L. Quan. “Graph-based consistent matching for
structure-from-motion.” ECCV 2016(基于语义树和团体检测减少候选匹配对)
5) Qingan Yan, et al. “Distinguishing the Indistinguishable: Exploring Structural Ambiguities
via Geodesic Context.” CVPR 2017 ( 聚类得到代表图像)
增量式的优势与不足
系统对于特征匹配以及外极几何关系的外点比较鲁棒,重建场景精度高:
1.标定过程中通过RANSAC不断地过滤外点
2.捆绑调整不断地优化场景结构
主要不足:
1.敏感:初始图像对选择及摄像机的添加顺序
2.场景漂移: 大场景重建时的累积误差
3.效率不足:反复的捆绑调整需要大量的计算时间
全局式的优势与不足
主要优势:
1.将误差均匀分布在外极几何图上,没有误差累积;
2.不需要考虑初始图像和图像添加顺序的问题;
3.仅执行一次捆绑调整,重建效率高。
主要不足:
1.鲁棒性不足:旋转矩阵求解时L1范数对外点相对鲁棒;而摄像机位置求解时相对平移关系对匹配外点比较敏感;
2.场景完整性: 过滤外极几何边,可能会丢失部分图像。
混合式的优势和不足
主要优势:
1.求解旋转矩阵时误差均摊到了外极几何图中
2.全局旋转矩阵的求解缓解了后续增量式的误差累积问题
3.求解摄像机位置时,两点法求取更加鲁棒,所需的捆绑次数更少
主要不足:
1.计算摄像机位置仍需要重复迭代的捆绑调整,效率需要进一步改善
稀疏重建总结
稀疏重建通过摄像机运动恢复场景结构, 当前主流方法主要区分在于摄像机初始位姿计算的模式。
1) 增量式鲁棒, 场景结构准确, 但效率不足;全局式仅一次捆绑调整, 效率高, 但鲁棒性不足, 易受到匹配外点的影响;
2) 混合式继承了增量和全局两种模式的优点:不仅提高了旋转矩阵的求取精度, 而且在保持鲁棒性的前提下, 提高了增量式重建的效率。
稀疏重建中亟待解决的问题
1) 鲁棒性:图像特征点( 学习得到的点或者带语义信息的点)
2) 模型的完整性:地面图像与天空图像之间的匹配
3) 效率:更快速的图像匹配策略( 保证召回率) ;分布式SfM
开源SfM软件
Project | Language | License |
Bundler | C++ | GNU General Public License - contamination |
Colmap | C++ | GNU General Public License - contamination |
MAP-Tk | C++ | BSD 3-Clause license - Permissive |
MICMAC | C++ | CeCILL-B |
MVE | C++ | BSD 3-Clause license + parts under the GPL 3 license |
OpenMVG | C++ | MPL2 - Permissive |
OpenSfM | Python | Simplified BSD license - Permissive |
TheiaSfM | C++ | New BSD license - Permissive |
稠密重建(Multiple View Stereo)
核心算法:
1)邻域图像组最优选择
2)多视图PatchMatch
3)局部一致性点云过滤
4)全局一致性点云融合
5)天地图像融合MVS
基于体素的MVS算法优缺点:
Pros:
生成规则点云
易于提取Mesh (Marching cube algorithm)
Cons:
精度取决于voxel粒度
难以处理大场景
基于特征点扩散的MVS算法优缺点:
Pros:
点云精度较高
点云分布均匀
Cons:
弱纹理区域造成扩散空洞
需要一次读入所有图像(改进:Clustering Views for PMVS, CMVS)
基于深度图融合的MVS算法优缺点:
Pros:
适用于大场景海量图像(并行计算深度图)
得到的点云数量多(冗余)
目前的开源和商用软件基本都采用这类方法
Cons:
很大程度上依赖于邻域图像组的选择
稠密重建(MVS)总结
稠密重建的目的:
- 在SfM基础上(相机内外参数已知),计算每个像素点对应的3D点
稠密重建三类基本方法:
- 基于体素的方法
- 基于点云扩散的方法
- 基于深度图融合的方法
稠密重建的后续操作:
- 三角网格建模(得到mesh模型)
- LOD建模(得到标准城市模型)
- BIM建模(得到标准建筑物模型)
开源MVS软件
Project | Language | License |
Colmap | C++ CUDA | GNU General Public License - contamination |
GPUIma + fusibile |
C++ CUDA | GNU General Public License - contamination |
HPMVS | C++ | GNU General Public License - contamination |
MICMAC | C++ | CeCILL-B |
MVE | C++ | BSD 3-Clause license + parts under the GPL 3 license |
OpenMVS | C++ CUDA | AGPL3 |
PMVS | C++ CUDA | GNU General Public License - contamination |
点云语义分割(Semantic Segmentation)
核心算法:
1)正射影像+NDSM生成
2)随机森林分类
3) CNN集成学习分类
4) Active Learning分类
部件语义建模(Semantic Modeling)
核心算法:
1)单体建筑精细提取
2)基于先验的VSA分割
3)外轮廓规整化
4) LOD自动建模
商业软件 (SfM+MVS+Modeling)
Software | Company |
ContextCapture | Bentley Acute3D |
PhotoMesh | SkyLine |
StreetFactory | AirBus |
PhotoScan | AgiSoft |
Pix4DMapper | Pix4D |
RealityCapture | RealityCapture |
总结与未来发展趋势
参考: 申抒含2018.05,云栖2050年,三维视觉及应用论坛,”基于图像的大规模场景三维建模"[PDF] http://vision.ia.ac.cn/Faculty/shshen/index.htm