mapillary / OpenSfM

Open source Structure-from-Motion pipeline
https://www.opensfm.org/
BSD 2-Clause "Simplified" License
3.37k stars 856 forks source link

Wanting to know Reconstruction Pipeline of OpenSfm #852

Open Mukulareddy opened 2 years ago

Mukulareddy commented 2 years ago

Hi It would be better if there is detailed reconstruction pipeline end-to-end for OpenSfm. I couldn't find it in the documentation too. Also if you could differentiate reconstruction pipelines for COLMAP v/s OpenSfm, it could be of great help for my work as well as understanding.

Thanks in advance.

fabianschenk commented 2 years ago

Hi @Mukulareddy , Thanks for your comment. What do mean with "if there is detailed reconstruction pipeline"? Are you talking about a better documentation?

The steps you need for reconstruction can be run with this shell script and you can find at least a high-level description of the incremental reconstruction here.

Note that this is an open source project and you can also help improve the documentation (see doc folder).

Best, Fabian

Mukulareddy commented 2 years ago

Hi @fabianschenk , Thanks for the reply. I meant a detailed flow chart kind of pipeline(something similar to the following). As per my understanding, the reconstruction pipeline of Opensfm is almost the same as COLMAP. Please correct me if i am wrong. I am just curious to know the major differences in the pipelines of Opensfm v/s COLMAP.

image

Thanks, mukula

fabianschenk commented 2 years ago

Hi @Mukulareddy , The idea of how to perform SfM is quite old and once you start digging a bit more into the literature, you'll see that nearly all SfM pipelines work the same way. You can also read a bit more in the book Multiple View Geometry in Computer Vision by Hartley and Zissermann, where there's a section called "Reconstruction from sequences".

Most of the differences in the SfM pipelines are in details, e.g. how the initial pairs are found, threshold settings, minor optimization tricks, ... Saying what is better is really difficult since there are not many datasets with GT, the results highly depend on the input data and the thresholds. If you want to find out more about the differences, I'd suggest to run experiments with both pipelines on your dataset. You can also try to vary the thresholds and then you can figure out what works better for you.

You can also look for publications, where they benchmark multiple SfM pipelines and then pick one.

Good luck :D