增量式多视图结构重建(Structure From Motion)—— 一个用Python的简单实现
本项目实现了一个简单的增量式多视图结构重建系统(SfM),主要目标是从一组二维图像中重建三维结构。该实现使用了多个库,包括 OpenCV、NumPy、Matplotlib、Joblib、tqdm、NetworkX 和用于BA优化的 SciPy。
本项目旨在提供一个3D立体视觉的经典范例,希望有助于正在学习这部分知识的同学可以深入细节,更好地理解其中的原理。欢迎任何形式的建议以及代码贡献!
提供对于OpenCV部分关键函数的纯Python实现,以供原理展示。
要安装所需的库:
pip install opencv-python numpy matplotlib joblib tqdm networkx scipy该仓库包含一个 ImageDataset_SceauxCastle 数据集的子模块,这是运行示例代码所必需的。在克隆仓库时,请确保也克隆子模块。
要克隆包含子模块的仓库,请使用以下命令:
git clone --recurse-submodules git@github.com:hammershock/SFM_Python.git或者,如果您已经克隆了不包含子模块的仓库,可以使用以下命令初始化并更新子模块:
git submodule update --init --recursivepython main.py --image_dir <图像目录路径> --calibration_file <校准文件路径> [--min_matches <最小匹配对数>] [--use_ba] [--ba_tol <束调整容差>] [--verbose <输出详细级别>]python main.py --image_dir ./ImageDataset_SceauxCastle/images --calibration_file ./ImageDataset_SceauxCastle/images/K.txt --min_matches 80python app.py