OpenCV - `reprojectImageTo3D()`中的度量表示

时间:2017-01-30 13:55:44

标签: opencv image-processing camera-calibration stereoscopy

在我的左相机,右相机和立体声校准;我已经指出了正方形的大小

0.025 (25 millimeters)

所以我使用reprojectImageTo3D(disp, Q)

获取3D点数
disp = stereo.compute(dstL, dstR).astype(np.float32) / 16.0
disp = abs(disp-min_disp)/num_disp

我从stereoRectify

获得了Q.

我拍了一张离立体相机2.5到3英尺的盒子的照片,并检索了位于它上面的点的xyz坐标。其Z值为140.8764

我该如何解释?

我的Q看起来像这样

|1, 0, 0, -454.05216408|
|0, 1, 0, -231.55072975|
|0, 0, 0, 816.20826814 |
|0, 0, 13.79730561, -0 |

1 个答案:

答案 0 :(得分:1)

在所有相应的校准功能(在这种情况下为米)中一致地使用了单位,那么cv::reprojectImageTo3D的输出应该具有相似的单位(这里也是米)。

Q中,(3,2)处的值是相机基线值的倒数(此处为0.0725 m,这是有意义的)。 (0,3)和(1,3)处的值是主要点的xy坐标(大致是图像的中间;再次有意义)和(2,3)是相对焦距(相对于图像宽度) )。

不要缩放差异。请注意这一行:

#disp = abs(disp-min_disp)/num_disp