【环境搭建】使用openSfM+MVSNet重建稠密点云
YuhsiHu 2024-09-12 16:01:01 阅读 81
本帖详细介绍了如何使用openSfM+MVSNet对真实采集的数据进行稀疏重建与稠密重建,并针对一些真实场景下可能遇到的问题进行了整理。
目录
1. 背景
2. 数据采集
3. 使用openSfM进行稀疏重建
3.1 输入文件
3.2 稀疏重建
4. 使用MVSNet进行稠密重建
5. Q&A:为什么我的重建效果不好?
1. 背景
随着近年来深度学习在3D视觉中的应用,传统的三维重建软件如colmap、openSfM、openMVS,都无时无刻不面临着新兴算法的挑战。传统算法虽然在应对不同数据集时的可靠性有一定保障,但在弱纹理区域、重复纹理区域一直表现不佳,同时,大规模场景重建的时间开销也逐渐被人所不容忍(尤其在深度学习的方法被引入之后)。因此,一个靠谱的pipeline是先使用传统算法进行稀疏重建,对所输入的图像进行位姿估计,然后将结果交给基于深度学习的算法,比如MVSNet系列,来进行深度图估计和稠密重建。
在此,我们不对重建算法本身进行介绍,只教大家如何一步一步跑通这个pipeline。
2. 数据采集
数据采集方面,我们只需要使用相机、手机、无人机,甚至遥感卫星,对想要重建的物体拍照就可以了。注意以下方面,有助于提升最终的重建质量:
拍摄的照片尽可能清晰。
照片与照片重叠的区域要大一些,如果场景很大,就尽可能多拍。
如果设备是无人机之类的,可以获取相机参数,这对于稀疏重建很重要,省去了算法重新估算的麻烦。
3. 使用openSfM进行稀疏重建
环境搭建方面,硬件上无特殊要求,软件上可以参考openSfM的官方文档。
3.1 输入文件
交给openSfM的时候,image is all you need,把所有拍摄的一个场景的图片都放到一个images的文件夹里,就可以开始重建了。为了对后续稠密重建更友好,建议先对照片文件重新命名,因为openSfM会给文件直接加后缀jpg,也就是说如果你的图片是JPG,稀疏重建的记录会把文件名记录成JPG.jpg,所以不如我们先自己改好名字。
<code>import os
def rename_files_to_jpg(folder_path):
# Loop through all files in the folder
for filename in os.listdir(folder_path):
# Split the filename and extension
name, ext = os.path.splitext(filename)
# Remove any periods from the name
name = name.replace('.', '')
# Form the
声明
本文内容仅代表作者观点,或转载于其他网站,本站不以此文作为商业用途
如有涉及侵权,请联系本站进行删除
转载本站原创文章,请注明来源及作者。