суббота, 10 ноября 2018 г.

Метрический тензор и аффинное преобразование

В обработке изображений стоит актуальная задача. В общей сцене участвует несколько объектов, для каждого задается некоторая точка привязки и эта точка привязки связывает общие, или абсолютные, координаты и внутренние, нормированные для каждого изображения.

Для перехода к внутренним нормированным используется смещение до точки привязки и масштабирование. Смещение и масштабирование задаются для каждого из объектов сцены. Та же формулировка используется в ортотрансформировании спутниковых снимков с использованием коэффициентов RPC.

Проблема состоит в том, что манипуляции с общей сценой или в случае со спутниковыми снимками с маршрутом съемки приводят к выполнению преобразований, которые необходимо произвести, в абсолютном пространстве. Но из этих преобразований необходимо получить масштабирования по осям для каждого такого преобразования.

Будем считать, что мы получили для каждого изображения аффинное преобразование $$ X' = AX $$ для получения коэффициентов растяжений надо найти метрический тензор в новых координатах, полагая для простоты, что в исходных координатах он был единичным. Для единичного метрического тензора скалярное произведение определяется как сумма произведений координат.

Для 3-х мерного пространства, полагая его декартовым, имеем для векторов $x$ и $y$: $$ S(x,y) = x_1y_1 + x_2y_2 + x_3y_3 $$ Если выразить вектора $x$ и $y$ в виде матриц - столбцов, то скалярное произведение выражается через произведение этих матриц: $$ XY^T $$ Для получения соответственно скалярной величины как действительного числа нужно взять след получаемой матрицы: $$ S(X,Y)=tr(XY^T) $$ Если есть преобразование векторов $$ X'=AX $$ $$ Y'=AY $$ то для них скалярное произведение выражается как $$ S(X',Y')=tr(X'Y'^T)=tr(AXY^TA^T) $$ Здесь конструкция $$ AA^T $$ собственно и выполняет роль метрического тензора. Его диагональные члены характеризуют коэффициенты масштабирования по осям.

Проиллюстрируем на двух примерах. Первый - двумерное вращение $$ A=\left( \begin{array}{cc} \cos(\alpha) & -\sin(\alpha) \\ \sin(\alpha) & \cos(\alpha) \end{array}\right) $$ Для такого преобразования метрический тензор равен единичному: $$ AA^T=\left( \begin{array}{cc} 1 & 0 \\ 0 & 1 \end{array}\right) $$ Это означает, что преобразования вращения не приводят ни к растягиванию по осям, ни к изменению углов между осями.

Второй пример - преобразование параллелограмма $$ A=\left( \begin{array}{cc} 1 & \alpha \\ 0 & 1 \end{array}\right) $$ Для такого преобразования метрический тензор уже не равен единичному: $$ AA^T=\left( \begin{array}{cc} 1 & \alpha \\ 0 & 1 \end{array}\right) \left(\begin{array}{cc} 1 & 0 \\ \alpha & 1 \end{array}\right)= \left(\begin{array}{cc} 1+\alpha^2 & \alpha \\ \alpha & 1 \end{array}\right) $$ Здесь ось 1 масштабируется в $\sqrt{1+\alpha^2}$ раз, ось 2 не масштабируется и угол между осями изменяется (соответственно, коэффициент $\alpha$ здесь задает котангенс угла параллелограмма).

Если есть последовательность аффинных преобразований $$ X'=AX $$ $$ X''=BX'=BAX $$ то для такой последовательности метрический иензор соответственно равен $$ BAA^TB^T $$ и при аффинных преобразованиях он, следовательно, также преобразуется. Если обозначить метрический тензор через $G$ $$ G'=AA^T $$ то при преобразовании $$ X''=BX' $$ он преобразуется $$ G''=BG'B^T $$ Рассмотрим подробнее величину $$ AA^T $$ На ее диагонали стоят квадраты коэффициентов масштабирования (или растяжения). $$ AA^T=\left( \begin{array}{ccc} s_1^2 & & \ldots \\ & s_2^2 & \\ \ldots & & s_3^2 \end{array} \right) $$ Собственно говоря, они и есть искомые элементы.

В силу правила транспонирования и произведения матриц эти диагональные элементы равны $$ s_i^2 = \sum\limits_j a_{ij}^2 $$ Здесь индексация задает сначала строку, затем колонку матрицы. Соответственно, если есть матрица аффинного преобразования $a_ij$, то она задает растяжения (или масштабирования) по осям $$ s_i=\sqrt{\sum\limits_j a_{ij}^2} $$ Необходимо сделать замечание, что весь проделанный вывод основан на скалярном произведении, задаваемом знакопостоянной квадратической формой вида $$ S(x,y) = x_1y_1 + x_2y_2 + x_3y_3 $$ которую мы и описали на языке матриц. В случае если пространство имеет знакопеременную метрику, необходимо использовать иное определение скалярного произведения.

Для знакопеременных метрик нужно уточнить взятие исходного тензорного произведения матриц $$ S(X,Y)=tr(XY^T) $$ здесь $X$ - вектор-столбец, $Y^T$ - вектор строка, и их произведение есть квадратная матрица с ненулевой диагональю. Например, нужно уточнить операцию получения транспонирования, добавив операцию со сменой знаков. Если есть вектор-столбец $$ X=\left( \begin{array}{c} x_1 \\ x_2 \\ x_3 \end{array}\right) $$ то результатом транспонирования будет вектор-строка $$ X^T=\left( \begin{array}{ccc} x_1 & x_2 & x_3 \end{array}\right) $$ Можно модифицировать эту часть получения скалярного произведения в матричной форме, заменив ее на транспонирование с умножением на знаковвую матрицу, например при смене знака у второй и третьей оси: $$ E_S=\left( \begin{array}{ccc} 1 & 0 & 0 \\ 0 & -1 & 0 \\ 0 & 0 & -1 \end{array} \right) $$ Тогда скалярное произведение будет задаваться $$ S(X,Y)=tr(XE_SY^T) $$ И в случае декартова пространства использовать просто единичную матрицу $$ E_S=\left( \begin{array}{ccc} 1 & 0 & 0 \\ 0 & 1 & 0 \\ 0 & 0 & 1 \end{array} \right) $$ Соответственно, при аффинном преобразовании можно считать метрическим тензором для знакопеременных метрик произведение $$ G'=AE_SA^T $$ И в случае, если преобразование $A$ отсутствует (равно единичному), метрический тензор будет равен знаковой матрице $$ G=E_S $$ Для знакопеременных метрических тензоров на диагонали будут соответственно либо квадраты коэффициентов растяжений, либо минус квадраты, в зависимости от знака в знаковой матрице $E_S$.

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

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