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

Ubuntu20.04运行openmvg和openmvs实现三维重建(未成功,仅供参考)

一..openmvg

1.进入数据集目录并创建输出目录

cd /home/huang/Data/Mine_Dyn_1
mkdir -p output/matches -p

2. 生成SfM数据文件列表:

openMVG_main_SfMInit_ImageListing -i ./image -o output/matches -f 254266

−f=焦距(像素)×长边像素数

−f=429.6772386499×592−f=429.6772386499×592

进行计算:

−f≈254266.0000000032−f≈254266.0000000032

在实际使用时,四舍五入到最接近的整数,即 254266。

 ./image 表示当前目录下的 image 文件夹

3.计算图像特征点和描述子

计算图像特征点和描述子,生成这样100_7100.desc 100_7100.feat 的文件

openMVG_main_ComputeFeatures -i output/matches/sfm_data.json -o output/matches/

确保 sfm_data.json 文件已在上一步生成。 

4.计算匹配关系

openMVG_main_ComputeMatches -i output/matches/sfm_data.json -o output/matches/matches.txt

5. 生成稀疏点云

openMVG_main_SfM -i output/matches/sfm_data.json -o output/matches/ --match_file output/matches/matches.txt

6.提取矫正后的图像(可选)

openMVG_main_ExportUndistortedImages -i output/matches/sfm_data.json -o output/matches/image

这个命令是可选的,它会提取矫正后的图像,这些图像可以用于后续的稠密重建。 

7.转换成MVS格式

转换成mvs的格式,同时在当前目录下生成undistorted_images文件夹并存储矫正后的图像
openMVG_main_openMVG2openMVS -i output/matches/sfm_data.bin -o output/scene.mvs

这个命令会将OpenMVG的SfM数据转换为OpenMVS可以处理的格式,并在当前目录下生成一个名为undistorted_images的文件夹,存储了矫正后的图像。

 

二..openmvs

1. 切换到OpenMVS目录

cd /home/huang/install/openMVS_build/bin

2.将 undistorted_images 复制到 openMVS_build 目录下

cp /home/huang/Data/Mine_Dyn_1/undistorted_images ../ -r

3.稠密化稀疏点云scene.mvs,生成scene_dense.mvs

./DensifyPointCloud /home/huang/Data/Mine_Dyn_1/output/scene.mvs

4.使用稠密点云scene_dense.mvs,网格重建,生成scene_dense_mesh.mvs

./ReconstructMesh /home/huang/Data/Mine_Dyn_1/output/scene_dense.mvs

5 网格优化,生成scene_dense_mesh_refine.mvs

./RefineMesh /home/huang/Data/Mine_Dyn_1/output/scene_dense_mesh.mvs

6.纹理贴图

./TextureMesh /home/huang/Data/Mine_Dyn_1/output/scene_dense_mesh_refine.mvs

7.显示结果

./Viewer /home/huang/Data/Mine_Dyn_1/output/scene_dense_mesh_refine_texture.mvs

出现了蓝屏(empty)

如果在可视化三维重建结果时遇到蓝屏或显示为空(empty),可能有几个原因导致这种情况:

1. **相机参数不正确**:
如果相机参数(如焦距、主点位置等)不正确,可能导致重建结果出现错误,从而在可视化时出现蓝屏或空场景。

2. **点云数据不足**:
如果点云数据量不足或者点云质量差,可能无法生成有效的三维模型,导致可视化结果为空。

3. **深度图估计失败**:
在深度图估计阶段,如果算法无法正确估计深度信息,可能会导致后续的三维重建失败。

4. **过滤过度**:
在深度图过滤阶段,如果过滤条件设置得太严格,可能会导致大量深度信息丢失,影响后续的点云融合和网格重建。

5. **网格重建算法问题**:
如果网格重建算法出现问题,或者参数设置不当,可能会导致无法生成有效的网格。

6. **纹理映射失败**:
如果纹理映射阶段出现问题,可能会导致可视化结果出现蓝屏或纹理缺失。

7. **软件或硬件兼容性问题**:
可能是由于软件与硬件之间的兼容性问题,导致可视化结果不正确。

8. **CUDA或GPU问题**:
如果CUDA配置不正确或GPU驱动程序存在问题,可能会影响OpenMVS的性能和结果。

9. **内存不足**:
如果系统内存不足,可能导致三维重建过程中的某些步骤失败。

10. **输出文件损坏**:
输出文件(如PLY或OBJ文件)可能在保存或传输过程中损坏,导致无法正确加载和可视化。

要解决这个问题,你可以尝试以下步骤:

- **检查相机参数**:确保相机参数正确无误。
- **检查点云数据**:查看点云数据是否足够且质量良好。
- **调整过滤参数**:适当调整深度图过滤参数,避免过度过滤。
- **检查网格重建参数**:检查网格重建算法的参数设置是否合理。
- **更新软件和驱动**:确保OpenMVS和CUDA驱动程序是最新版本。
- **检查硬件资源**:确保系统有足够的内存和GPU资源。
- **验证输出文件**:检查输出文件是否完整且未损坏。

检查了一下, 打开scene.mvs就有问题,后面还得改错...

http://www.dtcms.com/a/274683.html

相关文章:

  • PyTorch笔记5----------Autograd、nn库
  • 《棒球规则介绍》领队和主教练谁说了算·棒球1号位
  • sqli-labs靶场通关笔记:第1-4关 联合注入
  • ros topic和service的使用
  • 深入浅出Redis:一文掌握Redis底层数据结构与实现原理
  • Java Stream流介绍及使用指南
  • GIC控制器 (三)
  • 猿人学js逆向比赛第一届第十八题
  • 【一起来学AI大模型】微调技术:LoRA(Low-Rank Adaptation) 的实战应用
  • Linux kernel regcache_cache_only()函数详解
  • pytest中mark的使用
  • SpringCloud之Feign
  • 深入探讨大模型的记忆机制及其前沿技术
  • 数据结构与算法——从递归入手一维动态规划【2】
  • 极端高温下的智慧出行:危险检测与救援
  • AI介入电商内容生产,会颠覆品牌运营吗?
  • 打破内网壁垒,轻松实现安防视频的云端汇聚与P2P超低延迟播放
  • 史上最详细Java并发多线程(面试必备,一篇足矣)
  • 进制转换小题
  • 5 大人工智能知识管理工具
  • 冒泡排序和快速排序
  • 云成本优化完整指南:从理论到实践的全方位解决方案
  • 聚焦数据资源建设与应用,浙江省质科院赴景联文科技调研交流
  • Python 异常处理机制详解:try-except 捕获异常
  • 奇哥面试:RabbitMQ工作模式深度剖析与Spring整合MQ
  • C++ auto与 for循环
  • 2022 年 12 月青少年软编等考 C 语言七级真题解析
  • Linux驱动(input子系统)
  • 使用Python将目录中的JPG图片按后缀数字从小到大顺序纵向拼接,很适合老师发的零散图片拼接一个图片
  • 垂直和领域 Agent 的护城河:上下文工程