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

OpenCV - Metric representation in `reprojectImageTo3D()`

在我的左摄像头、右摄像头和立体校准上;我已经指出了正方形的大小

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 |

在所有相应的校准函数中使用一致的单位(在本例中为米),那么 cv::reprojectImageTo3D 的输出应该具有相似的单位(这里又是米)。

Q中,(3,2)处的值是相机基线值的倒数(这里0.0725 m是有道理的)。 (0,3) 和 (1,3) 处的值是主点的 xy-coordinates(大致在图像的中间;再次有意义)并且 (2,3) 是相对焦距(相对于图片宽度)。

不要扩大差距。所以评论这一行:

#disp = abs(disp-min_disp)/num_disp