让我们说我有两台相机,坚持认为在任何特定时刻,两者都可以看到有限数量的特征。它们都从它们之间的某个基线b开始,以X(opencv惯例)取代。然后他们可以自由地在X,Y,Z中移动并围绕所有轴旋转,但是两者都有可见的特征。鉴于我知道b,我的最终目标是准确地实时计算两个摄像机的后续位置(虽然目前我还不需要实时性能)
我有两种方法:
方法1:
- 对第一对图像(image0_L,image0_R)进行三角测量,然后在3D集中选择一对点。计算这些点之间的距离并将其存储为d1。
- 相机移动一点之后,我们获得image1_L,image1_R。对image1_L和image0_R进行三角测量并再次跟踪该对点并计算新距离d2。除以d1 / d2应该告诉我们相机1相对于相机2移动了多少。
- 使用image1_R和image0_L重复以获取camera2的位置w.r.t.相机1。
醇>
这在计算上相当昂贵,而且感觉就像一个非常天真的实现。
方法2:
- 从image0_L和image0_R构建3D点云。
- 匹配image1_R和image0_R以查看image0_R中仍有多少要素可见。只采取与这些相关的点跟踪,仍然可见"原始3D点云的特征,使用这些对象点作为参考,并在image1_R和image1_L的图像点上运行PNP算法,以获得两个摄像头的位置。
醇>
这不像方法1那样计算密集,但它给了我非常不稳定和不可靠的结果。我对CV的理论方面并不是很了解,所以我觉得我没有找到更优雅的解决方案。任何建议或意见都会非常有用,谢谢!