Полиномиальные преобразования - математика

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


Математические выкладки решения задачи, применяемой при привязке данных

Введение

При операции географической привязки данных, то есть перевода данных из локальной системы координат в географическую или прямоугольную, сам пересчет обычно происходит "за сценой" и его особенности часто понятны пользователю только интуитивно. Эта статья показывает полный алгоритм пересчета и может быть использована для реализации алгоритмов привязки данных в своем ПО и просто для более полного понимания того, что происходит на самом деле. Для менее насыщенного формулами описания рекомендуем ознакомиться со статьей "Полиномиальные преобразования". Указанная статья, хотя и содержит формулы преобразований, не показывает детальной их реализации, однако представляет важную информацию о применении данных преобразований на практике. Для того, чтобы посмотреть примеры реализации подобных преобразований, рекомендуем ознакомиться со статьей "Полиномиальные преобразования - примеры реализации", которая показывает примеры реализации на языке Delphi, R, Excel и Mathcad.

Так как одно из наиболее часто используемых преобразований при привязки - полиномиальное преобразование 2-й степени, мы иллюстрируем наши расчеты на его примере. Вычисления для аффинного преобразования (оно же полиномиальное преобразование 1-й степени) выполняются аналогичным образом, с меньшим количеством коэффициентов.

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

Математика

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

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

где:

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

Таким образом, имея 12 неизвестных, нам понадобится 6 пар точек с известными координатами до и после трансформации (x1,y1; x2,y2; x3,y3; x4,y4; x5,y5; x6,y6 и x1',y1'; x2',y2'; x3',y3'; x4',y4'; x5',y5'; x6',y6'):

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

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

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

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

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

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

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

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

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

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

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

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

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

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