给定平面 A 上的一个点,我希望能够映射到它在平面 B 上的对应点。我在两个平面之间有一组 N 对应的参考点对,但是,整体映射不是简单的仿射变换(对我来说没有单应性)。
我尝试过的事情:
对于给定的点,在平面 A 中找到三个最近的参考点,计算该三角形的重心坐标,然后将该变换应用于平面 B 中的相应参考点。它是如何失败的:有时三个最近的点几乎共线,所以错误很大。此外,跨越边界时的映射也没有一致性。这是非常“紧张”的。
给定 N 个参考点 (N^3),计算所有可能的三角形。按尺寸订购。对于给定的点,找到它所在的最小三角形。这解决了点的线性问题,但仍然非常紧张和缓慢。
从三角平面 A 开始。遍历参考点,将每个参考点添加到参考平面。每次添加一个点时,它至少存在一个三角形中。使用新的参考点作为顶点将该三角形分成三个三角形。您最终将平面 A 进行了三角剖分,因此您可以轻松地从平面 A 映射到平面 B。问题:您可以证明每个三角形都有一个位于平面边缘的点。如果您的参考点远离平面边缘,这会导致巨大的错误。
我觉得这应该是一个相当标准的问题。是否有为此的标准算法/库?