假设我在二维欧几里得系统中有两个设定点:
src = [
[722.6, 1571.4],
[832, 1466],
[419, 1482],
[1005, 2804],
<snip>
]
dst = [
[35839.65, 49808.55],
[42771.08, 41488.07],
[15764.26, 44065.95],
[72760.36, 76645.15],
<snip>
]
其中src[0]
映射到dst[0]
,src[1]
映射到dst[1]
,等等。
假设我有足够的点来做到这一点(实际上是几千个),如何使用样本来求解导致所有src
坐标成为各自dst
坐标的变换矩阵M
?
所以旧系统中src[0]
映射到dst[0]
,src[1]
映射到dst[1]
,src[2]
映射到dst[2]
,src[3]
映射到dst[3]
, 等等。
因此,对于每个点对:
dst[i] = M x src[i]
您可能正在寻找刚性配准,它对齐允许旋转和平移的点集,或者您可能正在寻找仿射配准,它也允许改变比例、剪切或反射。
您可以使用 Transforms3d 库中的函数affine_matrix_from_points()
(尽管它在 3D 模式下工作)。