【问题标题】:Is it possible to compute projective transformation from correspondences?是否可以从对应关系计算投影变换? 【发布时间】:2017-06-26 17:45:53 【问题描述】: 我正在尝试计算以下对象中每个平面的投影变换。 目标是将此参考对象映射到目标平面。 因此,每个平面可以生成9个对应关系。我成功生成了最小二乘 SVD 解决方案,但此映射不适合几何。 我想知道是否可以从这些信息中计算出射影变换? 【问题讨论】: 标签: computer-vision linear-algebra 【解决方案1】: 是的,是的。实际上只需要 4 点对应关系。我不完全确定,因为您没有提供代码,但是您是否有可能假设只是仿射变换(3x3 矩阵, [0, 0, 1] 作为最后一行)。那还不够。 查看here,为您的问题提供良好的分步解决方案。 【讨论】: 谢谢。事实上,结果在代数上是正确的。我没有修复最后一行。只是 SVD 解决方案在几何上没有意义。我花了一段时间才弄清楚这个问题不能用线性系统解决,因为强制解决方案的范数 |h|为 1 并且最小化 Ah 不是真正几何映射的目标函数。需要使用非线性优化(可能基于重投影误差)来校正初始解。稍后有时间我会更新我的解决方案。 首先,为什么要自己计算呢?那里有许多复杂的解决方案(参见上面的链接)。我不确定我是否正确,但这可以使用线性系统解决。例如看here。 我明白了。我只是好奇这实际上是如何完成的。您提供的链接是在课堂上教授的常见实现,但这不起作用。通过强制执行 |x| = 1 而最小化 dot(Ax, Ax) 不是最小化重投影误差的目标函数。您可以比较 OpenCV 中 findHomography 生成的结果和使用 SVD 生成的结果。