估计单目相机的运动

时间:2012-07-25 23:00:56

标签: opencv camera rotation translation motion

我读了几个讲座和主题,几周以来我一直在研究它,但我找不到描述相机运动的方法。我不想重建3D世界。我正在使用OpenCV。

我有一个单眼相机和一个未知的单词。我有内在和失真参数。我有功能和对应。所以我正在寻找两个帧之间的旋转和平移。我想将我的第一张图像视为XYZ轴的原点。

我使用Fundamental矩阵和Essential矩阵来找到extrinsics参数(R,T),但我不相信。我有这些结果:

ř [0.040437 ...,0.116076 ..., - 0.992416 ......,  0.076999 ..., - 0.99063 ..., - 0.112731 ......,  -0.996211 .., - 0.071848 .., - 0.048994 ...] Ť [0.6924183 ...; 0.081694 ......; -716885 ...]

如何检查它们是否良好?

我计算了欧几里德距离以查看3D中的距离,但我的错误值。

拜托,有人可以给我一些细节,还是指导我?我希望我能很好地解释自己。

此致

2 个答案:

答案 0 :(得分:1)

通过言语,你的意思是世界?这个问题也不是关于stackoverflow的主题,因为它处理的是理论,而不是代码。

https://stackoverflow.com/faq

回答你的问题。如果你和R和T然后你可以计算每个点的3D坐标。由此您可以将每个点重新投影到另一个摄像机上,并计算观察点和预测点之间的残差。如果错误在一个像素内,那么它可能是有效的。

答案 1 :(得分:1)

基本上这样你就会有每个连续帧的未知比例因子,所以你可以得到R和T的奇怪值。但你可以使用一些像已知运动的初始化来执行场景的第一次三角测量。接下来,您可以使用solvePnP来计算下一个[R | T]。

尝试阅读PTAMM,这是单眼SLAM最有趣的实现之一

http://www.robots.ox.ac.uk/~bob/research/research_ptamm.html