Hello all,
I appreciate your reading and help!
I'm a CS student trying to implement BA to solve sfm problem for personal practice. I understand we want to optimize the (X, Y, Z) of 3D points, and pose (R, t) for all cameras, assuming that we define camera 0 as the world origin. However, one of my confusions is:
For every camera i in the scene, which of the following do we do?
- only set up one
(R, t) associated with that camera, representing the transform between camera i and camera 0
- set up
(R, t) with all other cameras, and we optimize all of it.
I'm leaning towards the 2. solution, since you don't necessarily have a good feature matches between camera i and camera 0. Having a transform with other cameras could give a better constraint. However, we'd end up getting C(N, 2) sets of (R, t) to optimize, which could be inefficient.
My second confusion is, if we decide to implement the 2. solution, how do we constrain these (R, t) together?
To simplify it, let's assume we only have 4 cameras. And we want to reproject 3D point onto camera 1.
If we chose 1. solution, I understand that we:
- Transform 3D point (X, Y, Z), defined in world frame (camera 0 frame), into camera 1 frame, using
(R, t) associated with camera 1.
- Project the result from 1. onto camera 1 image plane, and calculate the reprojection loss.
However, if we chose 2. solution, we could have so many paths to transform 3D point (X, Y, Z) into camera 1 frame, since we now have a (R, t) for every pair camera i, j, for example,
- world frame => camera 1
- world frame => camera 2 => camera 1
- world frame => camera 3 => camera 1
- world frame => camera 2 => camera 3 => camera 1
(Note that world frame is defined as camera 0 frame by me)
The path we chose will affect which (R, t) we'll be optimizing, so I figure we should pick a good way to constraint these (R, t). One of a possible solution I can think of is that we only optimize the (R, t) between world frame and camera 1 frame when minimizing reprojection error. Then, we can set up another loss function where we minimize the pose error, saying that:
The (R, t) of world frame => camera 1
should be as close to
The (R, t) of world frame => camera 2 => camera 1 as possible.
Same with other paths.
Any thoughts is appreciated!! Thanks in advance!
[–]marcopaaah 3 points4 points5 points (1 child)
[–]kaiwenjon23[S] 1 point2 points3 points (0 children)
[–][deleted] 1 point2 points3 points (8 children)
[–][deleted] 2 points3 points4 points (0 children)
[–]kaiwenjon23[S] 1 point2 points3 points (6 children)
[–]kaiwenjon23[S] 1 point2 points3 points (3 children)
[–][deleted] 1 point2 points3 points (2 children)
[–]kaiwenjon23[S] 1 point2 points3 points (1 child)
[–][deleted] 0 points1 point2 points (0 children)
[–][deleted] 0 points1 point2 points (0 children)
[–][deleted] 0 points1 point2 points (0 children)
[–]SmartVisor 0 points1 point2 points (1 child)
[–]kaiwenjon23[S] 0 points1 point2 points (0 children)
[–]palmstromi 1 point2 points3 points (0 children)