当前位置: 首页 > news >正文

【环境搭建】使用openSfM+MVSNet重建稠密点云

本帖详细介绍了如何使用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,所以不如我们先自己改好名字。

import osdef rename_files_to_jpg(folder_path):# Loop through all files in the folderfor filename in os.listdir(folder_path):# Split the filename and extensionname, ext = os.path.splitext(filename)# Remove any periods from the namename = name.replace('.', 

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 数据结构初阶-单链表
  • Mysql随记
  • 阿里云OSS对象存储的项目实战操作
  • uniapp中给data中的变量赋值报错
  • matlab仿真 模拟调制(下)
  • 总结——TI_音频信号分析仪
  • Golang | Leetcode Golang题解之第260题只出现一次的数字III
  • Llama 3.1要来啦?!测试性能战胜GPT-4o
  • Docker+consul容器服务的更新与发现
  • Ubuntu 22.04安装Visual Studio Code(VS Code)配置C++,Python
  • 【故障排除】Unity在编辑器模式下Play时闪退
  • C++STL详解(一)——string类的接口详解(下)
  • 北醒单点激光雷达更改id和波特率以及Ubuntu20.04下CAN驱动
  • SQL中的函数
  • [k8s源码]7.indexer
  • 【跃迁之路】【733天】程序员高效学习方法论探索系列(实验阶段490-2019.2.23)...
  • CSS 三角实现
  • Docker下部署自己的LNMP工作环境
  • dva中组件的懒加载
  • JDK 6和JDK 7中的substring()方法
  • leetcode378. Kth Smallest Element in a Sorted Matrix
  • node 版本过低
  • php中curl和soap方式请求服务超时问题
  • REST架构的思考
  • select2 取值 遍历 设置默认值
  • TCP拥塞控制
  • Vue 重置组件到初始状态
  • Webpack入门之遇到的那些坑,系列示例Demo
  • Yeoman_Bower_Grunt
  • 阿里中间件开源组件:Sentinel 0.2.0正式发布
  • 短视频宝贝=慢?阿里巴巴工程师这样秒开短视频
  • 对话 CTO〡听神策数据 CTO 曹犟描绘数据分析行业的无限可能
  • 观察者模式实现非直接耦合
  • 如何用Ubuntu和Xen来设置Kubernetes?
  • 删除表内多余的重复数据
  • 使用Maven插件构建SpringBoot项目,生成Docker镜像push到DockerHub上
  • 阿里云服务器如何修改远程端口?
  • ​​​【收录 Hello 算法】10.4 哈希优化策略
  • ​Linux·i2c驱动架构​
  • ​一文看懂数据清洗:缺失值、异常值和重复值的处理
  • # Maven错误Error executing Maven
  • ###C语言程序设计-----C语言学习(6)#
  • (2)nginx 安装、启停
  • (27)4.8 习题课
  • (Arcgis)Python编程批量将HDF5文件转换为TIFF格式并应用地理转换和投影信息
  • (八)五种元启发算法(DBO、LO、SWO、COA、LSO、KOA、GRO)求解无人机路径规划MATLAB
  • (欧拉)openEuler系统添加网卡文件配置流程、(欧拉)openEuler系统手动配置ipv6地址流程、(欧拉)openEuler系统网络管理说明
  • (区间dp) (经典例题) 石子合并
  • (十五)devops持续集成开发——jenkins流水线构建策略配置及触发器的使用
  • (四)汇编语言——简单程序
  • (四)进入MySQL 【事务】
  • (限时免费)震惊!流落人间的haproxy宝典被找到了!一切玄妙尽在此处!
  • (转)如何上传第三方jar包至Maven私服让maven项目可以使用第三方jar包
  • *算法训练(leetcode)第四十五天 | 101. 孤岛的总面积、102. 沉没孤岛、103. 水流问题、104. 建造最大岛屿
  • .bat批处理(五):遍历指定目录下资源文件并更新