I am trying to decompose affine transformations in elementary operations (rotation, scaling, shear), leaving translation aside for the moment, and in particular, to understand the relation of affine transformations with the singular value decomposition (SVD). I am focusing on the two dimensional case.

$$M = U \Sigma V^t$$

There are already a number of questions asking about this, none of them with a general, definitive answer:

In particular, I observed, but could not prove, that

  1. The singular values of an affine transformation matrix are the absolute values of the scaling parameters.
  2. The SVD of a transformation consisting in a uniform scaling and a proper rotation didn't reconstruct the original matrices, but introduced two improper rotations (i.e., determinant = -1).
  3. Nonetheless, the multiplication of these two improper rotations yielded the original rotation. Perhaps because the transformation is conformal?

In Python code:

In [66]: rot
array([[ 0.8660254, -0.5      ],
       [ 0.5      ,  0.8660254]])

In [67]: sc
array([[ 2.,  0.],
       [ 0.,  2.]])

In [68]: svd(rot @ sc)
(array([[-0.8660254, -0.5      ],
        [-0.5      ,  0.8660254]]), array([ 2.,  2.]), array([[-1., -0.],
        [ 0.,  1.]]))

In [69]: det(_68[0])
Out[69]: -1.0000000000000002

In [70]: _68[0] @ _68[2]
array([[ 0.8660254, -0.5      ],
       [ 0.5      ,  0.8660254]])

Under which assumptions can we perform this decomposition or does it make sense? Is there any proof that the singular values are the sorted absolute scaling factors? Is there a decomposition that is robust against reflection (i.e. improper transformations)?


What do you mean by "improper rotations"? An orthogonal transformation with a reflection (i.e. determinant -1)? This would appear to be a non-uniqueness problem and could be fixed by flipping the sign of an arbitrary (but same index) column of $U$ and $V$, which would still be a valid SVD.

  • $\begingroup$ Yes, I mean determinant -1. I clarified that in the question. $\endgroup$ – astrojuanlu Jun 21 '17 at 15:53
  • $\begingroup$ @astrojuanlu: Ok, then just multiply the first (say) column of U and V by -1 each. Since $\det \Sigma>0$ by definition, and provided that $\det M>0$, $\det U$ and $\det V$ will always either be both +1 or -1, so you can "fix" your SVD such that U and V are proper rotations. Diagonal elements of $\Sigma$ are obviously scaling factors, with one rotation applied before and one after the scaling. $\endgroup$ – Stefan Böttner Jun 22 '17 at 9:48
  • $\begingroup$ Thanks for your comment, but the "obviously" part is precisely what I am trying to address. $\endgroup$ – astrojuanlu Jun 22 '17 at 12:23

Your Answer

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

Not the answer you're looking for? Browse other questions tagged or ask your own question.