Алгоритм аффинного преобразования

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

22
задан Adam C. 3 May 2010 в 01:49
поделиться

1 ответ

Аффинные преобразования задаются матрицами 2x3. Мы выполняем аффинное преобразование M, беря наш двумерный вход (xy), увеличивая его до трехмерного вектора (xy 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, которые мы хотим. (На самом деле вам не нужна полная обратная матрица, но если доступна обратная матрица, ее легко использовать.)

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

32
ответ дан 29 November 2019 в 05:13
поделиться
Другие вопросы по тегам:

Похожие вопросы: