合并三目立体声的深度图

时间:2016-09-27 15:26:51

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

我有一个平行的三目镜设置,所有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)图像中的哪个像素位置?
  3. 非常感谢您的帮助。)

1 个答案:

答案 0 :(得分:0)

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点连接到左图像中的相关像素&#34; (这是唯一的解释)。 答案很简单:使用投影方程。如果你有来自左相机校准的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&#39;和v&#39;是左图像中的像素坐标。