Can you determine what type of geometric transformation a 4x4 matrix represents?

313 Views Asked by At

Given a general 4x4 matrix for transforming 3D homogenous coordinates, is it possible to determine from the elements what type of transform is represents?

Rigid transform Similarity transform Affine transform Homography Or something else?

1

There are 1 best solutions below

0
On

We have a hierarchy of transformations with different invariants

  • projective (collinearity preserving transformation, not a contraction)
  • affine (+parallelism)
  • similarity (+angles)
  • rigid (+scale)

It is important to note that each such type encompasses the ones listed below it. Eg. every similarity is also an affinity but not the other way around. So to determine which is the most specific 'type' you start at the top and work your way down checking if the invariants are preserved by your specific transformation matrix.

Assuming that the last (fourth) is the homogeneous coordinate (ie. xyz is represented as $(x,y,z,1)^\top$ then ANY general matrix (i.e. non-zero determinant) $\mathbf{H}\in\mathbb{R}^4$ represents a projective transformation. I would then go about it as follows:

  1. Check the last row of the matrix. If it is $(0,0,0,1)$ (or a multiple thereof) then parallelism is preserved (because the homogeneous coordinate never changes) and you know you have an affinity.
  2. Note that the right column only contains translation. You can now check if the rows/columns of the top left 3x3 submatrix are orthogonal. For example, compute its SVD and check if the singular values are all identical. If that is the case, you have a similarity.
  3. Check if the transformation introduces scaling. E.g. check if the aforementioned singular values are all equal to the bottom right element of the homography matrix. If so, then you have a rigid transformation (because that scale factor is divided out when you dehomogenize a vector).

Also:

  1. a) If the right column is $(0,0,0,1)^\top$ (or multiple thereof) then there is no translation and you are dealing with a rotation.
  2. b) If the left 3x3 matrix is the identity matrix up to scale, then there is no rotation and you are dealing with a translation.