ReprojectImageTo3D 对应图像中的像素(立体视觉)

ReprojectImageTo3D corresponding pixel in image (Stereo Vision)

我有视差图

基于视差图,悬停在'left image'显示:

Xy 的图像,所以如果我悬停在最左上角,它会显示 x:0, y:0

下一步是显示特定像素的距离,为了让我的生活更轻松,我会尝试用 reprojectImageTo3D(disp, Q)

我从 stereoRectify

得到了 Q

现在,reprojectImageTo3D 在 python,returns 一个 n by 3 矩阵。

所以我可以看到,它是一排x y z坐标。想知道,我怎么知道这些坐标对应于哪个像素?

这是我使用 numpy.savetxt

保存的 3D 点示例

http://pastebin.com/wwDCYwjA

顺便说一句:我在 python 中什么都做,但在 Java 中做 GUI,我没有时间在 python 中学习 GUI。

如果你正确计算视差图,你应该得到 (n1,n2,1) 维数组,其中 n1,n2 - 图像的轴像素数,1 - 通道数(单通道,包含距离左图和右图对应像素之间的像素)。您应该通过键入 disp.shape 来检查。之后,您应该将视差图的 ndarray 传递给 reprojectImageTo3D 函数并获得具有 (n1,n2,3) 形状的 ndarray(第三维包含 3D 点的 X、Y、Z 坐标)。您可以通过键入以下内容进行检查:

threeDImage = reprojectImageTo3D(disp, Q)
print threeDImage.shape

最后,由于您根据左图制作了视差图,因此在左图(或视差图)上具有坐标 x,y 的每个像素对应于 threeDImage[x][y] 3D 点。请记住,row:0、column:0 是矩阵的 top-left 元素,基于 opencv 处理图像:

0/0---column--->
 |
 |
row
 |
 |
 v