-
Notifications
You must be signed in to change notification settings - Fork 115
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
Issues with Pose Prior in Glomap #142
Comments
Just create a local variable before changing rotation in function EstimateRotations and InitializeFromMaximumSpanningTree. It is enough.
|
That's a kind of solution, since I need to use pose prior in bundle adjustment, so it may be better to save this value as a member variable in |
In my attempts, it seems that the global positioning step in
Has anyone made similar attempts? |
Hi, development team.
When I attempted to employ pose prior to address the issue detailed in #138 (comment), I discovered that:
For the pose prior utilized in Glomap, there exists a branch
user/joschonb/pose-prior-fix
aimed at resolving certain bugs, yet some issues continue to persist.f5469f57
, which could not be used as a validRigid3d
position.glomap/glomap/io/colmap_converter.cc
Lines 191 to 199 in 3224311
It may be modified like this
image.cam_from_world.translation
can't be used ast_ori
since the functionEstimateRotations
will be called twice.glomap/glomap/estimators/global_rotation_averaging.cc
Lines 59 to 61 in 3224311
Therefore, considering the possibility of continuing to use pose prior in the bundle adjustment process later on, it might be better to add a
PosePrior
member variable within theImage
class. And then,//Restore the prior position (t = -Rc) image.cam_from_world.translation = -(image.cam_from_world.rotation * image.pose_prior.position);
But this would restore the original position every time rotation averaging is performed, or, from the semantic distinction of the process, it would be appropriate to write a separate function called
RestoreOriginPosition
in theGlobalMapper
and call it after rotation averaging.PosePrior
, then should we no longer randomly generate camera positions in the global positioning step based onPosePrior
? I understand that there may be cases where not all images have validPosePrior
. In that case, for images with validPosePrior
, we should not automatically generate positions, while for images without validPosePrior
, we should base the generation on the existing validPosePrior
s.Of course, this can be set by
generate_random_positions = false
. However 3d points can still only be generated randomly, rather than triangulate with the camera position originally set fromPosePrior
. Of course, this can be set bygenerate_random_positions = false
. However, 3D points can still only be generated randomly, rather than being triangulated with the camera position originally set fromPosePrior
.The text was updated successfully, but these errors were encountered: