3

我有一个校准过的相机(已知的内在参数,即已知相机矩阵K,以及失真系数)。

我想重建相机的 3d 轨迹。没有关于场景的先验知识。

通过呈现两个在同一场景上看起来的图像并从中提取两组对应的匹配特征点(SIFT、SURF、ORB 等)来简化问题。我的问题是如何计算相机外部参数(即旋转矩阵R 和平移向量 t ) 到视点之间?

我已经设法计算了基本矩阵,并且由于 K 是已知的,所以基本矩阵也是如此。使用David Nister 对五点相对姿势问题的有效解决方案,我设法得到了 4 个可能的解决方案,但是:

  1. 对基本矩阵 E ~ U * diag (s,s,0) * V' 的约束并不总是适用 - 导致不正确的结果。[编辑]:取平均奇异值似乎可以纠正结果:) 下降

  2. 我怎么知道这四个中哪一个是正确的?

谢谢

4

2 回答 2

2

您对第 1 点的解决方案是正确的:diag( (s1 + s2)/2, (s1 + s2)/2, 0)。

至于告诉四种解决方案中的哪一种是正确的,只有一种会为所有点相对于相机框架提供正深度。那就是你想要的那个。

可以在此处找到用于检查哪种解决方案正确的代码:http: //cs.gmu.edu/%7Ekosecka/examples-code/essentialDiscrete.m来自http://cs.gmu.edu/%7Ekosecka/bookcode.html 他们使用 U 和 V 的行列式来确定具有正确方向的解。寻找评论“那么四种可能性是”。由于您只是在估计基本矩阵,因此它很容易受到噪声的影响,并且如果所有点都共面,则表现不佳。

此外,平移仅恢复到恒定比例因子内,因此您看到单位大小的归一化平移向量这一事实是完全正确的。原因是深度未知并且估计为 1。您必须找到某种方法来恢复深度,如八点算法 + 3d 重建的代码中(bookcode 链接中的算法 5.1)。

上面示例代码取自的书也是一本很好的参考书。http://vision.ucla.edu/MASKS/您感兴趣的第 5 章可在 Sample Chapters 链接上找到。

于 2012-07-06T16:38:21.527 回答
0

恭喜你的辛勤工作,听起来你已经努力学习这些技术了。对于实际的生产强度代码,我建议下载libmvceres,并使用它们重新编码您的解决方案。

您的两个问题实际上是一个:根据您收集的数据拒绝无效的解决方案。特别是,Nister(以及 Stewenius)算法通常用于类似 RANSAC 的求解器的内部循环中,该求解器选择具有最佳拟合/最大内点数的解决方案。

于 2012-07-03T03:44:37.670 回答