1

我正在尝试编写一个可以进行投影变换的代码,但有超过 4 个关键点。我发现这个有用的指南,但它使用 4 个参考点 https://math.stackexchange.com/questions/296794/finding-the-transform-matrix-from-4-projected-points-with-javascript

我知道matlab使用了一个函数tcp2form来处理这个问题,但到目前为止我还没有找到方法。

任何人都可以给我一些指导,如何做到这一点?我可以使用(最小二乘法)求解方程,但我被卡住了,因为我有一个大于 3*3 的矩阵并且我不能乘以齐次坐标。

谢谢

4

1 回答 1

0

如果您有四个以上的控制点,则您有一个超定方程组。有两种可能的情况。您的观点都与相同的转换兼容。在这种情况下,可以使用任意四个点,其余的将与变换完全匹配。至少在理论上。为了数字稳定性,您可能希望选择您的点,使它们远离共线。

或者您的观点与单个射影变换并不完全兼容。在这种情况下,您所能期望的只是一个近似值。如果您想要最好的近似值,您必须更具体地了解“最佳”的含义,即某种误差度量。在投影设置中测量事物本质上是棘手的,因为通常涉及很多任意决定。

您可以尝试修复一个矩阵条目(例如,右下角的 1 到 1),然后将剩余 8 个坐标的条件写为线性方程组,并执行最小二乘逼近。但是矩阵代表的选择(即在这里固定一个条目)会影响最小二乘误差度量,而对几何意义没有影响,所以这是一个相当随意的选择。如果所需矩阵的右下方条目恰好为零,则由于溢出,您的计算将遇到数值问题。

于 2015-08-28T12:59:00.530 回答