Python (numpy?) - 从源点和目标点集构建转换矩阵



假设我在二维欧几里得系统中有两个设定点:

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 模式下工作)。

最新更新