Если предполагается, что это перспективная трансформация, вы ищете термин гомография .
Может быть, Matlab в этих ссылках работает так, как вы хотите:
http://www.csse.uwa.edu.au/~pk/research/matlabfns/#projective
http://www.robots.ox.ac.uk/~vgg/hzbook/code/
Отредактировано после комментариев:
Итак, я решил уравнения с Mathematica. Если вы определите (для удобства чтения)
M=(x-x1)/(x2-x1)
и
N=(y-y1)/(y2-y1),
тогда пара решений довольно громоздкая
{M -> -(X1 Y - X3 Y + X4 Y - X Y1 - X4 Y1 + X Y2 - 2 X1 Y2 + X3 Y2 +
X Y3 - X2 (Y - 2 Y1 + Y3) - X Y4 +
X1 Y4 + \[Sqrt](4 (X3 (-Y + Y1) + X1 (Y - Y3) +
X (-Y1 + Y3)) (-(X3 - X4) (Y1 - Y2) + (X1 - X2) (Y3 -
Y4)) + (X4 (-Y + Y1) + X3 (Y - 2 Y1 + Y2) +
X2 (Y - Y3) - X1 (Y - 2 Y3 + Y4) +
X (Y1 - Y2 - Y3 + Y4))^2))/(2 (-(X2 - X4) (Y1 -
Y3) + (X1 - X3) (Y2 - Y4))),
N -> -(-X2 Y - X3 Y + X4 Y - X Y1 + 2 X3 Y1 - X4 Y1 + X Y2 - X3 Y2 +
X Y3 + X2 Y3 - X Y4 +
X1 (Y - 2 Y3 +
Y4) - \[Sqrt](4 (X3 (-Y + Y1) + X1 (Y - Y3) +
X (-Y1 + Y3)) (-(X3 - X4) (Y1 - Y2) + (X1 - X2) (Y3 -
Y4)) + (X4 (-Y + Y1) + X3 (Y - 2 Y1 + Y2) +
X2 (Y - Y3) - X1 (Y - 2 Y3 + Y4) +
X (Y1 - Y2 - Y3 + Y4))^2))/(2 (-(X3 - X4) (Y1 -
Y2) + (X1 - X2) (Y3 - Y4)))}
и
{M -> -(X1 Y - X3 Y + X4 Y - X Y1 - X4 Y1 + X Y2 - 2 X1 Y2 + X3 Y2 +
X Y3 - X2 (Y - 2 Y1 + Y3) - X Y4 +
X1 Y4 - \[Sqrt](4 (X3 (-Y + Y1) + X1 (Y - Y3) +
X (-Y1 + Y3)) (-(X3 - X4) (Y1 - Y2) + (X1 - X2) (Y3 -
Y4)) + (X4 (-Y + Y1) + X3 (Y - 2 Y1 + Y2) +
X2 (Y - Y3) - X1 (Y - 2 Y3 + Y4) +
X (Y1 - Y2 - Y3 + Y4))^2))/(2 (-(X2 - X4) (Y1 -
Y3) + (X1 - X3) (Y2 - Y4))),
N -> -(-X2 Y - X3 Y + X4 Y - X Y1 + 2 X3 Y1 - X4 Y1 + X Y2 - X3 Y2 +
X Y3 + X2 Y3 - X Y4 +
X1 (Y - 2 Y3 +
Y4) + \[Sqrt](4 (X3 (-Y + Y1) + X1 (Y - Y3) +
X (-Y1 + Y3)) (-(X3 - X4) (Y1 - Y2) + (X1 - X2) (Y3 -
Y4)) + (X4 (-Y + Y1) + X3 (Y - 2 Y1 + Y2) +
X2 (Y - Y3) - X1 (Y - 2 Y3 + Y4) +
X (Y1 - Y2 - Y3 + Y4))^2))/(2 (-(X3 - X4) (Y1 -
Y2) + (X1 - X2) (Y3 - Y4)))}
Обратите внимание, что единственная разница - знак перед Srqt.
Теперь вам нужно только заново сформировать определения M
и N
выше, чтобы получить x
, y
. x=M*(x2-x1)+x1
, y=N*(y2-y1)+y1
.