Perspective--point estimates camera pose from correspondences; formally, given correspondences from world points to calibrated camera points , we can find the rotation and translation of the camera.

First, we have that each point satisfies the equation

points gives us equations and unknowns, so we need points. Below, we solve the problem with (P3P). For more points, we can directly optimize the equation above.

Info

Note that if we have two points, our camera can lie anywhere on a circle in 2D or a toroid in 3D.

P3P

Weโ€™re given the location of three points ( in the diagram) and the rays going out from the camera.

Info

The variables below will be different from the diagram. Distance to point is . Distance between points and is . Angle between points and is . Weโ€™ll also now use subscript to denote the th point, maintaining uppercase letters as world variables and lowercase letters as camera variables.

First, weโ€™ll solve for all . This is the depth of the point using camera coordinates; in other words, the point can be found at . However, another way to find this point is by measuring the distance directly, then going along the unit direction; this equation for the point is . Thus, we have

We find can using trigonometry. Since we have the world coordinates of the points, we can compute

We can also find the angles between the rays with

Then, we can relate these variables together with

We have three equations of this form, which we can solve by setting . Then, we have the system

Eliminating via and rearranging, we get the following.

This gives us a quartic in , so there are possible solutions for and therefore .

We can now find the points in camera coordinates using the calibrated coordinates and . We now want to find and from correspondences ; our solution thus ends with the solution to the โšฐ๏ธ Procrustes.