Procrustes, also called the 3D-3D correspondence problem, finds the camera pose and from 3D-3D point correspondences .

First, note that we only need points to find the transformation. We’ll solve the problem first, then generalize to any .

3 Points

We have correspondences, . Let denote the vector between and , and same for . We first form an orthogonal basis and same for .

Then, observe that an orthonormal basis is only affected by rotation. Thus,

Solve for , then find accordingly.

General Solution

For points, we’ll find

Differentiating the objective with respect to , we find that is the difference between centroids after rotating ,

where centroids and .

Then, subtract the centroids from each point to get

and now our objective is

This can be done with 📎 Singular Value Decomposition, setting , then let