I'm trying to solve system of equations. I have 4 points before perspective projection and after and I whant to obtain matrix of perspective projection $m_{i,j}$ ($x,y,u,v$ are known , $m_{i,j}$ unknown)
$u_{1}= (m_{13} + m_{11}*x_{1} + m_{12}*y_{1})/(1 + m_{31}*x_{1} + m_{32}*y_{1})$ $v_{1}= (m_{23} + m_{21}*x_{1} + m_{22}*y_{1})/(1 + m_{31}*x_{1} + m_{32}*y_{1})$ $u_{2}= (m_{13} + m_{11}*x_{2} + m_{12}*y_{2})/(1 + m_{31}*x_{2} + m_{32}*y_{2})$ $v_{2}= (m_{23} + m_{21}*x_{2} + m_{22}*y_{2})/(1 + m_{31}*x_{2} + m_{32}*y_{2})$ $u_{3}= (m_{13} + m_{11}*x_{3} + m_{12}*y_{3})/(1 + m_{31}*x_{3} + m_{32}*y_{3})$ $v_{3}= (m_{23} + m_{21}*x_{3} + m_{22}*y_{3})/(1 + m_{31}*x_{3} + m_{32}*y_{3})$ $u_{4}= (m_{13} + m_{11}*x_{4} + m_{12}*y_{4})/(1 + m_{31}*x_{4} + m_{32}*y_{4})$ $v_{4}= (m_{23} + m_{21}*x_{4} + m_{22}*y_{4})/(1 + m_{31}*x_{4} + m_{32}*y_{4})$
I tried Solve but it seems to work infinite time.
my input in mathematica
Solve[u1== (m13 + m11*x1 + m12*y1)/(1 + m31*x1 + m32*y1)&&
v1== (m23 + m21*x1 + m22*y1)/(1 + m31*x1 + m32*y1)&&
u2== (m13 + m11*x2 + m12*y2)/(1 + m31*x2 + m32*y2)&&
v2== (m23 + m21*x2 + m22*y2)/(1 + m31*x2 + m32*y2)&&
u3== (m13 + m11*x3 + m12*y3)/(1 + m31*x3 + m32*y3)&&
v3== (m23 + m21*x3 + m22*y3)/(1 + m31*x3 + m32*y3)&&
u4== (m13 + m11*x4 + m12*y4)/(1 + m31*x4 + m32*y4)&&
v4== (m23 + m21*x4 + m22*y4)/(1 + m31*x4 + m32*y4),{m11,m12,m13,m21,m22,m23,m31,m32}]
UPDATE:
another question rises when I try to solve the same equation but when $x,y$ not given, but I have some restrictions that give me more equations. What I trying to do: I have points $u,v$ (distorted points) and I don't have original points $x,y$ but I can foto the same segment in different places and I know that distance $dx=x_{2}-x_{1}$ and $dy=y_{2}-y_{1}$ is always the same,so I want to reconstruct perspective transform that I don't know.
my input in mathematica
Solve[(m31 x1 + m32 y1 + 1) u1 == (m11 x1 + m12 y1 + m13) &&
(m31 x1 + m32 y1 + 1) v1 == (m21 x1 + m22 y1 + m23) &&
(m31 x2 + m32 y2 + 1) u2 == (m11 x2 + m12 y2 + m13) &&
(m31 x2 + m32 y2 + 1) v2 == (m21 x2 + m22 y2 + m23) &&
(m31 x3 + m32 y3 + 1) u3 == (m11 x3 + m12 y3 + m13) &&
(m31 x3 + m32 y3 + 1) v3 == (m21 x3 + m22 y3 + m23) &&
(m31 x4 + m32 y4 + 1) u4 == (m11 x4 + m12 y4 + m13) &&
(m31 x4 + m32 y4 + 1) v4 == (m21 x4 + m22 y4 + m23) &&
(m31 x5 + m32 y5 + 1) u5 == (m11 x5 + m12 y5 + m13) &&
(m31 x5 + m32 y5 + 1) v5 == (m21 x5 + m22 y5 + m23) &&
(m31 x6 + m32 y6 + 1) u6 == (m11 x6 + m12 y6 + m13) &&
(m31 x6 + m32 y6 + 1) v6 == (m21 x6 + m22 y6 + m23) &&
(m31 x7 + m32 y7 + 1) u7 == (m11 x7 + m12 y7 + m13) &&
(m31 x7 + m32 y7 + 1) v7 == (m21 x7 + m22 y7 + m23) &&
(m31 x8 + m32 y8 + 1) u8 == (m11 x8 + m12 y8 + m13) &&
(m31 x8 + m32 y8 + 1) v8 == (m21 x8 + m22 y8 + m23) &&
(m31 x9 + m32 y9 + 1) u9 == (m11 x9 + m12 y9 + m13) &&
(m31 x9 + m32 y9 + 1) v9 == (m21 x9 + m22 y9 + m23) &&
(m31 x10 + m32 y10 + 1) u10 == (m11 x10 + m12 y10 + m13) &&
(m31 x10 + m32 y10 + 1) v10 == (m21 x10 + m22 y10 + m23) &&
dx == x2 - x1 &&
dy == y2 - y1 &&
dx == x4 - x3 &&
dy == y4 - y3 &&
dx == x6 - x5 &&
dy == y6 - y5 &&
dx == x8 - x7 &&
dy == y8 - y7 &&
dx == x10 - x9 &&
dy == y10 - y9
, {m11, m12, m13, m21, m22, m23, m31, m32}]
but Mathematica give me {} just trivial solution.what is wrong?
maybe it's possible to automatically rewrite system of equations as linear system $AX=B$ ?






PseudoInverseorLeastSquaresfor that. I'll try to add an example in my answer. – Thies Heidecke Aug 9 '12 at 12:16x1,x2,...in the list of unknowns forSolvethen. For measured values which can have measurement errors or inaccuracies it's usually better to use "soft" methods likePseudoInverseorLeastSquareswhich also work when contradictions arise. – Thies Heidecke Aug 9 '12 at 12:32