【问题标题】:Getting depth map from disparity map从视差图中获取深度图
【发布时间】:2020-06-15 14:34:16
【问题描述】:

据我了解,我们可以使用以下公式来获得与深度图的真实距离。 pi 相机的像素焦距是 2571.4,而我的两个相机之间的距离是 0.065m。所以使用这个基于三角法的公式,

距离 =(焦距 * 2 个摄像头之间的距离)/视差图。

我还使用以下代码生成了一个视差图:

stereo = cv2.StereoBM_create(numDisparities=48, blockSize=25)
disparity = steeo.compute(rectified_pair[0], rectified_pair[1])
norm_image = cv2.normalize(disparity, None, alpha = 0, beta =1, norm_type=cv2.NORM_MINMAX, dtype=cv.CV_32F)

f = 2571.4 
b = 0.065
distance = (b*f)/disparity
cv2.imshow(norm_image)

我意识到我的“差异”图像范围从 -16 开始。 我得到了两组代码的负值,我不确定这是否是计算距离的正确方法。另外,我已经校准了我的相机。 谢谢!

【问题讨论】:

    标签: opencv image-processing raspberry-pi3 stereo-3d disparity-mapping


    【解决方案1】:

    首先,您应该从校准文件中读取焦距和基线的值,而不是对其进行硬编码。如果处理得当,我用来计算深度的方法是逐个像素地进行。所以我会像这样逐个像素地应用相同的公式:

    depthmap.at(i,j) = (b*f) / disparitymap.at(i,j)。

    你可以试试这个。大多数情况下,StereoBM 计算返回的视差图中会有任何负值。所以可能只有在这个过程之后才会出现问题。

    【讨论】:

      猜你喜欢
      • 2014-05-27
      • 2016-08-21
      • 1970-01-01
      • 1970-01-01
      • 2016-05-01
      • 2020-01-14
      • 2022-11-21
      • 2013-10-13
      • 2015-07-16
      相关资源
      最近更新 更多