同形和投影变换

时间:2015-03-10 10:49:41

标签: image-processing homography projection-matrix

我试图编写一个可以进行投影转换的代码,但有4个以上的关键点。我找到了这个有用的指南,但它使用了4个参考点 https://math.stackexchange.com/questions/296794/finding-the-transform-matrix-from-4-projected-points-with-javascript

我知道matlab使用的函数tcp2form可以解决这个问题,但到目前为止还没有找到方法。

任何人都可以给我一些指导,如何做到这一点?我可以使用(最小二乘法)求解方程式,但是因为我有一个大于3 * 3的矩阵而且我不能对齐次坐标进行多次迭代。

谢谢

1 个答案:

答案 0 :(得分:0)

如果您有四个以上的控制点,则会有一个overdetermined system of equations。有两种可能的情况。您的要点都与相同的转换兼容。在这种情况下,可以使用任何四个点,其余的将完全匹配转换。至少在理论上。为了数字稳定性,你可能想要选择你的点,这样它们就不会共线了。

或者你的观点与单一的投射变换并不完全相符。在这种情况下,你所能希望的只是近似值。如果你想要最好的近似,你必须更具体地说明“最佳”意味着什么,即某种错误测量。在投影设置中测量事物本质上是棘手的,因为通常涉及很多任意决策。

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