воскресенье, 4 июля 2021 г.

Обратное проективное преобразование

Если заданы коэффициенты проективного преобразования, переводящие точки плоскости (x,y) в точки другой плоскости (x',y'), то можно ли найти обратное ему преобразование, и если да, то каково оно?

Проективное преобразование плоскости в плоскость описывается дробно-линейным преобразованием: $$ x'=\frac{c_{11}x+c_{12}y+c_{13}}{c_{31}x+c_{32}y+1} $$ $$ y'=\frac{c_{21}x+c_{22}y+c_{23}}{c_{31}x+c_{32}y+1} $$ У дробей одинаковые знаменатели и коэффициенты нормированы таким образом, что свободный член в знаменателе равен единице.

Обратное ему преобразование будем искать также как проективное, но в общей, не нормированной форме: $$ x=\frac{c'_{11}x'+c'_{12}y'+c'_{13}}{c'_{31}x'+c'_{32}y'+c'_{33}} $$ $$ y=\frac{c'_{21}x'+c'_{22}y'+c'_{23}}{c'_{31}x'+c'_{32}y'+c'_{33}} $$ Чтобы получить выражения для $x$ и $y$, подставим значения $x'$ и $y'$ из первых уравнений во второе. Учтем, что в выражениях $x'$ и $y'$ одинаковые знаменатели. $$ x_u=c'_{11}(c_{11}x+c_{12}y+c_{13})+ $$ $$ +c'_{12}(c_{21}x+c_{22}y+c_{23})+ c'_{13}(c_{31}x+c_{32}y+1) $$ $$ x_d=c'_{31}(c_{11}x+c_{12}y+c_{13})+ $$ $$ +c'_{32}(c_{21}x+c_{22}y+c_{23})+ c'_{33}(c_{31}x+c_{32}y+1) $$ $$ y_u=c'_{21}(c_{11}x+c_{12}y+c_{13})+ $$ $$ +c'_{22}(c_{21}x+c_{22}y+c_{23})+ c'_{23}(c_{31}x+c_{32}y+1) $$ $$ y_d=x_d $$ $$ x=\frac{x_u}{x_d} $$ $$ y=\frac{y_u}{y_d} $$ Чтобы эти уравнения были верны, они должны выполняться при любых значениях $x$ и $y$, числители выражений для $x$ и $y$ должны быть равны $x$ и $y$, а их знаменатели равны единице.

Раскрывая произведения числителя $x$, получим: $$ (c_{11}c'_{11}+c_{21}c'_{12}+c_{31}c'_{13})x=x $$ $$ (c_{12}c'_{11}+c_{22}c'_{12}+c_{32}c'_{13})y=0 $$ $$ c_{13}c'_{11}+c_{23}c'_{12}+c'_{13}=0 $$ Чтобы эти условия выполнялись для любых $x$ и $y$, должно выполняться: $$ \left( \begin{array}{ccc} c_{11} & c_{21} & c_{31} \\ c_{12} & c_{22} & c_{32} \\ c_{13} & c_{23} & c_{33} \end{array}\right) \left( \begin{array}{c} c'_{11} \\ c'_{12} \\ c'_{13} \end{array} \right)= \left( \begin{array}{c} 1 \\ 0 \\ 0 \end{array} \right) $$ Раскрывая произведения числителя $y$, получим: $$ (c_{11}c'_{21}+c_{21}c'_{22}+c_{31}c'_{23})x=0 $$ $$ (c_{12}c'_{21}+c_{22}c'_{22}+c_{32}c'_{23})y=y $$ $$ c_{13}c'_{21}+c_{23}c'_{22}+c'_{23}=0 $$ Чтобы эти условия выполнялись для любых $x$ и $y$, должно выполняться: $$ \left( \begin{array}{ccc} c_{11} & c_{21} & c_{31} \\ c_{12} & c_{22} & c_{32} \\ c_{13} & c_{23} & c_{33} \end{array}\right) \left( \begin{array}{c} c'_{21} \\ c'_{22} \\ c'_{23} \end{array} \right)= \left( \begin{array}{c} 0 \\ 1 \\ 0 \end{array} \right) $$ Раскроем произведения знаменателя: $$ (c_{11}c'_{31}+c_{21}c'_{32}+c_{31}c'_{33})x=0 $$ $$ (c_{12}c'_{31}+c_{22}c'_{32}+c_{32}c'_{33})y=0 $$ $$ c_{13}c'_{31}+c_{23}c'_{32}+c'_{33}=1 $$ Чтобы эти условия выполнялись для любых $x$ и $y$, должно выполняться: $$ \left( \begin{array}{ccc} c_{11} & c_{21} & c_{31} \\ c_{12} & c_{22} & c_{32} \\ c_{13} & c_{23} & c_{33} \end{array}\right) \left( \begin{array}{c} c'_{31} \\ c'_{32} \\ c'_{33} \end{array} \right)= \left( \begin{array}{c} 0 \\ 0 \\ 1 \end{array} \right) $$ Получаемые три матричные уравнения можем объединить в одно, объединив столбцы в матрицы: $$ \left( \begin{array}{ccc} c_{11} & c_{21} & c_{31} \\ c_{12} & c_{22} & c_{32} \\ c_{13} & c_{23} & c_{33} \end{array}\right) \left( \begin{array}{ccc} c'_{11} & c'_{21} & c'_{31} \\ c'_{12} & c'_{22} & c'_{32} \\ c'_{13} & c'_{23} & c'_{33} \end{array}\right) = \left( \begin{array}{ccc} 1 & 0 & 0 \\ 0 & 1 & 0 \\ 0 & 0 & 1 \end{array}\right) $$ Таким образом, матрица искомых коэффициентов в ненормированной форме является обратной для матрицы исходных коэффициентов. И, если мы найдем эту обратную матрицу, то получим искомые ненормированные коэффициенты.

Используя систему компьютерной алгебры Maxima, получим выражения для искомых коэффициентов через исходные:
C:matrix([c11,c21,c31],[c12,c22,c32],[c13,c23,1]);
Ci:invert(C);
Ci/(Ci[3][3]);
Искомые значения равны: $$ c'_{11}=\frac{c_{22}-c_{23}c_{32}}{c_{11}c_{23}-c_{12}c_{21}} $$ $$ c'_{21}=\frac{c_{23}c_{31}-c_{31}}{c_{11}c_{23}-c_{12}c_{21}} $$ $$ c'_{31}=\frac{c_{21}c_{32}-c_{22}c_{31}}{c_{11}c_{23}-c_{12}c_{21}} $$ $$ c'_{12}=\frac{c_{13}c_{32}-c_{12}}{c_{11}c_{23}-c_{12}c_{21}} $$ $$ c'_{22}=\frac{c_{11}-c_{13}c_{31}}{c_{11}c_{23}-c_{12}c_{21}} $$ $$ c'_{32}=\frac{c_{12}c_{31}-c_{11}c_{32}}{c_{11}c_{23}-c_{12}c_{21}} $$ $$ c'_{13}=\frac{c_{12}c_{23}-c_{13}c_{22}}{c_{11}c_{23}-c_{12}c_{21}} $$ $$ c'_{23}=\frac{c_{13}c_{21}-c_{11}c_{23}}{c_{11}c_{23}-c_{12}c_{21}} $$ $$ c'_{33}=1 $$

Комментариев нет:

Отправить комментарий