Аффинные преобразования - математика

Материал из GIS-Lab
Перейти к навигации Перейти к поиску
Эта страница опубликована в основном списке статей сайта
по адресу http://gis-lab.info/qa/.html


Введение

При операции географической привязки данных, то есть перевода данных из локальной системы координат в географическую или прямоугольную, сам пересчет обычно происходит "за сценой" и его особенности часто понятны пользователю только интуитивно. Эта статья показывает полный алгоритм пересчета и может быть использована для реализации алгоритмов привязки данных в своем ПО и просто для более полного понимания того, что происходит на самом деле. Аффинные преобразования являются подмножеством полиномиальных преобразований. Аффинное преобразование является эквивалентом полиномиального преобразования первого порядка. Для менее насыщенного формулами описания рекомендуем ознакомиться со статьей "[polynom.html Полиномиальные преобразования]". Указанная статья, хотя и содержит формулы преобразований, не показывает детальной их реализации, однако представляет важную информацию о применении данных преобразований на практике.

Данная статья иллюстрирует случай, когда количество точек привязки равно минимально необходимому, в данном случае n = 3. В случае если точек больше и необходимо так же вычислить ошибку, математика будет несколько другая. Мы планируем осветить этот вопрос в отдельной статье.

Математика

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

система уравнений

где:

x,y - координаты в исходной системе координат (известны)
x',y' - координаты в конечной системе координат (известны)
a0-2,b0-2 - коэффициенты (неизвестны)

Таким образом, имея 6 неизвестных, нам понадобится 3 пар точек с известными координатами до и после трансформации (x1,y1; x2,y2; x3,y3 и x1',y1'; x2',y2'; x3',y3'), соответственно получим 3 пары уравнений:

система уравнений

Или, перегруппируя этот набор уравнений по x и y:

система уравнений

Каждая группа используется соответственно для получения коэффициентов ai и bi. В матричной форме это выглядит следующим образом, для a и b:

система уравнений

Для получение коэффициентов, каждая часть уравнения должна быть умножена на обратную матрицу с коэффициентами, например для a:

система уравнений

Таким образом в матричной форме, вычисление коэффициентов:

система уравнений

Необходимо иметь в виду, что для обратного преобразования из x,y в x',y' матрица коэффициентов будет другая:

система уравнений

Таким образом, для решения данной системы, наше программное обеспечение должно уметь производить операции получения обратной матрицы и умножения матриц.

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

Ссылки по теме