Assume that I have a picture of multiple objects (lets say more than 6). The world coordinate of these objects are known. The intrinsic parameters of the camera are also known. How can I find the position and the pose of the camera?

I know some of you will give me an answer like "For each object with image coordinate x and world coordinate X, we can form a equation. Then with multiple objects, we have multiple equations. Solve these equation and get the position of camera. Done." But this is not the answer I want. I want it to be more detailed.

I know that for each object we can form an equation:

lamda * x=P * X=K * [R t] * X

where K is the camera intrinsic matrix, R is the rotation matrix, t is the rotation vector, t=-R*C where C is the camera position.

The equation above can be transformed in to a homogeneous linear system of equation using Direct Linear Transformation. Depending of the specific type of Direct Linear Transformation, this homogeneous linear system of equations will contain lamda or not. Then with multiple objects, we can form a system with enough equations to find a non-trivial solution using the Singular Value Decomposition method.

The problem is that the solution (i.e. the camera matrix K*[R t]) can only be found up to scale (since if v is the solution then s*v is also a solution with whatever scalar s). Thus, we can only find (multiple) camera matrix that have the same projection, but the camera pose and position corresponding to these camera matrix are different (i.e. the exact position and pose of camera cannot be found by this method)

  • $\begingroup$ This feels like a dupe but I'm not sure of what. (Sorry -- I skip quickly past computer vision questions because I know nothing about it.) $\endgroup$ – David Richerby Sep 29 '16 at 9:14
  • 1
    $\begingroup$ Check out *Computer Vision: Algorithms and Applications" by Szeliski. The answer is in there. I knew how to do this at one point, but I've completely forgotten the method $\endgroup$ – gardenhead Sep 29 '16 at 14:09

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Browse other questions tagged or ask your own question.