一、前言
视觉三位重建一直是计算机视觉和摄影测量领域讨论的话题,且在近几年更是大家关注的热点、如数字孪生、AR、自动驾驶的高精度地图等。视觉三维重建相比激光三维重建,虽然精度上处于劣势,但是视觉具备更丰富的信息且成本低廉,故是数字化场景的首选方案,到目前为止,视觉三维重建框架层出不穷,其开源代表有colmap(2016)、openmvg(2012)、openmvs、alicevison、opensfm 等,商业代表有ContextCapture、photoscan、pix4D、realicature 等。商业代表的主要应用场景主要是处理无人机数据,对于车载数据可能不具备优势,而开源的算法框架距离商业化、可用状态还有很长的路需要走,需要投入精力进行大量的优化。
二、开源算法框架为何选择colmap
COLMAP是一款功能强大structure from motion 和MVS 工具,是Sch?nberger在ETH博士期间的成果,到目前为止,一直保持开源的框架的前几位,也是后续研究者开展相关工作的首选框架,其整个pipeline 流程如下: 三维重建框架与开源的slam一样,如何选择自己的学习工具是很重要的一件事,选择正确会避免走很多弯路。colmap在代码结构上,进行模块化,代码干净具备很强的可读性,是一款非常值得阅读的开源框架,这无疑是初学者的福音;同时在重建效果上,相比其他开源算法框架和部分商业框架,也具备很强的优势,具体效果对比如下: 场景1 场景2 场景3
三、开启三维之路
如何使用一个开源算法框架,我个人总结如下: 1.第一步肯定是跑公开数据集,车载的,无人机的,记录不同拍摄方式产生的效果的好坏,首先有概念上的认知 2.跑自己的数据,如手机,标准相机拍摄的图像,记录存在的问题和遇到的block 3.开始阅读代码,了解每个模块的功能。 4.尝试小小修改代码,比如如何输出sift提取的x,y,orientation,scale ?如何输出我每次ba都是用了哪些图像? 5.尝试改进代码,当然项目驱动最好,比如如何用其他handcrafted features 或 learned features 替换sift,如何恢复尺度?如何提升系统的鲁棒性? 关于数据集,个人总结以下: 常用数据集
1、ISPRS
https://www.isprs.org/education/benchmarks.aspx
2、sensefly
https://www.sensefly.com/education/datasets/
3、Kagaru
https://michaelwarren.info/docs/datasets/kagaru-airborne-stereo/
4、WHU
http://gpcv.whu.edu.cn/data/WHU_MVS_Stereo_dataset.html
5、KITTI
http://www.cvlibs.net/datasets/kitti/
6、ETH
https://www.eth3d.net/
7、realitycapture
https://www.capturingreality.com/SampleDatasets
8、视觉定位数据集
https://www.visuallocalization.net/datasets/
9、ODM
https://www.opendronemap.org/odm/datasets/
10、mve 官网的数据
https://www.gcc.tu-darmstadt.de/home/proj/ambient_point_clouds/apc.en.jsp
11、奥地利维也纳理工大学的Harvest4D项目(有GT)
https://harvest4d.org/?page_id=1367
12、自动化所偏古建筑
http://vision.ia.ac.cn/zh/data/index.html
13、blendedmvs
https://github.com/YoYo000/BlendedMVS
14、Drone Mapping
https://dronemapper.com/sample_data/
16、https://www.cs.cornell.edu/projects/bigsfm/#code bigsfm
四、视觉三维的应用场景
关于辅助学习课程: 可以关注本人“视觉三维重建的关键技术与实现-colmap代码解析”课程视频,具体课程介绍可以扫以下二维码:
|