Openmvg: GlobalSFM vs SequentialSFM

Created on 23 Aug 2017  ·  6Comments  ·  Source: openMVG/openMVG

@pmoulon

I just saw your post in 4k Reconstruction (#995)

"For a fast test can you check if it's working with the Incremental/Sequential pipeline?

GlobalSfM is not robust yet to all the configuration..."

Can you briefly touch on the differences between the two pipelines? I started out using the sequential pipeline, but have since moved to the global pipeline and tweaked the python script to include a few steps for GPS exif and my next step will be to include the GCP process.

I assume you were you referring to the differences between openMVG_main_GlobalSfM and openMVG_main_IncrementalSfM. Can you explain what is not "robust yet to all the configuration" you mean exactly. What are the drawbacks to using Global vs Incremental at this time?

Most helpful comment

Perhaps I will need to add a FAQ section to the online doc regarding this section.

The main difference is the way that the graph are handled by the following points:

  • Sequential SfM just takes the largest component and does not filter it, so an image connected by only one edge can be linked to the reconstruction during the process.
  • Global SfM takes the largest BiEdge component (graph that support loops constraints). So images connected to only one edge to the graph are removed.

    • In order to improve the robustness of the translation stage, relative translation are computed for image triplets. So if some image are not belonging to image triplet they will be rejected.

Regarding robustness,

It is still known that global SfM is not robust as Incremental SfM. I mean that sometimes Global SfM fails since there is too much outlier relative motion for the motion averaging stages, or simply the data are too noisy to be solved correctly. It's especially true for rotation averaging.
See "K. Wilson, D. Bindel, and N. Snavely, “When is Rotations Averaging Hard?,” in Proceedings of ECCV 2016, 2016."
Then since the relative translations stage and translation averaging depends on the global rotations accuracy, this last stage can fails if the first fails (rotation averaging).

  • In your case since your have GPS data the BA (Bundle Adjustment) will really be helped by the position constraints in order to converge to the right solution, even if the sooner stage made some errors.

All 6 comments

Perhaps I will need to add a FAQ section to the online doc regarding this section.

The main difference is the way that the graph are handled by the following points:

  • Sequential SfM just takes the largest component and does not filter it, so an image connected by only one edge can be linked to the reconstruction during the process.
  • Global SfM takes the largest BiEdge component (graph that support loops constraints). So images connected to only one edge to the graph are removed.

    • In order to improve the robustness of the translation stage, relative translation are computed for image triplets. So if some image are not belonging to image triplet they will be rejected.

Regarding robustness,

It is still known that global SfM is not robust as Incremental SfM. I mean that sometimes Global SfM fails since there is too much outlier relative motion for the motion averaging stages, or simply the data are too noisy to be solved correctly. It's especially true for rotation averaging.
See "K. Wilson, D. Bindel, and N. Snavely, “When is Rotations Averaging Hard?,” in Proceedings of ECCV 2016, 2016."
Then since the relative translations stage and translation averaging depends on the global rotations accuracy, this last stage can fails if the first fails (rotation averaging).

  • In your case since your have GPS data the BA (Bundle Adjustment) will really be helped by the position constraints in order to converge to the right solution, even if the sooner stage made some errors.

@rttgnck Any feedback?

@pmoulon I emailed you directly about something else. As for feedback? An
FAQ section on the docs page would be good. I have not dove into the
programs code yet, mostly just editing the python pipelines. So at this
time I can only read what you've said and keep it in mind. I was going to
close this yesterday but forgot.

  • [ ] Write a FAQ about this topic for the community about this topic.

Hi @pmoulon .

You talk about "to the online doc regarding this section". Could you tell me which document you are referring to? I would like to look at technical and mathematical details of the Incremental SFM, the paper I am looking at is: "Adaptive Structure from Motion with a contrary model estimation by Pierre Moulon, Pascal Monasse and Renaud Marlet, is there any other more current paper with details about the incremental sfm ?

Thank you very much as always for your great help.

@Livan89 I was referring to this documentation:
https://github.com/openMVG/openMVG/blob/master/docs/sphinx/rst/openMVG/sfm/sfm.rst#sequential-sfm

The paper provides more details than the doc page.

Was this page helpful?
0 / 5 - 0 ratings

Related issues

glbsalazar picture glbsalazar  ·  7Comments

itsdsk picture itsdsk  ·  6Comments

autosquid picture autosquid  ·  4Comments

roby23 picture roby23  ·  3Comments

tw0023 picture tw0023  ·  5Comments