3

我正在尝试从具有 4 个角 = 4 个共面点的平面标记进行姿势估计(实际上 [Edit: 3DOF ] 旋转是我所需要的)。
直到今天,我读到的所有内容都给我留下了深刻的印象,即您将始终计算单应性(例如使用 DLT)并使用各种可用的方法分解该矩阵(Faugeras,Zhang,该分析方法也在这篇文章中描述stackexchange ) 并在必要时使用非线性优化对其进行优化。

第一个小问题:如果这是一种分析方法(简单地从矩阵中取出两列并从中创建一个正交矩阵,从而得到所需的旋转矩阵),有什么可以优化的?我在 Matlab 中尝试过,结果抖动得很厉害,所以我可以清楚地看到结果并不完美甚至不够,但我也不明白为什么要使用 Faugeras 和 Zhang 使用的相当昂贵和复杂的 SVD如果这个简单的方法已经产生了结果。

然后是迭代姿态估计方法,如 Lu 等人的正交迭代 (OI) 算法。或者 Schweighofer 和 Pinz 的鲁棒姿态估计算法,其中甚至没有提到“单应性”这个词。他们所需要的只是一个初始姿态估计,然后对其进行优化(例如,Schweighofer 在 Matlab 中的参考实现使用了 OI 算法,该算法本身使用了一些基于 SVD 的方法)。

我的问题是:到目前为止我读到的所有内容都是'4 分?单应性,单应性,单应性。分解?好吧,棘手的,一般不是唯一的,几种方法。现在这个迭代的世界打开了,我只是无法在脑海中连接这两个世界,我不完全理解它们的关系。我什至无法正确地表达我的问题是什么,我只是希望有人能理解我在哪里。

我会非常感谢一两个提示。

编辑:是否正确地说:平面上的 4 个点及其图像通过单应性相关,即 8 个参数。可以通过使用 Faugeras、Zhang 或直接解决方案计算和分解单应矩阵来找到标记姿势的参数,每种方法都有其缺点。它也可以使用像 OI 或 Schweighofer 算法这样的迭代方法来完成,这些方法在任何时候都不会计算单应矩阵,而只是使用相应的点并且需要初始估计(可以使用来自单应性分解的初始猜测)。

4

2 回答 2

2

只有四个点,您的解决方案通常对其位置的小误差非常敏感,特别是当矩形几乎与光轴正交时(这是因为消失点是不可观察的 - 它们在图像之外并且远离测量 - 并且姿势由从四边形中心到消失点的向量的叉积给出)。

您的图案是否可以以亚像素精度自信地定位角落?我建议对角使用“棋盘式”模式,这允许使用良好且简单的迭代细化算法来实现亚像素精度(查找“迭代鞍点算法”,或查找 OpenCV 中的文档)。

于 2013-02-10T17:13:51.123 回答
0

我不会为您提供完整的答案,但看起来至少需要澄清的一点是:

单应性是从 P^2(齐次 3 向量)到自身的可逆映射,它总是可以用可逆的 3x3 矩阵表示。话虽如此,请注意,如果您的 3d 点是共面的,您将始终能够使用单应性将世界点与图像点相关联。

通常,3 空间中的点在齐次坐标中表示为 4 向量。作用在 P^3 上的投影变换由非奇异 4x4 矩阵表示(15 个自由度,16 个元素减去 1 个整体尺度)。

因此,底线是,如果您的模型是平面的,您将能够摆脱单应性(8 DOF)和适当的算法,而在一般情况下,您需要估计 4x4 矩阵并且需要不同的算法那。

希望这可以帮助,

亚历克斯

于 2013-06-11T11:18:48.507 回答