В обработке изображений стоит актуальная задача. В общей сцене участвует несколько объектов, для каждого задается некоторая точка привязки и эта точка привязки связывает общие, или абсолютные, координаты и внутренние, нормированные для каждого изображения.
Для перехода к внутренним нормированным используется смещение до точки привязки и масштабирование. Смещение и масштабирование задаются для каждого из объектов сцены. Та же формулировка используется в ортотрансформировании спутниковых снимков с использованием коэффициентов RPC.
Проблема состоит в том, что манипуляции с общей сценой или в случае со спутниковыми снимками с маршрутом съемки приводят к выполнению преобразований, которые необходимо произвести, в абсолютном пространстве. Но из этих преобразований необходимо получить масштабирования по осям для каждого такого преобразования.
Будем считать, что мы получили для каждого изображения аффинное преобразование X′=AX для получения коэффициентов растяжений надо найти метрический тензор в новых координатах, полагая для простоты, что в исходных координатах он был единичным. Для единичного метрического тензора скалярное произведение определяется как сумма произведений координат.
Для 3-х мерного пространства, полагая его декартовым, имеем для векторов x и y: S(x,y)=x1y1+x2y2+x3y3 Если выразить вектора x и y в виде матриц - столбцов, то скалярное произведение выражается через произведение этих матриц: XYT Для получения соответственно скалярной величины как действительного числа нужно взять след получаемой матрицы: S(X,Y)=tr(XYT) Если есть преобразование векторов X′=AX Y′=AY то для них скалярное произведение выражается как S(X′,Y′)=tr(X′Y′T)=tr(AXYTAT) Здесь конструкция AAT собственно и выполняет роль метрического тензора. Его диагональные члены характеризуют коэффициенты масштабирования по осям.
Проиллюстрируем на двух примерах. Первый - двумерное вращение A=(cos(α)−sin(α)sin(α)cos(α)) Для такого преобразования метрический тензор равен единичному: AAT=(1001) Это означает, что преобразования вращения не приводят ни к растягиванию по осям, ни к изменению углов между осями.
Второй пример - преобразование параллелограмма A=(1α01) Для такого преобразования метрический тензор уже не равен единичному: AAT=(1α01)(10α1)=(1+α2αα1) Здесь ось 1 масштабируется в √1+α2 раз, ось 2 не масштабируется и угол между осями изменяется (соответственно, коэффициент α здесь задает котангенс угла параллелограмма).
Если есть последовательность аффинных преобразований X′=AX X″=BX′=BAX то для такой последовательности метрический иензор соответственно равен BAATBT и при аффинных преобразованиях он, следовательно, также преобразуется. Если обозначить метрический тензор через G G′=AAT то при преобразовании X″=BX′ он преобразуется G″=BG′BT Рассмотрим подробнее величину AAT На ее диагонали стоят квадраты коэффициентов масштабирования (или растяжения). AAT=(s21…s22…s23) Собственно говоря, они и есть искомые элементы.
В силу правила транспонирования и произведения матриц эти диагональные элементы равны s2i=∑ja2ij Здесь индексация задает сначала строку, затем колонку матрицы. Соответственно, если есть матрица аффинного преобразования aij, то она задает растяжения (или масштабирования) по осям si=√∑ja2ij Необходимо сделать замечание, что весь проделанный вывод основан на скалярном произведении, задаваемом знакопостоянной квадратической формой вида S(x,y)=x1y1+x2y2+x3y3 которую мы и описали на языке матриц. В случае если пространство имеет знакопеременную метрику, необходимо использовать иное определение скалярного произведения.
Для знакопеременных метрик нужно уточнить взятие исходного тензорного произведения матриц S(X,Y)=tr(XYT) здесь X - вектор-столбец, YT - вектор строка, и их произведение есть квадратная матрица с ненулевой диагональю. Например, нужно уточнить операцию получения транспонирования, добавив операцию со сменой знаков. Если есть вектор-столбец X=(x1x2x3) то результатом транспонирования будет вектор-строка XT=(x1x2x3) Можно модифицировать эту часть получения скалярного произведения в матричной форме, заменив ее на транспонирование с умножением на знаковвую матрицу, например при смене знака у второй и третьей оси: ES=(1000−1000−1) Тогда скалярное произведение будет задаваться S(X,Y)=tr(XESYT) И в случае декартова пространства использовать просто единичную матрицу ES=(100010001) Соответственно, при аффинном преобразовании можно считать метрическим тензором для знакопеременных метрик произведение G′=AESAT И в случае, если преобразование A отсутствует (равно единичному), метрический тензор будет равен знаковой матрице G=ES Для знакопеременных метрических тензоров на диагонали будут соответственно либо квадраты коэффициентов растяжений, либо минус квадраты, в зависимости от знака в знаковой матрице ES.
Для перехода к внутренним нормированным используется смещение до точки привязки и масштабирование. Смещение и масштабирование задаются для каждого из объектов сцены. Та же формулировка используется в ортотрансформировании спутниковых снимков с использованием коэффициентов RPC.
Проблема состоит в том, что манипуляции с общей сценой или в случае со спутниковыми снимками с маршрутом съемки приводят к выполнению преобразований, которые необходимо произвести, в абсолютном пространстве. Но из этих преобразований необходимо получить масштабирования по осям для каждого такого преобразования.
Будем считать, что мы получили для каждого изображения аффинное преобразование X′=AX для получения коэффициентов растяжений надо найти метрический тензор в новых координатах, полагая для простоты, что в исходных координатах он был единичным. Для единичного метрического тензора скалярное произведение определяется как сумма произведений координат.
Для 3-х мерного пространства, полагая его декартовым, имеем для векторов x и y: S(x,y)=x1y1+x2y2+x3y3 Если выразить вектора x и y в виде матриц - столбцов, то скалярное произведение выражается через произведение этих матриц: XYT Для получения соответственно скалярной величины как действительного числа нужно взять след получаемой матрицы: S(X,Y)=tr(XYT) Если есть преобразование векторов X′=AX Y′=AY то для них скалярное произведение выражается как S(X′,Y′)=tr(X′Y′T)=tr(AXYTAT) Здесь конструкция AAT собственно и выполняет роль метрического тензора. Его диагональные члены характеризуют коэффициенты масштабирования по осям.
Проиллюстрируем на двух примерах. Первый - двумерное вращение A=(cos(α)−sin(α)sin(α)cos(α)) Для такого преобразования метрический тензор равен единичному: AAT=(1001) Это означает, что преобразования вращения не приводят ни к растягиванию по осям, ни к изменению углов между осями.
Второй пример - преобразование параллелограмма A=(1α01) Для такого преобразования метрический тензор уже не равен единичному: AAT=(1α01)(10α1)=(1+α2αα1) Здесь ось 1 масштабируется в √1+α2 раз, ось 2 не масштабируется и угол между осями изменяется (соответственно, коэффициент α здесь задает котангенс угла параллелограмма).
Если есть последовательность аффинных преобразований X′=AX X″=BX′=BAX то для такой последовательности метрический иензор соответственно равен BAATBT и при аффинных преобразованиях он, следовательно, также преобразуется. Если обозначить метрический тензор через G G′=AAT то при преобразовании X″=BX′ он преобразуется G″=BG′BT Рассмотрим подробнее величину AAT На ее диагонали стоят квадраты коэффициентов масштабирования (или растяжения). AAT=(s21…s22…s23) Собственно говоря, они и есть искомые элементы.
В силу правила транспонирования и произведения матриц эти диагональные элементы равны s2i=∑ja2ij Здесь индексация задает сначала строку, затем колонку матрицы. Соответственно, если есть матрица аффинного преобразования aij, то она задает растяжения (или масштабирования) по осям si=√∑ja2ij Необходимо сделать замечание, что весь проделанный вывод основан на скалярном произведении, задаваемом знакопостоянной квадратической формой вида S(x,y)=x1y1+x2y2+x3y3 которую мы и описали на языке матриц. В случае если пространство имеет знакопеременную метрику, необходимо использовать иное определение скалярного произведения.
Для знакопеременных метрик нужно уточнить взятие исходного тензорного произведения матриц S(X,Y)=tr(XYT) здесь X - вектор-столбец, YT - вектор строка, и их произведение есть квадратная матрица с ненулевой диагональю. Например, нужно уточнить операцию получения транспонирования, добавив операцию со сменой знаков. Если есть вектор-столбец X=(x1x2x3) то результатом транспонирования будет вектор-строка XT=(x1x2x3) Можно модифицировать эту часть получения скалярного произведения в матричной форме, заменив ее на транспонирование с умножением на знаковвую матрицу, например при смене знака у второй и третьей оси: ES=(1000−1000−1) Тогда скалярное произведение будет задаваться S(X,Y)=tr(XESYT) И в случае декартова пространства использовать просто единичную матрицу ES=(100010001) Соответственно, при аффинном преобразовании можно считать метрическим тензором для знакопеременных метрик произведение G′=AESAT И в случае, если преобразование A отсутствует (равно единичному), метрический тензор будет равен знаковой матрице G=ES Для знакопеременных метрических тензоров на диагонали будут соответственно либо квадраты коэффициентов растяжений, либо минус квадраты, в зависимости от знака в знаковой матрице ES.
Комментариев нет:
Отправить комментарий