学习在Windows环境下使用colmap三维重建
1、三维重建定义
基于视觉的三维重建,指的是通过摄像机获取场景物体的数据图像,并对此图像进行分析处理,再结合计算机视觉知识推导出现实环境中物体的三维信息。
主要步骤
(1) 图像获取:在进行图像处理之前,先要用摄像机获取三维物体的二维图像。
(2)摄像机标定:利用摄像机所拍摄到的图像来还原空间中的物体。需要摄像机内参进行求解。
(3)特征提取:特征主要包括特征点、特征线和区域。大多数情况下都是以特征点为匹配基元,特征点以何种形式提取与用何种匹配策略紧密联系。因此在进行特征点的提取时需要先确定用哪种匹配方法。特征点提取算法可以总结为:基于方向导数的方法,基于图像亮度对比关系的方法,基于数学形态学的方法三种。
(4)立体匹配:立体匹配是指根据所提取的特征来建立图像对之间的一种对应关系,也就是将同一物理空间点在两幅不同图像中的成像点进行一一对应起来,同时需要考虑一些影响因素。
(5)三维重建:有了比较精确的匹配结果,结合摄像机标定的内外参数,就可以恢复出三维场景信息。由于三维重建精度受匹配精度,摄像机的内外参数误差等因素的影响,因此首先需要做好前面几个步骤的工作,使得各个环节的精度高,误差小,这样才能设计出一个比较精确的立体视觉系统。
2、使用colmap
1、相关知识
下载
基于MVS的三维重建技术流程包括以下步骤:数据采集,稀疏重建,深度图估计和稠密重建;
稀疏重建主要使用SfM,是一种从一组不同视角下拍摄的无序或有序影像中,同时恢复场景三维结构和相机姿态的技术。。
使用SFM进行稀疏重建。SFM,(Structure From Motion,从运动中恢复结构),是一种从一组不同视角下拍摄的无序或有序影像中恢复场景三维结构和相机姿态的技术。
input: 一组图片
output: 场景粗糙的3D形状(稀疏重建), 还有每张图片对应的相机参数。
增量式SfM选择无序影像进行特征匹配,并进行几何纠正、三角测量恢复稀疏点云结构,通过已有点云重新估计相对姿态,再进行局部和全局的BA优化。之后逐步向已有的结构中增加视角或影像,进行三角测量和姿态估计,再进行BA优化修正结构数据
学习链接
https://blog.csdn.net/weixin_42764932/article/details/118675554
由于我没有Nvidia显卡,只能进行到稀疏重建,所以下载no-cuda压缩包。Nvidia显卡支持cuda进行稠密重建。
按照安装步骤进行安装即可。
2、使用
我这里使用的是tankandtemples的数据集,包含很多物体的各个角度图。
https://hyper.ai/datasets
双击bat弹出使用界面
点击File–>new project,,新建一个文件夹作为数据库,并且选择图片存放的路径。
选择 Processing–>Feature Extraction进行特征提取,默认参数直接点击
点击Processing–>Feature matching进行特征匹配,默认即可,时间较长。
点击reconstruction–>start reconstruction进行SfM建立稀疏点云。
3、稠密点云
使用MVS进行稠密重建。MVS即多视图立体几何,目的是在相机位姿已知的前提下,逐像素的计算图像中每一个像素点对应的三维点,得到场景物体表面密集的三维点云。
输入:多视角图像、相机位姿
输出:稠密点云
4、查看模型
安装meshlab查看三位mesh模型,将稀疏点云导出为ply文件,使用meshlab查看,如图