我正在尝试使用4个角点= 4个共面点的平面标记来进行姿势估计(实际上[编辑: 3DOF ]旋转是我所需要的)。
直到今天,我还是从我读到的所有内容中得到的印象是,你将始终使用各种可用方法计算单应性(例如使用DLT)并分解该矩阵(Faugeras,Zhang,分析方法也在{{3}中描述)如有必要,使用非线性优化对其进行细化。
第一个小问题:如果这是一种分析方法(只需从矩阵中取两列并从中创建一个正交矩阵,得到所需的旋转矩阵),那么有什么优化?我在Matlab中尝试了它,结果很糟糕,所以我可以清楚地看到结果不完美甚至不够,但我也不明白为什么人们会想要使用Faugeras和Zhang使用的相当昂贵和复杂的SVD如果这个简单的方法已经产生了结果。
然后存在迭代姿势估计方法,如Lu等人的Ortohogonal迭代(OI)算法。或者Schweighofer和Pinz的鲁棒姿态估计算法,其中甚至没有提到“单应性”这个词。他们所需要的只是一个初始姿态估计,然后进行优化(由Schweighofer完成的Matlab中的参考实现使用OI算法,例如,它本身使用一些基于SVD的方法)。
我的问题是:到目前为止我读到的所有内容都是'4分?单应性,单应性,单应性。分解?嗯,棘手,一般不是唯一的,有几种方法。现在这个迭代的世界开放了,我无法将这两个世界联系起来,我不完全理解他们的关系。我甚至无法清楚地说明我的问题是什么,我希望有人能够理解我的位置。
我非常感谢一两个提示。
编辑:说:平面上的4个点并且它们的图像通过单应性相关联,即8个参数,这是正确的。找到标记姿势的参数可以通过使用Faugeras,Zhang或直接解决方案计算和分解单应矩阵来完成,每个都有它们的缺点。它也可以使用迭代方法完成,如OI或Schweighofer算法,它不会计算单应矩阵,而只是使用相应的点,并且需要初始估计(可以使用单应性分解的初始猜测)。
答案 0 :(得分:0)
我不会向您提供完整的答案,但看起来至少有一点需要澄清:
单应性是从P ^ 2(齐次3矢量)到其自身的可逆映射,其总是可以由可逆3×3矩阵表示。话虽如此,请注意,如果您的3d点是共面的,您将始终能够使用单应性将世界点与图像点相关联。
通常,3空间中的点在齐次坐标中表示为4矢量。作用于P ^ 3的投影变换由非奇异的4x4矩阵表示(15个自由度,16个元素减去整体尺度的一个)。
所以,最重要的是,如果您的模型是平面的,您将能够使用单应性(8 DOF)和适当的算法,而在一般情况下,您将需要估计4x4矩阵并且需要不同的算法。
希望这有帮助,
亚历