Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

triangulation with know poses #2327

Open
Shine233 opened this issue May 15, 2024 · 2 comments
Open

triangulation with know poses #2327

Shine233 opened this issue May 15, 2024 · 2 comments

Comments

@Shine233
Copy link

Hi

Thanks for the gread work!
Since i already have prior poses with real scale that lack of accuracy in autodriving scene, I prefer to appIy triagulation with those prior poses and then run ba to obatain more accurate extrinsic paramters with real scale.
I have noticed that there are several ways to run with prior known poses, such as using GPS prior in image EXIF, or using openMVG_main_SfMInit_ImageListingFromKnownPoses to load prior poses. However, using the first method, the prior pose only constrian the translation which will cause a random angle error compared with INS (mainly in roll in vehicle coordinate). Besides, i tried to use openMVG_main_SfMInit_ImageListingFromKnownPoses with ETH_3D format which poses are camera2world, if i use openMVG_main_ComputeStructureFromKnownPoses func, the BA process run only 1 iter that is not enough; if i use openMVG_main_SfM INCREMENTAL func, the scale seems to be eliminated.

I would be really appreciate it if you could give some advise on it.
Many thanks

@pmoulon
Copy link
Member

pmoulon commented May 25, 2024

YOu can run openMVG_main_SfMInit_ImageListingFromKnownPoses and then reun SequentialSfM 2 with the mode known poses.

So run main_SfM with INCREMENTALV2 and EXISTING_POSE https://github.com/openMVG/openMVG/blob/develop/src/software/SfM/main_SfM.cpp#L286

@Shine233
Copy link
Author

Shine233 commented Jul 8, 2024

Thanks for your explaination!
As you mentioned above, i have tried your method and other 2 methods, however they all looks bad.
Here is my scene, a city view road with a straight trajectory captured by a vehicle, about 200 meters with 129 images contained.
Next is my experiments:

  1. Initialized with openMVG_main_SfMInit_ImageListingFromKnownPoses and then use SequentialSfM 2 with -S .
  2. The same with exp1, but add -P option in openMVG_main_SfM INCREMENTALV2. I have modifed the main_SfMInit_ImageListing so that sfm_data.json contains prior pose in views as well as extrinsics.
  3. Use normal openMVG_main_SfM INCREMENTAL with -P option to recover the real scale.
  4. Use normal openMVG_main_SfM GLOBAL with -P option to recover the real scale.

However, the evaluation of these 4 expriments have something in common. The errors compared with GT poses is large at the begin and end of the trajectory, and errors decrease at the middle section.
Hence i have several questions,

  1. For a small forward moving scene(less than 500 meters and less than 300 images), which method do u recommoned to fix the above problem?
  2. Does prior poses in views really works if I already use the same prior poses to initialized the sfm_scene with -S EXISTING_POSE in openMVG_main_SfM INCREMENTALV2?
  3. Since the above scene is a straight forward-moving case, the sim3 residuals seem lack of constrains in rotation,will this be a reason to cause bad result?
  4. If for a quit large scene, do u have any suggestion to do sfm? What about to use distributed sfm?

Sorry for the late reply. Hope you can give me some advices.

Many thanks!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants