【问题标题】:distance measurement using disparity map使用视差图进行距离测量
【发布时间】:2014-05-10 12:48:24
【问题描述】:

我正在使用 OpenCP 和 Python 进行 3D 重建和距离测量。我为左相机生成视差图,然后我使用这个公式来获得距离:

D=(f*b/disp)

其中f是焦距,b是两个摄像头之间的距离,disp是视差图的矩阵。

我的问题是:

我得到的数字,它们应该是图片中每个点的距离吗?

用这种方法我能得到的最大距离是多少(例如在我的项目中我得到的最大距离是 110)?

img_L = cv2.pyrDown( cv2.imread(Li) )
img_R = cv2.pyrDown( cv2.imread(Ri) )
'''h, w = img_L.shape[:2]
diff=(6,6,6)
mask=np.zeros((h+2,w+2),np.uint8)
window_size = 3
min_disp = 16
num_disp = 112-min_disp
stereo = cv2.StereoSGBM(minDisparity = min_disp,
    numDisparities = num_disp,
    SADWindowSize = window_size,
    uniquenessRatio = 10,
    speckleWindowSize = 100,
    speckleRange = 32,
    disp12MaxDiff = 1,
    P1 = 8*3*window_size**2,
    P2 = 32*3*window_size**2,
    fullDP = False
)
print "computing disparity..."
disp = stereo.compute(img_L, img_R).astype(np.float32) / 16.0

print "generating 3d point cloud..."
h, w = img_L.shape[:2]
f = 0.8*w                          # guess for focal length
points = cv2.reprojectImageTo3D(disp, Mat)
colors = cv2.cvtColor(img_L, cv2.COLOR_BGR2RGB)
mask = disp > disp.min()
cv2.imshow('left', img_L)
disparity=(disp-min_disp)/num_disp
cv2.imshow('disparity',disparity )
b=6.50
D=b*f/disp
cv2.waitKey()
cv.DestroyAllWindows()
return D

【问题讨论】:

    标签: python opencv


    【解决方案1】:

    您使用此公式获得的值D 是您提供差异的每个点的深度

    深度距离是两个稍微不同的东西。如果您使用相机的标准坐标系(即 Z 轴沿光轴,X 和 Y 轴沿图像 X 和 Y 轴的方向),则 3D 点 M = (X, Y, Z)sqrt(X²+Y²+Z²) 的距离为光学中心和深度为Z。公式中的D 是深度,不是距离。

    如果要从深度值中检索3D点M = (X, Y, Z),需要知道相机矩阵KM = D * inv(K) * [u; v; 1],其中(u, v)是该点的图像坐标。

    编辑:关于您的第二个问题,您可以使用此方法获得的最大深度与最小视差相关(不是最大值,因为disp 在分母上)。而且由于视差估计是量化的(逐个像素完成),因此您无法将深度估计到无穷大。

    【讨论】:

    • @AldurDisciple 怎么来的?!!!原因根据此页面disparity.wikidot.com D 是距离,如果如您所说,我应该使用哪个相机矩阵(因为我使用两个相机进行立体视觉),我怎样才能获得该点的图像坐标?
    • @user3433195 他们称之为“距离”,但实际上是深度。另外,你为什么不使用reprojectImageTo3D (link)?
    • @AlderDisciple 我确实用过,我在上面添加了代码
    • 我也在尝试计算与深度图的实际距离。想检查如何获得垫子。为什么你将焦距乘以宽度?以及如何得到相机矩阵K:M = D * inv(K) * [u;五; 1]如上所述计算实际距离
    猜你喜欢
    • 1970-01-01
    • 2018-09-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-06-10
    • 2017-04-15
    • 2020-03-05
    相关资源
    最近更新 更多