有谁知道任何标准算法来基于两个坐标系中的一组已知点来确定仿射变换矩阵?

最佳答案

仿射变换由2x3矩阵给出。我们通过获取2D输入(x y),将其撞到3D vector (x y 1),然后乘以M(在左侧)来执行仿射变换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,则可能需要最小二乘方最佳拟合。您将不得不再次提出要求,但这会有点困难。

10-04 20:49