【问题标题】:Merging depth maps for trinocular stereo合并三目立体的深度图
【发布时间】:2017-02-05 07:38:08
【问题描述】:

我有一个平行三目设置,其中所有 3 个摄像头都以共线方式对齐,如下图所示。

左摄像头------------中摄像头----------------------------- ----右摄像头

左右摄像头之间的基线(摄像头之间的距离)最短,左右摄像头之间的基线最长。

理论上,我可以使用不同的相机组合(L-R、L-C 和 C-R)获得 3 组视差图像。我可以使用三角测量为每个视差图生成深度图(3D 点)。我现在有 3 个深度图。

L-C 组合对于靠近的物体(因为基线较短)具有更高的深度精度(测量距离更准确),而 L-R 组合对于远处的物体具有更高的深度精度(因为基线很长)。同样,C-R 组合对于中等距离的物体也是准确的。

在立体设置中,通常我们将左 (RGB) 图像定义为参考图像。在我的项目中,通过对深度值进行阈值处理,我在参考图像上获得了 ROI。例如,我找到深度值在 10-20m 之间的所有像素,并找到它们各自的像素位置。在这种情况下,我在 3D 点和它们对应的像素位置之间建立了关系。

由于在正常的立体设置中,我们可以根据基线(近和远)仅对两个区域之一具有更高的深度精度,我计划使用 3 个摄像头。这有助于我为三个区域(近、中和远)生成更高精度的 3D 点。

我现在想合并 3 个深度图以获得全局图。我的问题如下-

  1. 如何合并三个深度图?
  2. 合并后,如何知道哪个深度值对应于参考(左 RGB)图像中的哪个像素位置?

您的帮助将不胜感激:)

【问题讨论】:

    标签: opencv image-processing computer-vision stereo-3d perspectivecamera


    【解决方案1】:

    1) 如果您将全局 2D 深度图视为图像或深度值矩阵,我认为深度图(作为值矩阵)的简单“合并”是不可能的。您可以考虑将 3 组 3D 点与一些相似性标准(例如距离)合并(优化点云)。如果距离太近,删除其中一个主题(伪代码)

    for i in range(points):
     for j in range(i,points):
      if distance(i,j) < treshold
        delete(j)
    

    或删除 2 个点并添加一个具有平均坐标的点

    2)从第一点开始,这个问题变成了“如何将 3D 点连接到左图中的相关像素”(这是唯一的解释)。 答案很简单:使用投影方程。如果您有来自左侧相机校准的 K(固有矩阵)、R(旋转矩阵)和 t(平移向量),请将 R 和 t 加入 3x4 矩阵中

    [R|t]
    

    然后将4维坐标(X,Y,Z,1)中的M个3D点连接成一个m点(u,v,w)

    m = K*[R|t]*M
    

    将m除以它的第三个坐标w,得到

    m = (u', v', 1)
    

    u' 和 v' 是左图中的像素坐标。

    【讨论】:

    • 非常感谢@marcoresk。我认为对于合并 3D 点云,我可以使用最近邻或某种形式的距离测量。但是,我的相机是非静态的,我有内在矩阵 K 但我如何找到 R 和 T ?我没有预定义的世界坐标系。如果我听起来很幼稚,请原谅我,我还在学习中
    • @Beginner_In_Image_Processing 不客气,我也在学习中。我认为“我有一个平行的三目设置,其中所有 3 个摄像头”的意思是“3 个摄像头的相互位置/方向相对于左侧摄像头是固定的”。我还假设一组视差是一个“静态”对象,一个“冻结”时间的单帧。因此,您可以通过执行诸如this 之类的立体校准程序来检索 R 和 te。您的世界坐标系设置为原点在左凸轮
    • @Beginner_In_Image_Processing 如果您必须在移动(在之前的评论中假设为刚性的)三目系统时合并在不同时刻拍摄的点,那么事情会变得更加困难。下次记得指定您的相机是否在移动。如果您对我的回答表示赞赏,请考虑接受。
    • 感谢大家的帮助,经过一番头脑风暴,我还记得在生成3D点时,左侧的相机被认为是WCS的原点。在您的帮助下,这些是我希望实施的步骤。 1. 摄像头安装在汽车上,所以3个摄像头同时移动。 2. 由于 LC 和 LR 组合的 3D 点的原点是左相机,我可以简单地基于距离测量将它们合并,而无需对 3D 点应用任何旋转和平移。
    • 然而对于 CR 组合,3D 点的原点是中心相机。我必须将 3D 点从中心摄像头旋转并平移到左侧摄像头。我可以在立体相机校准期间恢复 L&C 相机之间的关系。现在所有 3D 点都以左侧相机为原点。我现在希望使用投影矩阵 P 获得这些 3D 点的像素位置,其中 P = K[R|t]。由于 WCS 的原点与左相机的原点重合,因此 R 将是单位矩阵,平移向量将为 0。
    猜你喜欢
    • 2011-08-07
    • 2012-04-23
    • 2015-02-27
    • 2014-09-06
    • 2015-05-05
    • 2021-07-21
    • 1970-01-01
    • 1970-01-01
    • 2021-04-27
    相关资源
    最近更新 更多