GLOMAP: 全局结构运动重访
项目页面 | 论文
关于
GLOMAP是一个用于基于图像重建的通用全局结构运动管线。GLOMAP需要COLMAP数据库作为输入,并输出COLMAP稀疏重建结果。与COLMAP相比,该项目提供了更高效且可扩展的重建过程,通常快1-2个数量级,同时重建质量不相上下或更优。
如果您在研究中使用了本项目,请引用
@inproceedings{pan2024glomap,
author={Pan, Linfei and Barath, Daniel and Pollefeys, Marc and Sch\"{o}nberger, Johannes Lutz},
title={{Global Structure-from-Motion Revisited}},
booktitle={European Conference on Computer Vision (ECCV)},
year={2024},
}
开始使用
要构建GLOMAP,首先安装COLMAP依赖,然后使用以下命令构建GLOMAP:
mkdir build
cd build
cmake .. -GNinja
ninja && ninja install
预编译的Windows二进制文件可以从官方发布页面下载。
安装后,可以通过以下方式运行GLOMAP(从数据库开始):
glomap mapper --database_path 数据库路径 --output_path 输出路径 --image_path 图像路径
有关命令行界面的更多详细信息,可以输入glomap -h
或glomap mapper -h
获取帮助。
我们还提供了一份改进重建结果的指南,可以在这里找到。
注意:
- GLOMAP依赖于两个外部库 - COLMAP和PoseLib。
默认设置下,这些库会通过
FetchContent
自动构建。 但如果更喜欢使用自行安装的版本,也可以禁用FETCH_COLMAP
和FETCH_POSELIB
CMake选项。 - 要使用
FetchContent
,cmake
的最低要求版本是3.28。如果使用自行安装的版本,cmake
可以降级到3.10。 - 如果您的系统没有提供足够新的CMake版本,可以按如下方式安装:
wget https://github.com/Kitware/CMake/releases/download/v3.30.1/cmake-3.30.1.tar.gz tar xfvz cmake-3.30.1.tar.gz && cd cmake-3.30.1 ./bootstrap && make -j$(nproc) && sudo make install
端到端示例
在本节中,我们将使用此链接中的数据集作为示例。
下载数据集并将它们放在data
文件夹下。
从数据库开始
如果已经存在COLMAP数据库,GLOMAP可以直接使用它进行映射:
glomap mapper \
--database_path ./data/gerrard-hall/database.db \
--image_path ./data/gerrard-hall/images \
--output_path ./output/gerrard-hall/sparse
从图像开始
要从图像获得重建结果,首先需要建立数据库。这里我们使用COLMAP的功能:
colmap feature_extractor \
--image_path ./data/south-building/images \
--database_path ./data/south-building/database.db
colmap exhaustive_matcher \
--database_path ./data/south-building/database.db
glomap mapper \
--database_path ./data/south-building/database.db \
--image_path ./data/south-building/images \
--output_path ./output/south-building/sparse
可视化和使用结果
结果以COLMAP稀疏重建格式输出。请参考COLMAP了解更多详情。
重建结果可以使用COLMAP GUI进行可视化,例如:
colmap gui --import_path ./output/south-building/sparse/0
其他选择如rerun.io也可以可视化COLMAP和GLOMAP的输出。
如果您想以编程方式检查重建结果,可以在Python中使用pycolmap
或链接到COLMAP的C++库接口。
注意事项
- 对于大规模数据集,建议使用
COLMAP
的sequential_matcher
或vocab_tree_matcher
。
colmap sequential_matcher --database_path 数据库路径
colmap vocab_tree_matcher --database_path 数据库路径 --VocabTreeMatching.vocab_tree_path 词汇树路径
- 另外,也可以使用hloc进行图像检索和基于学习的描述符匹配。
致谢
我们深受COLMAP、PoseLib和Theia的启发。如果在您的工作中使用GLOMAP,请考虑同时引用它们。
支持
请使用GitHub讨论区https://github.com/colmap/glomap/discussions提问,使用GitHub问题追踪器https://github.com/colmap/glomap报告错误、功能请求/添加等。
贡献
欢迎贡献(错误报告、错误修复、改进等)。请以新问题和/或GitHub上的拉取请求的形式提交。
许可证
版权所有 (c) 2024, 苏黎世联邦理工学院。
保留所有权利。
在满足以下条件的情况下,允许以源代码和二进制形式重新分发和使用,无论是否修改:
* 源代码的重新分发必须保留上述版权声明、本条件列表和以下免责声明。
* 以二进制形式重新分发必须在随分发提供的文档和/或其他材料中复制上述版权声明、本条件列表和以下免责声明。
* 未经特定事先书面许可,不得使用苏黎世联邦理工学院或其贡献者的名称来认可或推广衍生自本软件的产品。
本软件由版权所有者和贡献者"按原样"提供,不作任何明示或暗示的保证,包括但不限于对适销性和特定用途适用性的暗示保证。在任何情况下,版权所有者或贡献者均不对任何直接、间接、偶然、特殊、示例性或后果性损害(包括但不限于采购替代商品或服务;使用、数据或利润损失;或业务中断)承担责任,无论是基于合同、严格责任还是侵权行为(包括疏忽或其他),即使已被告知可能发生此类损害的可能性。