Colmap论文之一:Pixelwise View Selection for Unstructured Multi-View Stereo

标题:Pixelwise View Selection for Unstructured Multi-View Stereo

作者:

  • Johannes L. Schönberger(ETH Zürich)
  • Enliang Zheng(UNC Chapel Hill)
  • Marc Pollefeys(ETH Zürich 和 Microsoft)
  • Jan-Michael Frahm(UNC Chapel Hill)

摘要:

这项工作介绍了一个针对非结构化图像集合的Multi-View Stereo (MVS) 系统,主要用于鲁棒和高效的密集建模。这个系统的核心贡献包括:

  • 深度和法线信息的联合估计
  • 使用光度和几何先验进行像素级视图选择
  • 同时进行细化和基于图像的深度与法线融合的多视角几何一致性项 经过大规模的互联网照片集合实验,表明这种方法在准确性、完整性和效率方面均达到了业界领先的水平。

1. 引言:

大规模的3D重建从互联网照片中已经经历了巨大的进化。虽然这种技术在稀疏建模(使用Structure-from-Motion, SfM)和密集建模(使用Multi-View Stereo, MVS)中都有所应用,但密集场景的表示在许多应用中是至关重要的,如图像分类、图像基渲染、定位等。尽管MVS被广泛应用,但要在非受控的环境中估计精确、完整和美观的密集模型仍然是一个挑战。密集的像素级对应关系搜索是立体声方法的核心问题,而在已知的视图几何和光照的控制环境中,恢复正确的对应关系也是一个挑战。在非受控的环境中,尤其是当输入来源于众包图片时,这个任务变得尤为关键。

为了解决这些挑战,提出了一个新的方法,利用了Zheng等人的提议,核心贡献

