如果初始基线已知,如何计算观察同一场景的两个移动摄像机的位置?

时间:2015-11-22 03:59:11

标签: opencv camera computer-vision

让我们说我有两台相机,坚持认为在任何特定时刻,两者都可以看到有限数量的特征。它们都从它们之间的某个基线b开始,以X(opencv惯例)取代。然后他们可以自由地在X,Y,Z中移动并围绕所有轴旋转,但是两者都有可见的特征。鉴于我知道b,我的最终目标是准确地实时计算两个摄像机的后续位置(虽然目前我还不需要实时性能)

我有两种方法:

方法1:

  1. 对第一对图像(image0_L,image0_R)进行三角测量,然后在3D集中选择一对点。计算这些点之间的距离并将其存储为d1。
  2. 相机移动一点之后,我们获得image1_L,image1_R。对image1_L和image0_R进行三角测量并再次跟踪该对点并计算新距离d2。除以d1 / d2应该告诉我们相机1相对于相机2移动了多少。
  3. 使用image1_R和image0_L重复以获取camera2的位置w.r.t.相机1。
  4. 这在计算上相当昂贵,而且感觉就像一个非常天真的实现。

    方法2:

    1. 从image0_L和image0_R构建3D点云。
    2. 匹配image1_R和image0_R以查看image0_R中仍有多少要素可见。只采取与这些相关的点跟踪,仍然可见"原始3D点云的特征,使用这些对象点作为参考,并在image1_R和image1_L的图像点上运行PNP算法,以获得两个摄像头的位置。
    3. 这不像方法1那样计算密集,但它给了我非常不稳定和不可靠的结果。我对CV的理论方面并不是很了解,所以我觉得我没有找到更优雅的解决方案。任何建议或意见都会非常有用,谢谢!

0 个答案:

没有答案