Аффинные преобразования - математика
по адресу 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' матрица коэффициентов будет другая:
Таким образом, для решения данной системы, наше программное обеспечение должно уметь производить операции получения обратной матрицы и умножения матриц.
Полученный набор коэффициентов подставляется потом в исходные уравнения и задача получения новых координат решается для каждого пиксела исходного растра, получая таким образом новую матрицу в выходной системе координат.