<think>我们正在处理一个特定的错误:`ERROR:root:Mapper failed with code -1073741819. Exiting.` 这个错误发生在运行COLMAP的mapper阶段,退出代码为-1073741819(十六进制为0xC0000005),这通常表示一个访问冲突(Access Violation),即在程序中发生了非法内存访问。 根据引用内容,我们注意到: 引用[2]中提到了一个命令:`colmap ... image_undistorter ...`,但它不是直接导致这个错误的命令。我们的错误发生在mapper阶段(由错误信息中的`Mapper failed`可知)。 可能的原因和解决方法: 1. **内存问题**:访问冲突可能是由于内存不足或内存错误引起。可以尝试: - 关闭其他占用内存的程序。 - 如果数据集很大,尝试使用更小的数据集或降低图像分辨率。 - 确保计算机有足够的物理内存(RAM)。 2. **图像问题**:某些图像可能存在问题(例如,损坏的图像文件)。可以尝试: - 移除部分图像,特别是那些可能损坏的图像。 - 检查图像格式,COLMAP支持常见的格式(如jpg, png等),但某些特殊格式可能不支持。 3. **路径问题**:路径中包含空格或特殊字符可能导致问题。确保图像路径和输出路径都是简单的英文路径,且不包含空格或特殊字符。 4. **显卡驱动问题**:如果COLMAP使用了GPU,那么可能是显卡驱动问题。尝试更新显卡驱动,或者使用纯CPU模式运行(通过设置`--Mapper.use_gpu 0`)。 5. **参数问题**:某些参数设置可能导致问题。可以尝试重置为默认参数,或者调整一些关键参数: - 减少特征提取的数量(例如,`--SiftExtraction.max_image_size`降低图像大小,`--SiftExtraction.max_num_features`减少每张图像提取的特征点数)。 - 在mapper阶段,可以尝试减少`--Mapper.init_min_num_inliers`(初始匹配的内点数最小值)或`--Mapper.abs_pose_min_num_inliers`(绝对位姿估计的最小内点数)等参数。 6. **已知Bug**:在某些版本的COLMAP中可能存在已知的Bug。可以尝试升级到最新版本,或者回退到一个稳定的版本。 7. **调试信息**:为了获取更多信息,可以尝试运行COLMAP的详细模式(添加`--verbose`参数),这样可能会输出更多错误信息。 8. **参考其他资源**:引用[4]中提到了一种解决链接错误的方法(去掉了armv7s架构),但这似乎是iOS/Mac开发中的问题,可能与当前问题无关。引用[3]是关于一个无法识别场景类型的问题,也不直接相关。 根据引用[2],我们还可以注意到在图像去畸变的步骤中使用了`image_undistorter`,但当前错误发生在mapper阶段,因此我们应该关注mapper阶段的命令。 操作步骤建议: 步骤1:确保COLMAP安装正确,并且是最新版本。 步骤2:尝试在一个小型数据集上运行,看是否能够成功。 步骤3:检查图像路径,确保所有图像都是可读的。 步骤4:在运行mapper时,添加`--verbose`参数,并查看详细的错误信息。 步骤5:尝试使用CPU模式运行(如果之前使用了GPU): ```bash colmap mapper --database_path $DATABASE_PATH --image_path $IMAGE_PATH --output_path $OUTPUT_PATH --Mapper.use_gpu 0 ``` 步骤6:调整参数,例如: ```bash colmap mapper --database_path $DATABASE_PATH --image_path $IMAGE_PATH --output_path $OUTPUT_PATH --Mapper.init_min_num_inliers 100 ``` 如果上述方法都无效,可能需要查看COLMAP的issue跟踪系统(如GitHub)是否有类似的问题和解决方案。 由于这个错误可能是由多种原因引起的,因此需要逐一排除。 生成相关问题: 1. 如何调整COLMAP的mapper参数以提高重建成功率? 2. 在COLMAP中如何切换CPU/GPU模式? 3. 如何解读COLMAP的错误代码? 4. 如何收集COLMAP的详细日志以便调试? 5. 在三维重建中,图像预处理有哪些注意事项? </think>针对COLMAP提示`ERROR:root:Mapper failed with code -1073741819. Exiting.`错误,该错误通常由内存访问冲突引起(十六进制代码0xC0000005)。以下是系统化的解决方案: ### 一、核心解决方案 1. **内存访问修复** - 检查图像路径是否含特殊字符(如空格、中文),建议使用纯英文路径 - 确认图像文件完整性:`for %i in (*.jpg) do echo %i & jpegtran -outfile temp.jpg "%i"`(Windows) - 降低内存负载参数: ```bash colmap mapper \ --Mapper.ba_global_max_num_iterations 50 \ # 减少BA迭代次数 --Mapper.abs_pose_min_num_inliers 20 \ # 降低内点阈值 --Mapper.min_num_matches 8 # 减少最小匹配数 ``` 2. **GPU驱动兼容性修复**(常见于Windows) - 更新显卡驱动至最新版本 - 强制使用CPU模式:添加参数`--Mapper.use_gpu 0` - 验证CUDA兼容性:`colmap gui` > Tools > Database management > 查看GPU状态 3. **关键参数调整** ```bash colmap automatic_reconstructor \ --image_path $INPUT_PATH \ --workspace_path $OUTPUT_PATH \ --camera_model SIMPLE_PINHOLE \ # 简化相机模型 --patch_match_stereo_max_image_size 1200 # 限制处理分辨率 ``` ### 二、进阶调试方法 1. **日志分析** 添加`--verbose 3`参数获取详细日志,检查崩溃前的最后操作: ```bash colmap mapper --database_path database.db --image_path images/ --output_path sparse/ --verbose 3 ``` 2. **增量测试** 分阶段执行重建流程: ```python # 示例:Python分步调用 os.system("colmap feature_extractor ...") os.system("colmap exhaustive_matcher ...") os.system("colmap mapper ...") # 单独定位崩溃阶段 ``` 3. **版本降级** 尝试兼容性更好的旧版本(如3.6),通过源码编译切换: ```bash git checkout 3.6 mkdir build && cd build cmake .. -DCMAKE_CUDA_ARCHITECTURES="80" # 指定GPU架构 make -j8 ``` ### 三、预防措施 1. **图像预处理** - 统一图像格式为.jpg - 分辨率限制在2000px以内:`mogrify -resize 2000x2000 images/*.jpg` - 删除EXIF信息:`exiftool -all= images/` 2. **硬件优化** ```mermaid graph LR A[内存不足] --> B[增加虚拟内存] B --> C[Win:系统属性>高级>性能设置] C --> D[Linux:sudo fallocate -l 16G /swapfile] ``` > **提示**:该错误在Windows出现概率高于Linux,建议关键项目在Ubuntu环境运行[^2]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值