Подтвердить что ты не робот

Алгоритм аффинной трансформации

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

4b9b3361

Ответ 1

Аффинные преобразования задаются матрицами 2x3. Мы выполняем аффинное преобразование M, беря наш двумерный вход (x y), подбирая его до 3D-вектора (x y 1), а затем умножая (слева) на M.

Итак, если у нас есть три точки (x1 y1) (x2 y2) (x3 y3), отображающие (u1 v1) (u2 v2) (u3 v3), то мы имеем

   [x1 x2 x3]   [u1 u2 u3]
M  [y1 y2 y3] = [v1 v2 v3].
   [ 1  1  1]

Вы можете получить M просто путем умножения на правую на обратную сторону

[x1 x2 x3]
[y1 y2 y3]
[ 1  1  1].

Матрица 2x3, умноженная справа на матрицу 3x3, дает нам 2x3, который мы хотим. (Вам действительно не нужен полный обратный, но если матрица обратная доступна, она проста в использовании.)

Легко адаптируется к другим измерениям. Если у вас более 3 баллов, вам может потребоваться наилучшее соответствие наименьших квадратов. Вам придется снова спросить об этом, но это немного сложнее.