0

I have 3D points of my model. And I have 2D points - projection of these 3D points of my model on plane. I want to find 3d-affine transformation (translation, rotation and scale) of 3D-model so that projection of this 3D-model give me 2D points on plane the same as I have.

How can I find 3d-affine transformation of my 3D model if I have 2D points of its projection?

Alex
  • 12,578
  • 15
  • 99
  • 195

1 Answers1

1

Just find the null space to your projection matrix, e.g. in matlab you can use u=null(P) (or Python (NumPy, SciPy), finding the null space of a matrix in numpy). This will be a single vector, as P is projecting one dimension down from 3D space.

An affine transformation satisfying P*A=P (where P is the projection and A is the affine transformation) would be A=([u u ... u]+I), where you form a matrix from the nullspace vector u to match the dimension of A (likely 4x4 to include translation).

Community
  • 1
  • 1
Felix Darvas
  • 507
  • 3
  • 5